尝试读取 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;
}
您好,我一直在尝试使用 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;
}