Считать каждый столбец Excell в отдельные массивы/списки

у меня есть следующий excell файл:введите сюда описание изображения

Как мне считать каждую колонку в разные массивы, чтобы получилось arr1 = ["John", "Sarah" ...], arr2 = ["Brock","Lin" ...], с почтами и датами так же. До этого использовал следующий код, который проходил по каждому элементу, но так как к примеру имена и фамилии того же типа, я не могу их различить между собой и записал бы в один массив.

while (rowIterator.hasNext()) {
                        Row row = rowIterator.next();
                       Iterator<Cell> cellIterator = row.cellIterator();
                        while (cellIterator.hasNext()) {

                            Cell cell = cellIterator.next();

                            String cellValue = dataFormatter.formatCellValue(cell);
                            System.out.print(cellValue + "\t");

                                switch (cell.getCellType()) {
                                case Cell.CELL_TYPE_NUMERIC:
                                    columndata.add(cell.getNumericCellValue()+"");
                                    break;
                                case Cell.CELL_TYPE_STRING:
                                    columndata.add(cell.getStringCellValue());
                                    break;
                         
                            }
                        }

Ответы (1 шт):

Автор решения: Perfect Voyage

Зачем так делать ? Объект в экселе представляется строкой, на этом всё держится.Если вы читаете сверху вниз, а не слева направо, то у вас сам принцип хранения рушится.... Добавление в массив пропишите сами, я думаю.

    File file = new File(path);
    FileInputStream fis = new FileInputStream(file);

    Workbook wb = new XSSFWorkbook(fis);
    Sheet sheet = wb.getSheetAt(0);

    int maxRow = sheet.getLastRowNum();
    Row row = sheet.getRow(0);
    short xCell = row.getLastCellNum();
    // Здесь надо узнать насколько мы будем двигаться
    // вправо, поскольку итератор возвращает только ROW
    // Нам придётся узнать самим, сколько максимум ячеек может 
    // быть в строке

    for (int i = 0 ; i < xCell ; i++){
        for (int y = 0 ; y < maxRow ; y++){
            try {
                Cell cell = sheet.getRow(y).getCell(i);
                System.out.println(cell.toString());
            }
            catch (NullPointerException e){
                // to do if null
            }
        }
    }
→ Ссылка