如何做一个循环只有行和固定数量的列?

我有一个应用程序在Android从Excel中读取。 我想要replacewhile循环,并把for循环。 我只有3列,所以我认为这是另一种方式来做到这一点。 你可以告诉我如何做到这一点while循环使用for循环只使用行和3列?

private void readExcelFile() { try{ String inFileName = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/"+"ola.xlsx"; File file = new File(inFileName); Workbook workBook = WorkbookFactory.create(file); Sheet sheet = workBook.getSheetAt(0); Iterator<Row> rowIter = sheet.rowIterator(); //this is the loop I talked about while(rowIter.hasNext()){ Row myRow =rowIter.next(); Iterator<Cell> cellIter = myRow.cellIterator(); while(cellIter.hasNext()){ Cell myCell = cellIter.next(); Toast.makeText(getApplicationContext(), "cell Value: " + myCell.toString(), Toast.LENGTH_SHORT).show(); } } }catch (Exception e){e.printStackTrace(); } return; } 

那么它是更多的algorithm比android可以循环通过单元格,如果你有行和列的大小:

 int totalCount = rowSize * columnSize; Iterator<Cell> rowIter = sheet.rowIterator(); Iterator<Cell> cellIter; for(int i = 0 ; i < totalCount ; i++){ if(i % rowSize == 0){ //Move to the Next Row myRow = rowIter.next(); cellIter = myRow.cellIterator(); } Cell myCell = cellIter.next(); } 

虽然它可能有一个或两个错误,但我认为它会像你想要的那样工作。

 String FilePath = "E://airline.xls"; FileInputStream fs = new FileInputStream(FilePath); Workbook wb = Workbook.getWorkbook(fs); Sheet sh = wb.getSheet("Sheet2"); for(int row = 0; row < sh.getRows(); row++){ for(int column = 0; column < sh.getColumns(); column++){ System.out.print(sh.getCell(column, row).getContents() + " "); } } 

我已经使用JExcel库的工作簿类来完成这个工作。 请查看[博客]上的文档: http ://jexcelapi.sourceforge.net/resources/javadocs/2_6_10/docs/jxl/Workbook.html/“JExcel文档”。

这里要注意的是getCell如何接受行和列的参数。 如果我们传递这些参数,我们将得到exception。

 // ... alternate looping logic using for loops Sheet sheet = workBook.getSheetAt(0); for (int row = 0; row < sheet.getColumns(); row++) { for (int column = 0; column < sheet.getRows(); column++) { Cell cell = sheet.getCell(column, row); Toast.makeText(getApplicationContext(), "cellValue: " + cell.toString(), Toast.LENGTH_SHORT).show(); } } 

我查看了JExcel库,它有getRows&getColumns方法返回no。 行和列分别。 因此,我能够迭代使用循环,而不是使用迭代器。