Блог о программировании
Java + Excel файлы (Apache POI)
С периодичностью раз в два-три года сталкиваюсь с проектами, в которых опять нужно работать с Excel файлами.
Наверно это у меня что-то кармическое...
Сейчас, в очередной раз приходиться реализовать полуавтоматический разбор сотен excel-файлов с прайсами.
В прошлых своих проектах использовал JExcelApi.
Ничего плохого про эту библиотеку сказать не могу, но хочется какого-то разнообразия в жизни поэтому в этот раз с товарищем решили попробовать Apache POI.
Apache POI поддерживает как формат для обычных *.xsl файлов (HSSF) так и *.xslx файлы (XSSF).
Кстати, формат для *.xsl файлы в Apache POI они обзывают "HSSF - Horrible SpreadSheet Format", то есть "Вселяющий ужас формат для электронных таблиц".
Для того, чтобы приступить к работе, как обычно прописываем зависимости в pom.xml:
Для примера, приведу очень простой файл - список ФИО, сумма + Итог:
Если нужно просто вытащить текст, можно использовать "класс-извелкатель": ExcelExtractor
Вывод на консоль:
Sheet1 &A Смирнов 40000.0 Иванов 40000.0 Кузнецов 50000.0 Попов 40000.0 Соколов 70000.0 Лебедев 70000.0 Козлов 50000.0 Новиков 50000.0 Морозов 50000.0 Петров 40000.0 Итого 500000.0 Page &P Sheet2 &A Page &P Sheet3 &A Page &PКогда этого не достаточно (например нужно найти нужную ячейку и т.д.), без проблем можно использовать нормальное API:
Пример:
Вывод на консоль:
Смирнов=[40000.0] Иванов=[40000.0] Кузнецов=[50000.0] Попов=[40000.0] Соколов=[70000.0] Лебедев=[70000.0] Козлов=[50000.0] Новиков=[50000.0] Морозов=[50000.0] Петров=[40000.0] Итого=[500000.0]Конечно если у вас не такие "рафинированные" примеры, то код будет намного более сложным.
Скорее всего вам придется делать еще один уровень API, заточенный под ваши нужды или ваши файлы.
Например у меня товарищ сделал для этих целей: Парсер на Scala поверх Apache POI для разбора Excel-файлов.
Теги:
Java
3. Инструментарий
excel