Как занести в Map данные из Excel файла? В java

235
01 октября 2018, 08:40

Добрый день!

Прошу подсказать как через Apache POI библиотеку выгрузить данные из Excel так, чтобы их можно было поместить в мапу. Например в файле есть колонка firstname и колонка interaction, нужно их поместить в мапу так, чтобы каждому имени соответствовала сумма всех его интеракций, т.е. ключом мапы должна быть firstname , а значением сумма соответствующих ему интеракций. Т.е. например для Denis сумма будет равна 7.

Answer 1

Maven POM:

 <dependencies>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.17</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.17</version>
    </dependency>
</dependencies>

Java Code:

public class Main {
    public static void main(String[] args) throws IOException, InvalidFormatException {
        Map<String, Integer> interactions = new HashMap<>();
        Workbook workbook = WorkbookFactory.create(Main.class.getClassLoader().getResourceAsStream("example.xlsx"));
        Sheet sheet = workbook.getSheetAt(0);
        DataFormatter dataFormatter = new DataFormatter();
        sheet.forEach(row -> {
            String name = dataFormatter.formatCellValue(row.getCell(0));
            Integer interaction = Integer.parseInt(dataFormatter.formatCellValue(row.getCell(1)));
            if(!interactions.containsKey(name)) {
                interactions.put(name, 0);
            }
            interactions.put(name, interactions.get(name)+interaction);
        });
        workbook.close();
        System.out.println(interactions);
    }
}

Output: {Mihail=9, Petr=10, Grigory=8, Denis=7}

Answer 2

Чисто алгоритмически задача решается так: - Открываем книгу на чтение - Берем первый лист - Берем итератор по строкам, идем по нему - В каждой строке берем итератор по ячейкам, идем по нему, читаем первую ячейку, проверяем есть ли в мапе по этому ключу значение. Если есть, прибавляем к нему значение второй ячейки, иначе кладем в мапу значение второй ячейки, по ключу = значению первой ячейки, переходим к следущей строке - Идем пока не закончатся строки - ?????? - PROFIT!!!1

READ ALSO
упал test JUnit geckodriver

упал test JUnit geckodriver

подскажите как поравитьПрошу не кидаться камнями новичок

237
BoxLayout не работает

BoxLayout не работает

Всем приветМне нужно создать окно, в которое автоматически будут добавляться элементы друг под другом (тест, вопросы будут читаться из файла),...

191
Почему не работает calc css?

Почему не работает calc css?

Использую Smart-grid, не работает calc, подскажите почему? Проблема во всех браузерах!!!

251
Конфликт скриптов, галерея

Конфликт скриптов, галерея

Менюшки плавно скролились по якорям лендингаНо после того как я подключила новую галерею, скролинг на якорь к этой галереи не работает (остальные...

229