首页 文章

Apache POI - 迭代单列

提问于
浏览
-2

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

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

我有一些可以很大的电子表格,我成功地可以遍历整个表格,但我只是想弄清楚处理这样的事情的最佳实践 .

提前致谢 .

2 回答

  • 2

    遗憾的是,由于从Excel继承的对象模型,因此在apache POI中没有列概念,因此您必须遍历行 .

    Here可能与示例重复 .

  • 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
                            }
                        }
                    }
                }
    

相关问题