Пустые ячейки возникают при извлечении данных Excel с использованием POI в JAVA? - PullRequest
0 голосов
/ 18 марта 2010

Я только что извлек ячейки из листа Excel с помощью Apache POI, все работает нормально. Но всякий раз, когда есть пустая ячейка, следующие данные правой ячейки я получаю в качестве вывода. Но, если существует значение в последнем, желаемый вывод поступает.

Это логика, которую я написал.

    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;

        }
    }
}

Ответы [ 2 ]

3 голосов
/ 18 марта 2010

Из документов :

cellIterator

публичный java.util.Iterator cellIterator ()

указано: cellIterator в интерфейсе Row

Возвращает: клеточный итератор физически определенные клетки. Обратите внимание, что 4-й элемент вполне может не быть ячейкой 4, так как итератор не вернется неопределенные (нулевые) ячейки. Вызов getCellNum () для возвращаемых ячеек знать, в какой ячейке они находятся. Как это только когда-либо работает на физически определенных ячейки, Row.MissingCellPolicy имеет без эффекта.

Короче говоря, пустые ячейки не отображаются в итераторе, поэтому вы всегда должны проверять, какая ячейка у вас есть.

0 голосов
/ 18 марта 2010

ArrayList разрешает добавлять нули. Также, что делает метод addBean (возможно, пропуская нули или пустые строки?) Можете ли вы опубликовать небольшой рабочий код, который можно запустить?

...