何时使用rowiterator和迭代器遍历Excel表格的行

阅读Excel电子表格(.xlsx)内容的代码包含在下面。 迭代通过每一行,我使用sheet对象的iterator()方法,这很好。 另外,如果我使用rowIterator()方法,它也适用。

这两个function和什么时候使用哪个function有什么区别?

 { 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"); } } ...