尝试读取 return 一个带有 xlsx 的字符串数组 Java

Trying to read and return a string array with xlsx in Java

您好,我一直在尝试使用 xssf 读取数组,但每次我尝试 return 字符串数组时,我总是搞砸了。我知道我的代码很糟糕,而且我仍在学习如何让它工作,无论如何这是我的代码,请友好地向我解释。谢谢!

public static String[][] xlsxReader(){
    File fileIO = new File(FILE_NAME);
    XSSFWorkbook wb;
    String[][] data;
    try {
        wb = new XSSFWorkbook(fileIO);

        //Get the first sheet
        Sheet sheet = wb.getSheetAt(0);

        //Iterate on each rows from the active sheet
        Iterator<Row> rIterator = sheet.iterator();

        //Cannot get the last column for some reason
        data = new String[sheet.getLastRowNum()][sheet.getLastRowNum()*2];

        //While the there is a next iteration of the row, continue loop
        while(rIterator.hasNext()){
            //Assign the entire row to the row class
            Row row = rIterator.next();
            int r = 0;
            r++;

            //Assign the entire row cell into cIterator, to count the number of columns
            Iterator<Cell> cIterator = row.cellIterator();

            //While there is a next iteration column, continue the loop
            while(cIterator.hasNext()){
                //Assign the column iterator to the cell
                Cell cell = cIterator.next();
                int c = 0;
                c++;

                //assign the data string.
                data[r][c] = cell.getStringCellValue();
                //System.out.print(cell.getRowIndex()+ "\t");
                //System.out.print(data[r][c]+ "\t");
            }
            //System.out.print("\n");

        }
        wb.close();
        return data;

    } catch (InvalidFormatException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return null;
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return null;
    }

}

我认为问题实际上出在您的索引行中... r 和 c 可能应该在循环外初始化

int r = 0;
int c = 0;

while(rows){
   while(cols){
      .../ do work
      c++;
   }
   r++;
   c = 0;
}