当前位置: 首页 > 面试题库 >

读取Excel文件2010 Apache POI忽略空单元格

谷梁涵忍
2023-03-14
问题内容

我有一个问题,当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的问题。可能是什么原因?


问题答案:

迭代器仅遍历文件中定义的单元格。如果单元格从未在Excel中使用过,则它可能不会出现在文件中(Excel并不总是一致…),因此POI不会看到它

如果要确保击中每个单元格,则应改用索引查找,然后检查空单元格(指示该单元格在文件中不存在),或设置a
MissingCellPolicy来控制希望空单元格和空白单元格的位置处理过的



 类似资料:
  • 我有一个问题,当java应用程序读取Excel文件.xlsx扩展时,应用程序正常工作,但工作簿中有很多工作表,1、2个工作表正确读取,但当读取3个工作表时,没有读取所有单元格,当我打开并检查Excel文件时,单元格存在空值,但当apache poi读取它时,单元格只是忽略了空单元格。什么是事业?更新 上面读的是excel文件,而我检查的excel文件中有一行20个单元格,而它读的有的行只有14行。

  • 读取文件已支持 windows 系统,版本号大于等于 1.3.4.1; 扩展版本大于等于 1.2.7; PECL 安装时将会提示是否开启读取功能,请键入 yes; 测试数据准备 $config = ['path' => './tests']; $excel = new \Vtiful\Kernel\Excel($config); ​ // 写入测试数据 $filePath = $excel->f

  • 问题内容: 我有一些代码可以读取名称文件并创建列表: 每个名称用换行符分隔,如下所示: 我想忽略仅包含空格的任何行。我知道我可以通过以下方式来实现:创建一个循环并检查读取的每一行,然后将其添加到列表(如果不是空白的话)。 我只是想知道是否还有更Pythonic的方法? 问题答案: 我将堆栈生成器表达式: 现在,是所有非空白行。这将使您不必在线路上两次打电话。如果需要行列表,则可以执行以下操作: 您

  • 我正在使用Apache POI解析Excel。是否可以让Apache POI将空字符串视为null并忽略它们? 可能有excel表将数百万个单元格设置为文本,如下所示,导致所有单元格被Apache POI解释为空字符串。由于有数百万个空的字符串单元格,逐个单元格地检查会导致严重的性能问题: 无论如何,Apache POI是否可以忽略这些空字符串单元格,这样我们就不必逐个单元格地单独读取单元格来检查

  • 问题内容: 我正在尝试读取文件以生成DOM文档,但是该文件包含空格和换行符,并且我试图忽略它们,但是我不能: 我在Javadoc中看到,只有在启用了验证标志的情况下,setIgnoringElementContentWhitespace方法才起作用,但是我没有文档的DTD或XML Schema。 我能做什么? 更新资料 我不喜欢引入mySelf <!ELEMENT …声明的想法,并且我尝试了Tom

  • 问题内容: 我有一些代码可以从文件中读取行,我想识别行何时开始或fisrt字符(非空白)为’ ‘并忽略它,因此在while语句中添加如下内容 我有类似的东西: 如何完成代码? 问题答案: