Итератор для массива Java

Я работаю над небольшим приложением с 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 цикла, но я не знаю, как увеличить свой итератор ...

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
805
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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
    }
}

Я тоже думал об этом вначале, впервые использую эту библиотеку! Кстати, спасибо за попытку;)

Toto D 10.10.2018 09:03
Ответ принят как подходящий

Как я понял, вы хотите хранить значения каждой ячейки в каждой строке в массиве, верно? Если это так, да, вы правы, используя 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());
}

Другие вопросы по теме