Apache POI&SXSSF:行数始终为0

我使用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! 我尝试使用迭代器创build自己的方法,但是这给了我相同的结果。

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

它正在为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不适合阅读,虽然由于某些原因他们有适当的方法。