Как распределить значения из Excel в массив Java?

79
13 апреля 2021, 14:00

Есть массив и есть файл с таблицей Excel. При помощи библиотеки POI удаётся получить значения из таблицы, но как их задать в массив? Я знаю, что можно задать значения, "вручную" прописав для каждого элемента массива, но хочу сделать это автоматически, потому что предполагается, что количество значений в таблице будет меняться и каждый раз дописывать скрипт будет нецелесообразно.

public class Main {
    public static void main(String[] args) throws IOException {
        String[] wd = new String[5];
        // Read XSL file
        FileInputStream inputStream = new FileInputStream(new File("C:/My downloads/DutyList.xls"));
        // Get the workbook instance for XLS file
        HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
        // Get first sheet from the workbook
        HSSFSheet sheet = workbook.getSheetAt(0);
        // Get iterator to all the rows in current sheet
        Iterator<Row> rowIterator = sheet.iterator();
        while (rowIterator.hasNext()) {
            Row row = rowIterator.next();
            // Get iterator to all cells of current row
            Iterator<Cell> cellIterator = row.cellIterator();
            while (cellIterator.hasNext()) {
                Cell cell = cellIterator.next();
                // Change to getCellType() if using POI 4.x
                CellType cellType = cell.getCellTypeEnum();

                switch (cellType) {
                    case _NONE:
                        System.out.print("");
                        System.out.print("\t");
                        break;
                    case BOOLEAN:
                        System.out.print(cell.getBooleanCellValue());
                        System.out.print("\t");
                        break;
                    case BLANK:
                        System.out.print("");
                        System.out.print("\t");
                        break;
                    case FORMULA:
                        // Formula
                        System.out.print(cell.getCellFormula());
                        System.out.print("\t");
                        FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
                        // Print out value evaluated by formula
                        System.out.print(evaluator.evaluate(cell).getNumberValue());
                        break;
                    case NUMERIC:
                        System.out.print(cell.getNumericCellValue());
                        System.out.print("\t");
                        break;
                    case STRING:
                        System.out.print(cell.getStringCellValue());
                        System.out.print("\t");
                        break;
                    case ERROR:
                        System.out.print("!");
                        System.out.print("\t");
                        break;
                }
Answer 1

Замените массив на список List<String>, тогда Вы сможете дописывать элементы при помощи вызова метода list.add(value).

Вот пример:

List<String> list = new ArrayList<>();
...
case STRING:
    list.add(cell.getStringCellValue())
...

Если же Вам в итоге нужен именно массив, Вы можете преобразовать список в массив при помощи команд:

String[] array = new String[list.size()];
list.toArray(array);
READ ALSO
Маска номера +7 в джаваскрипт

Маска номера +7 в джаваскрипт

Есть поле ввода номера телефона

83
Помощь в сортировке, с использованием JS [закрыт]

Помощь в сортировке, с использованием JS [закрыт]

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение

84
Удаление div со смещением

Удаление div со смещением

Есть блокcontainer в который динамически с помощью jquery добавляются div блоки нумерованные от 0 до 9

97