Java 获取POI中特定行中填充的单元格数的计数

Java 获取POI中特定行中填充的单元格数的计数,java,apache-poi,Java,Apache Poi,请告知是否有任何方法,比如说,如果我得到一个row对象作为s参数,即我知道该行中的行号,我希望跟踪为该特定行归档的单元格数 假设该行中的行号为67,则可能只有2个单元格被填充,或者可能有4个单元格被值填充。最后,我想要的是被填充单元格的计数,因为我必须基于该计数实现一些逻辑 下面是我获取row对象的方法,在这个方法中,我需要获取单元格的计数 public boolean isCountOfCellsFilledForARow(Row row1) { for (int c = r

请告知是否有任何方法,比如说,如果我得到一个row对象作为s参数,即我知道该行中的行号,我希望跟踪为该特定行归档的单元格数

假设该行中的行号为67,则可能只有2个单元格被填充,或者可能有4个单元格被值填充。最后,我想要的是被填充单元格的计数,因为我必须基于该计数实现一些逻辑

下面是我获取row对象的方法,在这个方法中,我需要获取单元格的计数

public  boolean isCountOfCellsFilledForARow(Row row1) {
        for (int c = row1.getFirstCellNum(); c < row1.getLastCellNum(); c++) 
{

}

}
public boolean isCountOfCellsFilledForARow(第1行){
对于(int c=row1.getFirstCellNum();c
据我所知,您希望找到该行的非空单元格。关于通过ApachePOI查找空单元格,已经存在一个问题。您可以使用提供的答案之一检查单元格是否为空。

据我所知,您希望查找该行的非空单元格。关于通过ApachePOI查找空单元格,已经存在一个问题。您可以使用提供的答案之一检查单元格是否为空。

您可以尝试此方法

public long countCells(Row r) {
  long count = 0;
  for(Cell c : r) {
    if (!c.toString().equals("")) {
      count++;
    }
  }
  return count;
}
你可以试试这个

public long countCells(Row r) {
  long count = 0;
  for(Cell c : r) {
    if (!c.toString().equals("")) {
      count++;
    }
  }
  return count;
}

这样我们可以计算不合适的单元格数量,因为poi已经为我们提供了方法,我指的是内置方法,问题是计算填充单元格的数量。这取决于空单元格的含义,但我添加了一些逻辑来检查空白单元格。数值单元格中的零值不是空的,但字符串单元格中的零长度字符串是空的。在公式单元格中,这将基于公式,而不是公式的计算值。我相信你可以修改它以满足你对空的定义。谢谢,但是当我在单元格上迭代时,你能不能连续建议,这些单元格可以是不同的数据类型,也就是说,它们可以是字符串单元格,数字单元格,在这种情况下,我将如何确定单元格是否为空我正在尝试的是,我有行,现在我在单元格上迭代,这些单元格可以是不同的数据类型,但这并不重要,因为我只需检查该单元格是否已填充或为空,如果该行中已填充单元格的总计数为2,则无需进一步执行一些逻辑
单元格。toString()
将单元格转换为字符串。它对每种细胞类型的处理略有不同。您可以使用
cell.getCellType()
检索单元格类型,并根据需要进行自己的检查。只有少量的单元格类型:
Cell\u TYPE\u BLANK、Cell\u TYPE\u BOOLEAN、Cell\u TYPE\u ERROR、Cell\u TYPE\u公式、Cell\u TYPE\u NUMERIC、Cell\u TYPE\u STRING
这样我们就可以计算不合适的单元格数量,因为poi已经为我们提供了实现这一点的方法,我指的是内置方法,问题是计算填充单元格的数量,这取决于你所说的空,但我添加了一些逻辑来检查空白。数值单元格中的零值不是空的,但字符串单元格中的零长度字符串是空的。在公式单元格中,这将基于公式,而不是公式的计算值。我相信你可以修改它以满足你对空的定义。谢谢,但是当我在单元格上迭代时,你能不能连续建议,这些单元格可以是不同的数据类型,也就是说,它们可以是字符串单元格,数字单元格,在这种情况下,我将如何确定单元格是否为空我正在尝试的是,我有行,现在我在单元格上迭代,这些单元格可以是不同的数据类型,但这并不重要,因为我只需检查该单元格是否已填充或为空,如果该行中已填充单元格的总计数为2,则无需进一步执行一些逻辑
单元格。toString()
将单元格转换为字符串。它对每种细胞类型的处理略有不同。您可以使用
cell.getCellType()
检索单元格类型,并根据需要进行自己的检查。只有少量单元格类型:
Cell\u TYPE\u BLANK、Cell\u TYPE\u BOOLEAN、Cell\u TYPE\u ERROR、Cell\u TYPE\u公式、Cell\u TYPE\u NUMERIC、Cell\u TYPE\u STRING