gpt4 book ai didi

java - 如何使用POI检查excel中的重复记录?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:42:44 25 4
gpt4 key购买 nike

下面是使用poi读取excel文件的代码:工作正常

public class ReadExcelDemo { 
public static void main(String[] args) {
try {
FileInputStream file = new FileInputStream(new File("demo.xlsx"));
List sheetData = new ArrayList();

XSSFWorkbook workbook = new XSSFWorkbook(file);

XSSFSheet sheet = workbook.getSheetAt(0);
ArrayList<Form> vipList = new ArrayList<Form>();
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();

Iterator<Cell> cellIterator = row.cellIterator();
List data = new ArrayList();

while (cellIterator.hasNext()) {

Cell cell = cellIterator.next();

switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC: System.out.print(cell.getNumericCellValue() + "\t");
break;
case Cell.CELL_TYPE_STRING: System.out.print(cell.getStringCellValue() + "\t");
break;
}
}

}


}

现在,如果 excel 包含重复记录,我应该能够打印一条简单的错误消息。我该怎么做?

例子:

ID    Firstname     Lastname     Address
1 Ron wills Paris
1 Ron wills London

现在我只想检查 3 列的重复项:ID、名字和姓氏。如果这些列一起包含与上例所示相同的数据,则需要将其视为重复。

我有一个 pojo 类 Form,由带有 getter 的 id、名字和姓氏组成

和二传手。使用 setter 方法将读取的每个记录写入 pojo 类。然后我使用 getter 获取值并将它们添加到 arraylist 对象。现在列表对象包含所有记录。我如何比较它们?

最佳答案

将数据放入集合中并在每个新条目之前检查包含。如果您使用 HashSet,它会非常快。你可以假装一切都是字符串来进行比较。

        Set data = new HashSet();

while (cellIterator.hasNext()) {

Cell cell = cellIterator.next();
if(data.contains(cell.getStringCellValue())
trow new IllegalDataException()
data.add(cell.getStringCellValue();

switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC: System.out.print(cell.getNumericCellValue() + "\t");
break;
case Cell.CELL_TYPE_STRING: System.out.print(cell.getStringCellValue() + "\t");
break;
}
}

如果您需要实际比较整行,您可以创建一个包含所有字段的类,然后只需覆盖 equals 方法即可。然后将其放入一组并进行比较。

关于java - 如何使用POI检查excel中的重复记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31320795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com