Java 读取excel文件2010 apache poi忽略空单元格

Java 读取excel文件2010 apache poi忽略空单元格,java,jakarta-ee,excel-2007,apache-poi,excel-2010,Java,Jakarta Ee,Excel 2007,Apache Poi,Excel 2010,我遇到了一个问题,当java应用程序读取Excel文件.xlsx扩展名时,该应用程序工作正常,但工作簿中有许多工作表,1、2个工作表读取正确,但当读取3个工作表时,并没有读取所有单元格,当我从Excel文件打开并检查时,单元格中存在空值,但是当ApachePOI读取它时,该单元格只是忽略了空单元格。原因是什么? 更新 在读取excel文件的上方,虽然我检查了excel文件中的一行20个单元格,但它在某些行中仅读取14行。我正在使用ArrayList,这里似乎应该是并发访问ArrayList的问题

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


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

迭代器只对文件中定义的单元格进行迭代。如果单元格从未在Excel中使用过,它可能不会出现在文件中Excel不总是一致的…,因此POI不会看到它


如果要确保命中每个单元格,则应改为按索引进行查找,并检查指示文件中从未存在过该单元格的空单元格,或设置MissingCellPolicy以控制如何处理空单元格和空白单元格。迭代器仅迭代文件中定义的单元格。如果单元格从未在Excel中使用过,它可能不会出现在文件中Excel不总是一致的…,因此POI不会看到它


如果要确保命中每个单元格,则应改为按索引查找,并检查表示文件中从未存在该单元格的空单元格,或设置MissingCellPolicy以控制如何处理空单元格和空白单元格

如何读取文件?在单元格上迭代,还是按索引获取?代码将帮助迭代每个单元格,在使用switch Station选择每个单元格之后,所有工作表的文档结构都是相同的,但它适用于第一个工作表,但在第二个工作表中失败。因此,我检查了Excel文件,该行有20个单元格,包括空单元格,但在java应用程序中,它只显示14个单元格。原因可能是什么?你是如何读取文件的?在单元格上迭代,还是按索引获取?代码将帮助迭代每个单元格,在使用switch Station选择每个单元格之后,所有工作表的文档结构都是相同的,但它适用于第一个工作表,但在第二个工作表中失败。因此,我检查了Excel文件,该行有20个单元格,包括空单元格,但在java应用程序中,它只显示14个单元格。原因是什么?是的,你是对的,我改为迭代而不是迭代器,因为它忽略了一些单元格。所以它解决了问题。是的,你是对的,我改为迭代而不是迭代器,因为它忽略了一些单元格。这样就解决了问题。
 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);

        } }