iterator.next跳过索引

时间:2015-11-18 18:47:35

标签: java iterator apache-poi

我有一个迭代器,值如下:

index   value
0        A
1        B
2        null
3        null
4        E
5        F

这是我的代码:

Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
      cell = cellIterator.next();
      System.out.println(cell.getStringCellValue());
}

,输出

A
B
E
F

为什么在值为null时跳过索引? 虽然值为null,但我如何遍历所有索引? 我希望输出如下:

A
B
null
null
E
F

1 个答案:

答案 0 :(得分:4)

null值未显示,因为在Excel中,单元格2和3中不存在Cell。该行中总共只有4个单元格。

如果要覆盖整行,即使没有单元格,也必须从使用迭代器更改为传统的for循环。

for (int i = 0; i < row.getLastCellNum(); i++)
{
    cell = row.getCell(i);
    if (cell == null)
    {
        System.out.println("null");
    }
    else
    {
        System.out.println(cell.getStringCellValue());
    }
}

getLastCellNum method“获取此行中包含的最后一个单元格的索引 PLUS ONE 。”,因此for循环条件正确无误。

我使用MissingCellPolicy CREATE_NULL_AS_BLANK代码,这会将不存在的Cell变为空白Cell,从而产生"",因此我们必须测试该单元格是否为出现空检查。

  

为缺失的单元格创建一个新的空白单元格。空白单元格正常返回