下面列出了读取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("");
}
}
答案 0 :(得分:6)
XSSFSheet的文档说明了这一点:
rowIterator - 返回物理行的迭代器
iterator - rowIterator()的别名以允许foreach循环
所以基本上他们返回相同的值,但第二个被添加到支持Java的for-each loop。换句话说,不是获取迭代器并运行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");
}
}
...