Hi I've been trying to read an array using xssf, but every time I attempted to return a string array I always messed up. I know my code is bad and all and I am still learning how to make it work, anyways here is my code and please be nice and explain it to me. Thanks!
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;
}
}
I think the issue is actually in your index line... r and c should probably be initalized outside the loop
int r = 0;
int c = 0;
while(rows){
while(cols){
.../ do work
c++;
}
r++;
c = 0;
}