我正在使用apache poi从excel文件中读取,但是当涉及空单元格时,它会跳过单元格。为什么会这样?我已经设置了一个if else条件来捕获它。这是我的代码:
while (cellIterator.hasNext()) {
cell = (XSSFCell) cellIterator.next();
if(cell.getCellType() == Cell.CELL_TYPE_NUMERIC)
{
if(DateUtil.isCellDateFormatted(cell))
{
答案 0 :(得分:4)
CellIterator不支持迭代空单元格。它会自动跳过这些单元格。要更改此行为,您需要手动迭代特定行的单元格(使用基于0的索引)。
描述了here的一个例子。
答案 1 :(得分:1)
我遇到了这个问题的一个很好的解决方案。如果你想要获取所有单元格,无论它们是否存在,那么迭代器不适合你。相反,您需要手动获取相应的单元格,可能是缺少单元格策略
for(Row row : sheet) {
for(int cn=0; cn<row.getLastCellNum(); cn++) {
// If the cell is missing from the file, generate a blank one
// (Works by specifying a MissingCellPolicy)
Cell cell = row.getCell(cn, Row.CREATE_NULL_AS_BLANK);
// Print the cell for debugging`enter code here`
System.out.println("CELL: " + cn + " --> " + cell.toString());
}
}
有效。这会将所有缺失的行转换为空白,而CELL_TYPE_BLANK将捕获它。