Работа с CSV файлом в Java

418
19 июля 2017, 22:24

Всем доброго времени суток!

Прошу уточнить как с помощью стандартных библиотек Java работать с CSV фалом ( если можно перечислите необходимые Import, которые следует использовать)?

  1. Задача в том, чтобы посчитать кол-во встречающихся значений по отдельности из колонки Names. Например sbt-lupov-av встречается всего 2 раза. Я просто не понимаю как обращаться к конкретным ячейкам в файле ( раньше работал с XLS файлами с помощью библиотеки JXL, там за это отвечает метод getCell(int x, int b // координаты ячеек) .
  2. И самое главное как привязать значение из колонки AccountedTime к каждому человеку и приплюсовать их? Ну например тот же самый sbt-lupov-av встречается с значением 6 и 3 , т.е. сумма его (которая мне в итоге и нужна) равняется 9.

Answer 1

Попробуйте использовать библиотеку Apache Commons CSV. Она поддерживает формат CSV-файлов созданных через Excel. Там же есть возможность обращаться к колонкам по имени (считается, что имена задаются первой строкой в файле; как раз Ваш случай). Документация по вариантам использования - https://commons.apache.org/proper/commons-csv/user-guide.html

И самое главное как привязать значение из колонки AccountedTime к каждому человеку и приплюсовать их? Ну например тот же самый sbt-lupov-av встречается с значением 6 и 3 , т.е. сумма его (которая мне в итоге и нужна) равняется 9

Используйте для этого HashMap, где в качестве ключа будет имя, а в качестве значения текущая сумма. Перебирая все записи, следуйте такому алгоритму:

Reader in = new FileReader("file.csv");
Map<String, Integer> map = new HashMap<>();
Iterable<CSVRecord> records = CSVFormat.EXCEL.parse(in);
for (CSVRecord record : records) {
    String name = record.get("Names");
    Integer value = Integer.valueOf(record.get("AccountedTime"));
    map.put(name, map.containsKey(name) ? map.get(name) + value, value);
}
READ ALSO
В чем разница между float и double в Java?

В чем разница между float и double в Java?

Насколько я помню, float и double различаются диапазонами, что ведёт к разной точности и скорости вычисленийОднако сегодня заметил, что с разными...

248
Что означает \p{Punct} в регулярном выражении?

Что означает \p{Punct} в регулярном выражении?

Посдкажите что делает данное регулярное выражение с \p{Punct}

236
Отправка данных формы POST Java EE

Отправка данных формы POST Java EE

Есть форма данных пользователяЕсть фильтр который обрабатывает форму, и если есть POST данные проверяет и сохраняет

238
Где можно скачать примеры JAVA программ? [требует правки]

Где можно скачать примеры JAVA программ? [требует правки]

Где можно скачать примеры Java программ? Чтобы было в одном архиве или собрано в одном местеМожет кто знает где можно скачать или ссылку откуда...

208