我刚刚使用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;
}
}
}
答案 0 :(得分:3)
来自docs:
<强> cellIterator 强>
public java.util.Iterator cellIterator()
指定人: 接口行中的cellIterator
返回: 物理的细胞迭代器 定义的细胞。请注意第4个 元素可能不是单元格4,因为 迭代器不会返回 未定义的(null)单元格。呼叫 getCellNum()返回的单元格 知道他们是哪个细胞。仅此而已 曾经在身体上定义 细胞,Row.MissingCellPolicy有 没有效果。
简而言之,空单元格不会显示在迭代器中,所以你总是要检查你得到的单元格。
答案 1 :(得分:0)
ArrayList允许添加空值。还有什么是addBean方法呢(可能会跳过空值或空字符串?)你能发布一个可以运行的小工作代码吗?