Я пытаюсь сравнить 2 листа Excel.Мой Excel может содержать любой тип данных, которые я пробовал этот код. Я использую POI для сравнения данных Excel.Но когда я запускаю приведенный выше код, он вызывает проблему с нулевым указателем и читает только несколько ячеек листа.Также какое-то время выдает ошибку, не может прочитать строку как числовое значение.
int numberOfSheets = workbook1.getNumberOfSheets();
for (int i = 0; i < numberOfSheets; i++)
{
int lastRowNum2 = workbook1.getSheetAt(i).getLastRowNum();
for (int j = 0; j < lastRowNum2; j++)
{
short lastCellNum = workbook1.getSheetAt(i).getRow(j).getLastCellNum();
for (int k = 0; k < lastCellNum; k++)
{
Iterator<Row> rowIterator1 = sheet1.iterator();
Iterator<Row> rowIterator2 = sheet2.iterator();
while (rowIterator1.hasNext()) {
Row row = rowIterator1.next();
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch (cell.getCellTypeEnum()) {
case BOOLEAN:
System.out.print(cell.getBooleanCellValue());
break;
case STRING:
System.out.print(cell.getRichStringCellValue().getString());
break;
case NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
System.out.print(cell.getDateCellValue());
} else {
System.out.print(cell.getNumericCellValue());
}
break;
case FORMULA:
System.out.print(cell.getCellFormula());
break;
case BLANK:
System.out.println("This is blank");
break;
default:
System.out.print("This is default");
}
System.out.print("\t");
}
System.out.println(workbook1.getSheetAt(i).getRow(j).getCell(k).getStringCellValue()
+ workbook2.getSheetAt(i).getRow(j).getCell(k).getStringCellValue());
try {
Assert.assertEquals(workbook1.getSheetAt(i).getRow(j).getCell(k),
workbook2.getSheetAt(i).getRow(j).getCell(k));
}