Apache POI& SXSSF:行数始终为0

时间:2016-04-29 15:25:32

标签: java excel apache apache-poi

我使用SXSSFWorkbook和SXSSFSheet对象。我能够成功写入excel文件:

FileOutputStream fos = new FileOutputStream(fileName);
wb.write(fos);
fos.close();
wb.dispose();

写入文件后,我再次加载/读取它以进行进一步更改。这是问题所在,当我尝试使用getLastRowNum()获取行数时,我总是得到0作为结果。这是一段代码:

    SXSSFWorkbook wb = null;

    try {
        wb = new SXSSFWorkbook(new XSSFWorkbook(new FileInputStream(fileName)));
    } catch (FileNotFoundException e) {e.printStackTrace();
    } catch (IOException e) {e.printStackTrace();}

    SXSSFSheet sheet = wb.getSheet(sheetName);
    System.out.println(sheet.getLastRowNum());

结果为0! 我尝试使用迭代器创建自己的方法,但这给了我相同的结果。

我没有任何错误消息,如果检查工作表的名称(sheet.getSheetName()),它会返回正确的名称但不是正确的行数,尽管excel文件有许多简单的行。 / p>

1 个答案:

答案 0 :(得分:2)

适用于XSSFWorkbook

XSSFWorkbook workbook = null;
try {
    workbook = new XSSFWorkbook(new FileInputStream(fileName));
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
XSSFSheet sheet = workbook.getSheet(sheetName);
System.out.println(sheet.getLastRowNum());

此代码段返回我需要的结果。我猜SXSSF对象(例如SXSSFWorkbook不适合阅读,尽管他们出于某种原因有适当的方法。