Apache poi HSSF返回不正确的物理行号

我正在处理用户给定的Excel文件(.xls)并使用Apache poi HSSF来读取工作表。 Excel实际上包含16行。

  • 第十三行是空的。
  • 第十四行有数据
  • 第十五行是空的
  • 第16行有数据

在这种情况下, worksheet.getPhysicalRows()返回13。
worksheet.getLastRowNum()返回16。

并注意,如果我删除第13行, getPhysicalRows()返回14。
如果我也删除了第16行, getPhysicalRows()仍然返回14。

有效数据的最后一行根本不被读取。

你有没有遇到这种行为与XLS?

编辑:我不知道这个代码可以帮助这个问题。

  excelDocumentStream = new FileInputStream(new File(xlFilePath)); POIFSFileSystem fsPOI = new POIFSFileSystem(new BufferedInputStream(excelDocumentStream)); workbook = new HSSFWorkbook(fsPOI); int numOfRows = workSheet.getPhysicalNumberOfRows(); int lastRow = workSheet.getLastRowNum();