1

我正在使用 apache poi 从 excel 文件中读取,但是当涉及到空单元格时,它会跳过单元格。为什么会这样?我已经设置了一个 if else 条件来捕捉它。这是我的代码:

while (cellIterator.hasNext()) {

    cell = (XSSFCell) cellIterator.next();
        if(cell.getCellType() == Cell.CELL_TYPE_NUMERIC)
        {
            if(DateUtil.isCellDateFormatted(cell))
            {
4

2 回答 2

4

CellIterator 不支持对空单元格进行迭代。它会自动跳过这些单元格。要更改此行为,您需要手动迭代特定行的单元格(使用基于 0 的索引)。

这里描述了一个相同的例子。

于 2013-08-12T05:41:05.980 回答
2

我遇到了一个很好的解决这个问题的方法。如果你想获取所有单元格,无论它们是否存在,那么迭代器不适合你。相反,您需要手动获取适当的单元格,可能缺少单元格策略

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 将捕获它。

于 2013-08-12T08:19:22.677 回答