0

我刚刚使用 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;

        }
    }
}
4

2 回答 2

3

文档

单元迭代器

公共 java.util.Iterator cellIterator()

指定者:接口 Row 中的 cellIterator

返回: 物理定义单元的单元迭代器。请注意,第 4 个元素可能不是单元格 4,因为迭代器不会返回未定义(空)的单元格。在返回的单元格上调用 getCellNum() 以了解它们是哪个单元格。由于这只适用于物理定义的单元格,因此 Row.MissingCellPolicy 无效。

简而言之,空单元格不会出现在迭代器中,因此您必须始终检查您得到了哪个单元格。

于 2010-03-18T12:33:51.527 回答
0

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

于 2010-03-18T12:32:23.000 回答