下面是使用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/