kar*_*sai 3 java excel iterator apache-poi
读取excel电子表格(.xlsx)内容的代码如下所示.要遍历每一行,我正在使用iterator()表单对象的方法,这很有效.此外,如果我使用rowIterator()方法,它也很好.
这两个函数之间的区别是什么,何时使用哪个.
{
FileInputStream fis = new FileInputStream(new File("E:\\readexcel.xlsx"));
XSSFWorkbook wb = new XSSFWorkbook(fis);
XSSFSheet sh = wb.getSheetAt(0);
Iterator<Row> rowIterator = sh.iterator(); // sh.rowIterator(); -- also works well
while(rowIterator.hasNext()){
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.iterator(); //row.cellIterator();-- also works well
while(cellIterator.hasNext()){
Cell cell = cellIterator.next();
System.out.print(cell.getStringCellValue()+"\t");
}
System.out.println("");
}
}
Run Code Online (Sandbox Code Playgroud)
XSSFSheet的文档说明了这一点:
rowIterator - 返回物理行的迭代器
iterator - rowIterator()的别名,允许foreach循环
所以基本上它们返回相同的值,但第二个被添加以支持Java的for-each循环.换句话说,不是获取迭代器和运行while循环,而是可以直接运行for-each循环,这使得代码更短,更易读:
FileInputStream fis = new FileInputStream(new File("E:\\readexcel.xlsx"));
XSSFWorkbook wb = new XSSFWorkbook(fis);
XSSFSheet sh = wb.getSheetAt(0);
for(Row row : sh) {
for(Cell cell : row) {
System.out.print(cell.getStringCellValue()+"\t");
}
}
...
Run Code Online (Sandbox Code Playgroud)