我正在使用POI的XSSF阅读Excel表格。 Excel工作表包含数千行用户信息,如用户名,地址,年龄,部门等。
我可以成功读取和写入Excel工作表,但我想找到空/空单元格的地址,并希望将其作为结果打印在另一张表中
示例结果我想要的是:
Empty cell : C5
Empty cell : E7
Empty cell : H8
感谢您的讨论和回复。
答案 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());
}
}
中找到更多相关信息
答案 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() ) );
}