使用XSSF在Excel工作表中的空单元格的结果地址

时间:2014-07-17 12:16:14

标签: java excel selenium-webdriver apache-poi xssf

我正在使用POI的XSSF阅读Excel表格。 Excel工作表包含数千行用户信息,如用户名,地址,年龄,部门等。

我可以成功读取和写入Excel工作表,但我想找到空/空单元格的地址,并希望将其作为结果打印在另一张表中

示例结果我想要的是:

Empty cell  : C5
Empty cell  : E7
Empty cell  : H8

感谢您的讨论和回复。

2 个答案:

答案 0 :(得分:2)

您需要检查Null和Blank单元格。空单元格是从未使用过的单元格,空格单元格是以某种方式使用或设置的格式,Excel决定将它们保存在文件中

控制此提取的最简单方法是使用MissingCellPolicy。您的代码可以是:

Row r = getRow(); // Logic here to get the row of interest

// Iterate over all cells in the row, up to at least the 10th column
int lastColumn = Math.max(r.getLastCellNum(), 10);

for (int cn = 0; cn < lastColumn; cn++) {
      Cell c = r.getCell(cn, Row.RETURN_BLANK_AS_NULL);
      if (c == null) {
         // The spreadsheet is empty in this cell
      } else {
         // Do something useful with the cell's contents
         // eg...
         System.out.println("There is data in cell " + (new CellReference(c)).formatAsString());
      }
}

您可以在POI docs on iterating over rows and cells

中找到更多相关信息

答案 1 :(得分:1)

据我理解你的问题,这应该可以解决问题:

XSSFCell cell = (XSSFCell) row.getCell( index );
if( cell == null )
{
  cell = (XSSFCell) row.createCell( index );
}
if( cell.getStringCellValue().trim().isEmpty() )
{
  String cellRef = CellReference.convertNumToColString( cell.getColumnIndex() );
  System.err.println( "Empty cell found: " + cellRef
          + Integer.toString( row.getRowNum() ) );
}