Apache POI:如何管理getLastRowNum错误

时间:2018-02-14 18:05:51

标签: java apache-poi

我使用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),但它没有改变任何东西。

知道我能做什么吗?

2 个答案:

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