Apache POI - 迭代单列

时间:2014-09-04 19:48:28

标签: java excel groovy apache-poi

我还是POI的新手,但我想简单地在Excel工作簿中迭代一列。例如,在下表中,如果我只想要列A的值,即列0中的行0-3,是否有一种有效的方法可以做到这一点?我见过的所有POI都是基于行的。

____A__________B______
1| some   |   some   |
2| sample |   other  |
3| text   |   stuff  |
4| here   |   here   |
______________________

我有一些可能很大的电子表格,我成功地可以遍历整个表格,但我只想找出处理这类事情的最佳做法。

提前致谢。

2 个答案:

答案 0 :(得分:2)

不幸的是,apache POI中没有列概念,因为从Excel继承的对象模型因此你必须遍历行。

Here可能与示例重复。

答案 1 :(得分:0)

以下是如何做到的

for(Row r : datatypeSheet) 
            {
                Iterator<Cell> headerIterator = r.cellIterator();
                Cell header = null;
// table header row
                if(r.getRowNum() == 0)
                {
                    //  getting specific column's index

                    while(headerIterator.hasNext())
                    {
                        header = headerIterator.next();
                        if(header.getStringCellValue().equalsIgnoreCase("A"))
                        {
                            AIndex = header.getColumnIndex();
                        }
                        else if(header.getStringCellValue().equalsIgnoreCase("B"))
                        {
                            BIndex = header.getColumnIndex();
                        }
                    }
                }
                else
                {
                    Cell ACells = r.getCell(AIndex);
                    Cell BCells = r.getCell(BIndex);
                    if(ACells != null) 
                    {
                        if(ACells.getCellType() == Cell.CELL_TYPE_STRING) 
                        {
                            AData.add(ACells.getStringCellValue());  //arraylist storing A's data
                        }
                    }
                    if(BCells != null) 
                    {
                        if(BCells.getCellType() == Cell.CELL_TYPE_STRING) 
                        {
                            BData.add(BCells.getStringCellValue());  //arraylist storing B's data
                        }
                    }
                }
            }