我使用Apache POI处理Excel文件。 大部分时间它工作正常,但有时,getLastRowNum()返回一个错误的数字,当我到达文件末尾时会导致空指针异常。
我想确保一切正常,即使getLastRowNum()出现问题也是如此。
for (int i = FIRST_ROW_TO_GET; i < sheet.getLastRowNum(); i++) {
row = sheet.getRow(i);
System.out.println(row.getCell(9));
}
我尝试使用if row.equals(null),但它没有改变任何东西。
知道我能做什么吗?
答案 0 :(得分:3)
您不能调用row.equals(null),因为在这种情况下row为null。你可以这样检查:
for (int i = FIRST_ROW_TO_GET; i < sheet.getLastRowNum(); i++) {
row = sheet.getRow(i);
if (row != null){
System.out.println(row.getCell(9));
}
}
答案 1 :(得分:0)
以下方法将在excel中给出准确的最后一行编号,而忽略空白单元格:
int getRowCount(String sheetName) {
int number = 0;
int index = workbook.getSheetIndex(sheetName);
if (index == -1) {
return 0;
} else {
sheet = workbook.getSheetAt(index);
for(int i = 0; i < sheet.getLastRowNum(); i++) {
if(sheet.getRow(i)==null) {
sheet.shiftRows(i+1, sheet.getLastRowNum(), -1);
i--;
}
number = sheet.getLastRowNum() ;
}
}
return number;
}