您好我一直在尝试使用xssf读取数组,但每次尝试返回字符串数组时,我总是搞砸了。我知道我的代码很糟糕而且我还在学习如何使它工作,无论如何这里是我的代码,请你好好向我解释。谢谢!
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;
}
}
答案 0 :(得分:2)
我认为问题实际上在你的索引行中... r和c应该在循环之外被初始化
int r = 0;
int c = 0;
while(rows){
while(cols){
.../ do work
c++;
}
r++;
c = 0;
}