在JAVA中使用POI提取excel数据时空单元格问题?

我刚刚使用Apache POI从Excel表中提取单元格,一切工作正常。 但是每当有一个空的单元格时,下一个正确的单元格数据就是我的输出结果。 但是,如果后者存在价值,则期望的产出即将到来。

这是我写的逻辑。

Iterator<Row> rowIterator=sheet.rowIterator(); while(rowIterator.hasNext()) { ExtractedRowsString extRows=new ExtractedRowsString(); ArrayList<HSSFCell> list=new ArrayList<HSSFCell>(); HSSFRow row=(HSSFRow) rowIterator.next(); Iterator<Cell> cellIterator=row.cellIterator(); while(cellIterator.hasNext()) { HSSFCell cell=(HSSFCell)cellIterator.next(); list.add(cell); } if(check) { addBean(list,extRows); print(extRows); } check=true; } 

可能是什么问题?

编辑:

 public static void addBean(ArrayList list,ExtractedRowsString extRows) { for(int i=0;i<list.size();i++) { switch(i) { case 0: extRows.setSchool_success_id((list.get(i)).toString()); break; case 1: extRows.setPem_id( (list.get(i)).toString() ); break; case 2: extRows.setDistrict_code((list.get(i)).toString()); break; case 3: extRows.setDistrict((list.get(i)).toString()); break; } } } 

从文档 :

cellIterator

public java.util.Iterator cellIterator()

指定者:接口Row中的cellIterator

返回:物理定义的单元格的单元格迭代器。 请注意,第四个元素可能不是单元格4,因为迭代器不会返回未定义的(空)单元格。 在返回的单元格上调用getCellNum()来知道它们是哪个单元。 由于这只能在物理定义的单元格上工作,因此Row.MissingCellPolicy不起作用。

简而言之,空单元格不会显示在迭代器中,因此您必须检查您获得的单元格。

ArrayList确实允许添加空值。 另外addBean方法在做什么(可能跳过空值或空string?)你可以发布一个可以运行的小代码吗?