2

我有一个问题,当 java 应用程序读取 Excel 文件 .xlsx 扩展名时,应用程序工作正常,但在工作簿中有很多工作表,1、2 工作表正确读取,但是当读取 3 工作表时,没有读取所有单元格当我从 Excel 文件打开并检查时,单元格存在空值,但是当 apache poi 读取它时,单元格只是忽略了空单元格。什么是原因? 更新

 FileInputStream file = new FileInputStream(file_location);
  //this.workbook = new HSSFWorkbook(file);
  this.workbook = new XSSFWorkbook(file);
XSSFSheet mySheet = workbook.getSheetAt(index);
       Iterator rowIter = mySheet.rowIterator();
        while(rowIter.hasNext()){
          XSSFRow myRow = (XSSFRow) rowIter.next();
          Iterator cellIter = myRow.cellIterator();
          ArrayList colStoreArray=new ArrayList();



          while(cellIter.hasNext()){
              XSSFCell myCell = (XSSFCell) cellIter.next();
              colStoreArray.add(myCell);
                                   }
          rowArrayHolder.add(colStoreArray);

        } }

在读取 excel 文件的上方,虽然我在一行中检查了 Excel 文件 20 个单元格,但在某些行中读取的只有 14 行。我正在使用 ArrayList,似乎这里应该是并发访问 ArrayList 的问题。可能是什么原因?

4

1 回答 1

4

迭代器仅对文件中定义的单元进行迭代。如果该单元格从未在 Excel 中使用过,它可能不会出现在文件中(Excel 并不总是一致的......),所以 POI 不会看到它

如果要确保点击每个单元格,则应改为按索引查找,并检查空单元格(表明该单元格从未在文件中存在),或设置 aMissingCellPolicy以控制您希望空单元格和空白单元格的方式处理过的

于 2012-10-24T14:21:02.273 回答