Я работаю над небольшим приложением с Java на Netbeans, и мне нужно экспортировать данные файла Excel в массив, а затем работать с этим массивом. Чтобы получить Excel, я использую Apache POI, и я могу показать значение файла Excel в консоли.
Однако мне нужно поместить его в массив, и на данный момент я не знаю, как работать с итератором, потому что я получаю данные Excel в итераторе.
Workbook workbook = WorkbookFactory.create(new File(pathConfig1));
//File
Iterator<Sheet> sheetIterator = workbook.sheetIterator();
Sheet sheet = workbook.getSheetAt(nbSheet1);
//Get index sheet user
Iterator<Row> rowIterator = sheet.rowIterator();
int nbLine= sheet.getLastRowNum() +1;
//Number of Lines
int nbCol = sheet.getRow(0).getLastCellNum();
// Number of columns
String [][]data= new String[nbLine][nbCol];
//Array for the data
С этого момента я действительно не знаю, как экспортировать данные в моем массиве ... Любая идея ?
Я думал использовать 2 цикла, но я не знаю, как увеличить свой итератор ...




Я не знаком с конкретной библиотекой, которую вы используете, но простой способ использовать итераторы - это для каждого цикла
Что-то вроде
for (Sheet sheet : workbook.sheetIterator()) {
for (Row row : sheet.rowIterator()) {
data[row][col] = //row.getCellValue()? Like I said, I don't know this library
}
}
Как я понял, вы хотите хранить значения каждой ячейки в каждой строке в массиве, верно? Если это так, да, вы правы, используя 2 цикла, и итератор в этом случае необязателен. Я переписал ваш код и надеюсь, что это поможет.
Workbook workbook = WorkbookFactory.create(new File(pathConfig1));
// Iterator<Sheet> sheetIterator = workbook.sheetIterator();
Sheet sheet = workbook.getSheetAt(0);
// Iterator<Row> rowIterator = sheet.rowIterator();
int nbLine = sheet.getLastRowNum() + 1;
int nbCol = sheet.getRow(0).getLastCellNum();
String[][] data = new String[nbLine][nbCol];
for (int i = 0; i < nbLine; i++) {
Row row = sheet.getRow(i);
for (int j = 0; j < nbCol; j++) {
Cell cell = row.getCell(j);
data[i][j] = cell.toString();
}
}
// Display
for (int i = 0; i < nbLine; i++) {
StringBuffer buff = new StringBuffer();
int j = 0;
for (; j < nbCol - 1; j++) {
buff.append(data[i][j]);
buff.append(",");
}
buff.append(data[i][j]);
System.out.println(buff.toString());
}
Я тоже думал об этом вначале, впервые использую эту библиотеку! Кстати, спасибо за попытку;)