为什么我的代码会跳过空白字段?

时间:2013-08-12 04:18:56

标签: spring excel apache-poi xssf poi-hssf

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

while (cellIterator.hasNext()) {

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

2 个答案:

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