gpt4 book ai didi

java - 错误 : How to read empty cell in Excel

转载 作者:搜寻专家 更新时间:2023-11-01 04:04:45 24 4
gpt4 key购买 nike

我正在尝试使用 POI 从 excel 中读取数据。我如何检查它是否为空单元格?

我不知道缺少什么我认为这应该有效:

java.util.Iterator<Row> rows = worksheet.rowIterator();

HSSFRow row = (HSSFRow) rows.next();
HSSFCell cellF1 = (HSSFCell) row.getCell(5);
if(cellF1.getCellType() == HSSFCell.CELL_TYPE_BLANK) {
String val = "";
}

我在 if 语句(空指针)中出错,但只有当我使用它时我才能检查:

   while (rows.hasNext()) {
HSSFRow row = (HSSFRow) rows.next();
java.util.Iterator<Cell> cells = row.cellIterator();
while (cells.hasNext()) {
HSSFCell cell = (HSSFCell) cells.next();
if(cell.getCellType() == HSSFCell.CELL_TYPE_BLANK) {
String emptytype = "";
System.out.println("empty");
}
}
}

最佳答案

这是 Row.getCell 的 1 参数版本的正常行为。如果您查看 API 文档,它明确指出如果未定义单元格,getCell 将返回 null。许多 Java 函数都表现出这种行为,因此考虑到这一点的编码没有任何问题。因此,您的代码的一个版本可能类似于:

boolean hasDataFlag = true;    
HSSFRow row = sheet.getRow(rowNumber);
hasDataFlag = (row != null);
HSSFCell cell = null;
if (hasDataFlag) cell = row.getCell(cellNumber);
hasDataFlag = (cell != null);
if (hasDataFlag) hasDataFlag = (cell.getCellType() != Cell.CELL_TYPE_BLANK);
if (hasDataFlag) {
// process the cell here
}

或者,您可以使用其他版本的 Row.getCell,它采用第二个参数来指定丢失的单元格策略。此版本将允许您指定 getCell 为空白单元格返回空单元格。所以,这里有一些替代代码:

HSSFRow row = sheet.getRow(rowNumber);
if (row != null) {
HSSFCell cell = row.getCell(cellNumber, Row.RETURN_BLANK_AS_NULL);
if (cell != null) {
// process cell here
}
}

或者,如果您愿意,您可以将策略指定为 Row.CREATE_NULL_AS_BLANK。在这种情况下,您可以将 if (cell != null) 替换为 if (cell.getCellType() != Cell.CELL_TYPE_BLANK)

关于java - 错误 : How to read empty cell in Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11155428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com