Java 如何仅对行和固定数量的列执行for循环?

Java 如何仅对行和固定数量的列执行for循环?,java,android,excel,apache-poi,Java,Android,Excel,Apache Poi,我有一个Android应用程序,可以从excel中读取数据。我想替换while循环并放置for循环。我只有3个专栏,所以我认为还有另一种方法可以做到这一点。您能告诉我如何在只使用行和3列的for循环中进行while循环吗 private void readExcelFile() { try{ String inFileName = Environment.getExternalStoragePublicDirectory(Environment.DI

我有一个Android应用程序,可以从excel中读取数据。我想替换while循环并放置for循环。我只有3个专栏,所以我认为还有另一种方法可以做到这一点。您能告诉我如何在只使用行和3列的for循环中进行while循环吗

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;
    }
private void readExcelFile(){
试一试{
字符串inFileName=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_下载)+“/”+“ola.xlsx”;
文件=新文件(inFileName);
工作簿=WorkbookFactory.create(文件);
工作表=工作簿。getSheetAt(0);
迭代器rowIter=sheet.rowitter();
//这就是我所说的循环
while(rowIter.hasNext()){
Row myRow=rowIter.next();
迭代器cellIter=myRow.cellIterator();
while(cellIter.hasNext()){
Cell myCell=cellIter.next();
Toast.makeText(getApplicationContext(),“单元格值:+myCell.toString(),Toast.LENGTH_SHORT).show();
}
}
}catch(异常e){e.printStackTrace();}
返回;
}
/。。。使用for循环的交替循环逻辑
工作表=工作簿。getSheetAt(0);
对于(int row=0;row

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

这是一种比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();
}
int totalCount=行大小*列大小;
迭代器rowIter=sheet.rowitter();
迭代器;
对于(int i=0;i
虽然它可能有一两个bug,但我认为它会像您希望的那样工作。

String FilePath=“E://airline.xls”;
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() + "   ");
    }
}
FileInputStream fs=新的FileInputStream(FilePath); 工作簿wb=Workbook.getWorkbook(fs); 表sh=wb.getSheet(“表2”); 对于(int row=0;row
我使用JExcel库的工作簿类完成了这项工作。请查看[博客]:“Jetcel文档”上的文档


这里要注意的是getCell如何接受行和列参数。如果我们以另一种方式传递这些参数,我们将得到异常。

可能的重复是的重复,并且在apache POI站点上也得到了回答,这并不能解决问题,因为我的Cell类没有getCell方法。我需要使用这种确切的形式。所以我需要一个不同的逻辑,使用这里存在的相同变量,这没有任何意义。你在用POI吗?上面提到的答案是POI中的Cell类是如何工作的。你所说的“我的Cell类”是什么意思。您是否编写了自己的Cell类而不是使用ApachePOI提供的Cell类?如果是这样的话,就把它包括在这里。虽然这个代码片段可以解决这个问题,但它确实有助于提高你文章的质量。请记住,您将在将来为读者回答这个问题,而这些人可能不知道您的代码建议的原因。请注意,这仅在没有空单元格或行的情况下才有效
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() + "   ");
    }
}