use*_*429 37 java apache apache-poi
我有一个巨大的excel文件,有大量的列,看起来像这样: -
Column1 Column2 Column3 Column4 Column5
abc def ghi
mno pqr
......
Run Code Online (Sandbox Code Playgroud)
这是我编写的用于打印这些值的代码:
try {
FileInputStream inputStr = new FileInputStream(fileName);
XSSFWorkbook xssfWork = new XSSFWorkbook(inputStr) ;
XSSFSheet sheet1 = xssfWork.getSheetAt(0);
Iterator rowItr = sheet1.rowIterator();
while ( rowItr.hasNext() ) {
XSSFRow row = (XSSFRow) rowItr.next();
System.out.println("ROW:-->");
Iterator cellItr = row.cellIterator();
while ( cellItr.hasNext() ) {
XSSFCell cell = (XSSFCell) cellItr.next();
System.out.println("CELL:-->"+cell.toString());
}
}
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
此代码生成的输出是: -
ROW:-->
CELL:-->Column1
CELL:-->Column2
CELL:-->Column3
CELL:-->Column4
CELL:-->Column5
ROW:-->
CELL:-->abc
CELL:-->def
CELL:-->ghi
ROW:-->
CELL:-->mno
CELL:-->pqr
Run Code Online (Sandbox Code Playgroud)
所以,如果我们查看上面的输出,我们可以注意到POI库没有拾取我留下空白值的单元格,有没有办法可以将这些值作为null.或者一种方法来识别所呈现的值跳过空白单元格?
谢谢.
Gag*_*arr 58
如果你想获得所有单元格,无论它们是否存在,那么迭代器不适合你.相反,您需要手动获取相应的单元格,可能需要丢失单元格策略
for(Row row : sheet) {
for(int cn=0; cn<row.getLastCellNum(); cn++) {
// If the cell is missing from the file, generate a blank one
// (Works by specifying a MissingCellPolicy)
Cell cell = row.getCell(cn, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
// Print the cell for debugging
System.out.println("CELL: " + cn + " --> " + cell.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
迭代单元格的Apache POI文档中有关于所有这些的更多细节
Sea*_*ers 11
我对同样的问题感到沮丧.这是我在poi-3.7-20101029和poi-3.8中找到的.
RowIterator和CellIterator不支持迭代NULL单元格或行 - 仅物理定义的单元格(可以是BLANK).
返回我期望的解决方案需要使用基于0的解决方案,Row.getCell([int], Row.CREATE_NULL_AS_BLANK)就像Chavira的答案所暗示的那样(假设8个单元行).或者您可以Cell.columnIndex在迭代时使用该值来检查跳数...
令人讨厌的是,在使用方法#1创建空白单元格之后,迭代器将返回现在创建的BLANK单元格.我认为CellIterator忽略了MissingCellPolicy的错误.
小智 1
for(org.apache.poi.ss.usermodel.Row tmp : hssfSheet){
for(int i = 0; i<8;i++){
System.out.println(tmp.getCell(i));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
85758 次 |
| 最近记录: |