下面包含用于读取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("");
}
}
XSSFSheet的文档说:
rowIterator-返回物理行的迭代器
迭代器-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");
}
}
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句