试图读取和返回一个字符串数组与Java中的xlsx

问题描述:

嗨我一直在尝试使用xssf读取数组,但每次我试图返回一个字符串数组时,我总是搞砸了。我知道我的代码很糟糕,而且我仍然在学习如何使其工作,无论如何,这里是我的代码,请好好给我解释一下。谢谢!试图读取和返回一个字符串数组与Java中的xlsx

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或许应该在循环外initalized

int r = 0; 
int c = 0; 

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

我意识到这不是问题,但幸运的是我解决它,谢谢帮助很多 – lifrah