如何使用POI检查Excel中的重复logging?

下面是使用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包含重复的logging,我应该能够打印一个简单的错误信息。 我怎么做?

例:

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

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

我有一个POJO类的forms组成的ID,名字和姓氏与获得者

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

将数据放入一个集合中,并在每个新条目之前检查包含的内容。 如果你使用HashSet,它会很快。 你可以假装一切都是Strings来比较。

  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; } } 

如果你需要实际比较整行,你可以用所有的字段创build一个类,然后重写equals方法。 然后扔在一个集合,并比较。

 public class ProcessAction extends DispatchAction { String dupValue = null; ArrayList<String> dupList = new ArrayList<String>(); private String validateDuplicateRecords(ProcessForm process) { String errorMessage = null; dupValue = process.getId.trim()+" "+process.getFirstname().trim()+" "+process.getLastanme().trim(); mLogger.debug("order id,ctn,item id: "+dupValue); if (dupList.contains(dupValue)){ mLogger.debug("value not added"); errorMessage = "Duplicate Record Exists"; } else { dupList.add(dupValue); } return errorMessage; } } 

不要忘记清除重复的数组列表。 我的情况下,执行某些任务后,像写ArrayList到一个文件,我正在清除使用复制arraylist:

 dupList.clear(); 

如果你不这样做,那么会发生什么是当你再次上传相同的数据,即使logging不重复,它会说重复,因为dupList arraylist包含以前上传的数据。