我还是POI的新手,但我想简单地在Excel工作簿中迭代一列。例如,在下表中,如果我只想要列A的值,即列0中的行0-3,是否有一种有效的方法可以做到这一点?我见过的所有POI都是基于行的。
____A__________B______ 1| some | some | 2| sample | other | 3| text | stuff | 4| here | here | ______________________
我有一些可能很大的电子表格,我成功地可以遍历整个表格,但我只想找出处理这类事情的最佳做法。
提前致谢。
答案 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
}
}
}
}