当前位置: 首页 > 知识库问答 >
问题:

Apache POI.使用row.getLastCellNum()检索非空白单元格数

谷梁子昂
2023-03-14

我试图在一行中获得非空白的单元格数。

| 1  | 2  | 3 |  |  |  |
| 55 | 33 |   |  |  |  |

(int)row.getLastCellNum();

但对于这两行,我得到的int值都大于表中实际有值的单元格数。这可能是什么原因?单元格格式和/或样式是否有责任?

我还注意到,如果我从excel工作表中删除值(手动,而不是从代码中),poi仍然将它们视为非空(null?),并将它们包含在总数中。

UPD:经过更多的研究,我发现如果我给一个单元格增加价值,然后删除它,那么POI仍然认为它是非空的。有没有办法在不删除整个行/列的情况下正确清除excel表中的单元格内容?

共有1个答案

伯俊弼
2023-03-14

现在我已经这样解决了:

Iterator<Cell> cells = row.cellIterator();
                while (cells.hasNext()) {
                    if (formatCellToString(cells.next()).equals("")) {
                        lastCellNumber = lastCellNumber - 1;
                    }
                }

如果有谁有更好的解决方案就好了。

 类似资料:
  • 我一直在用POI编写一个代码来将数据输入到Excel表中。首先,我需要遍历一组行,我不确定其中有多少行,可能是10或100行。但我发现末尾有一个空白单元格。在那个空白之后,又有一组行。我不担心第二盘。我需要找到第一盘是否已经结束。 这很让人困惑。现在我有5个用户在我的工作表如下所示。在第5个用户之后有一个空白单元格。我试图打印所有的用户,如果有一个空白停止它。

  • 我正在使用Poi.jar从excel表输入,想知道如何检查单元格是否为空。 现在我使用下面的代码。

  • 我有一个巨大的excel文件,其中包含大量列,如下所示:- 当我打印excel中的所有值时,我的代码生成的输出是:- 所以,如果我们看看上面的输出,我们可以注意到我留下空白值的单元格没有被POI库拾取。有没有一种方法可以让这些值为空?还是一种识别所呈现的值跳过空白单元格的方法? 请注意:我使用的不是usermodel(org.apache.poi.ss.usermodel),而是一个事件API来处

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

  • 我正在使用Apache POI读取零件编号电子表格中的数据。我在我们的数据库中查找零件编号,如果我们有零件的计算机辅助设计图纸,我将零件编号单元格涂成绿色,如果没有,我将其涂成红色。处理完成后,将保存电子表格。我遇到的问题是那列中的每个细胞都是绿色的。我已经完成了代码,查找零件号的逻辑工作正常,确定单元格应该是什么颜色以及设置颜色和填充的逻辑似乎也工作正常。知道我做错了什么吗? 谢谢

  • 我正在尝试使用Java中的Apache Poi将一些结果写入excel文件。我将结果存储在String变量中,然后在data.put调用中使用这些变量,前两个可以正常工作,但第三个导致空白单元格。当我打印到system.out.println()时,它显示良好? //创建空白工作簿XSSFWorkbook workbook=new XSSFWorkbook(); 子节点名称:#text 子节点文本