首页 > 解决方案 > 如何使用java将excel数据存储在结果集中

问题描述

我需要将 excel 数据(按行)与数据库表进行比较。

有人可以帮助我吗?

我可以使用以下代码按行和按列正确读取 excel 文件

public class POC {

public static void main(String[] args) {

    String colText = null;
    XSSFWorkbook workbook;
    Cell cell = null;
    try {
        HashSet<String> xlRead = new HashSet<String>();

        InputStream myxls = new FileInputStream(new File(
                "excelpath.xlsx"));

        workbook = new XSSFWorkbook(myxls);

        Sheet sheet = workbook.getSheetAt(0); // Get Your Sheet.
        java.util.Iterator<Row> rowterator = sheet.rowIterator();
        while (rowterator.hasNext()) {
            Row row = rowterator.next();
            java.util.Iterator<Cell> cellIterator = row.cellIterator();
            while (cellIterator.hasNext()) {
                cell = cellIterator.next();
                switch (cell.getCellType()) {
                case Cell.CELL_TYPE_STRING:
                    xlRead.add(cell.getStringCellValue() + "");
                    System.out.println(cell.getStringCellValue());

                default:
                    break;
                }
            }
        }
        System.out.println("");
        myxls.close();

        for (String s : xlRead)
            System.out.println(s);
    } catch (IOException e) {
        e.printStackTrace();
       }
   }
}

标签: javaexcelresultset

解决方案


建议您只需创建一个对象来存储数据库中的数据(为此使用 JPA),并使用compareTo(Object object). 然后,您可以使用同一个对象来存储您从 excel 获取的数据,并使用您创建的“compareTo”方法比较两个对象?

@Entity 
@Table(name="Age") 
public class MyAge() {

    public MyAge();

    @Id
    @Column(name="id")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    int id;

    @Column(name="age")
    private int age;

    ... getters and setters, though lombok is better ... 

    @Override
    public int compareTo(MyAge myAge) {
      return Integer.compare(age, myAge.age);
    }
}

推荐阅读