Считать каждый столбец 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
}
}
}