Рубрика:
Администрирование /
Генерация отчетов
| Дополнительные материалы
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
СЕРГЕЙ ИЛЬИЧЕВ, ГК «Лаборатория Интеллект», г. Тула, инженер-программист, sergil68@mail.ru
Apache POI HSSF – как «приручить» Excel
Не стоит недооценивать свободные генераторы отчетов. Библиотека с открытым исходным кодом Apache POI доказывает свою состоятельность
Постановка задачи
К теме генерации отчетов время от времени приходится обращаться практически каждому программисту и системному администратору. Получив очередное техзадание сделать отчет для информационной системы предприятия именно вMicrosoft Excel и имея некоторый опыт построения отчетов с помощью технологий, описанных в [1], решено было исследовать, какой из современных генераторов отчетов (желательно бесплатный) подошел бы для решения этой задачи. При этом совершенно не хотелось лезть в поднадоевшие механизмы OLE-DDE, привязываясь к одной из операционных систем.
Использование электронных таблиц для формирования отчетов – трюк давний и вполне оправданный. Во-первых, современные динамические таблицы – мощные программные комплексы, способные на математические вычисления вплоть до аппроксимации. Во-вторых, рабочие единицы в электронных таблицах – ячейки, строки, столбцы, – и с ними легко работать алгоритмически, например, используя циклы. И напоследок: подобные программы установлены практически налюбом персональном компьютере.
В процессе поиска информации заставил «потереть руки» в предвкушении чего-то интересного один проект – Apache POI, выпущенный под лицензией Apache License. Официальный сайт проекта, в котором, кстати, может принять участие любой желающий, – [2]. Аббревиатура POI (и другие – см. ниже) на титульной странице сайта никак не расшифровывается, однако в документации [3] даются некоторые разъяснения.
Согласно информации из документации эта Java-библиотека разделена на несколько пакетов: если необходимо прочитать или записать файл Excel (.xls), то можно использовать пакет HSSF, если нужно прочитать или записать файл OOXML Excel (.xlsx), можно использовать XSSF. Комбинированный интерфейс SS позволяет легко считывать и записывать все виды файлов Excel (.xls и .xlsx). Кроме того, существует специализированная реализация SXSSF, которая позволяет работать с очень большими Excel (.xlsx) файлами в памяти с оптимизацией.
С первого взгляда возможности HSSF с лихвой покрывали потребности нашего отчета. После анализа техзадания выполнение задачи было разбито на два этапа: 1-й этап – данные из информационной системы с помощью ее инструментов должны быть выгружены в текстовый файл с символами «#» в качестве разделителей такого вида:
Поле 1#Поле 2#Поле 3#Поле 4#Поле 5#Поле 6
Поле 1#Поле 2#Поле 3#Поле 4#Поле 5#Поле 6
Поле 1#Поле 2#Поле 3#Поле 4#Поле 5#Поле 6
Затем 2-й этап – файл должен подхватиться программой на Java и после обработки вывестись пользователю на экран уже в Excel. Подобные поэтапные решения применяются в так называемой лоскутной автоматизации, описаны в [1] идовольно часто применяются в информационных системах.
Целью статьи будет описание процесса создания программы на языке программирования Java для решения задач 2-го этапа, а именно открытие текстового файла с разделителями и формирование многостраничного отчета с помощью библиотеки POI, способного открыться в Microsoft Excel. Программировать будем в JDK 6 (Linux Mint 13 LTE, версия Java – OpenJDK 1.6), сама программа, что естественно для языка программирования Java, после компиляции должна выполняться и в Linux и в Windows.
Статью целиком читайте в журнале «Системный администратор», №4 за 2017 г. на страницах 30-33.
PDF-версию данного номера можно приобрести в нашем магазине.
- Java-отчет с помощью OpenOffice.org Writer – http://www.learn2prog.ru/ooo-report.
- Сайт проекта Apache POI – https://poi.apache.org.
- Страница документации Apache POI – https://poi.apache.org/apidocs/index.html.
- Страница загрузки (download) библиотеки – https://poi.apache.org/download.html#POI-3.15.
- Описание API-библиотеки для работы с электронными таблицами – https://poi.apache.org/spreadsheet/how-to.html.
- Интерфейс Font-библиотеки, поля и методы – https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Font.html.
- Устаревшие методы Apache POI – https://poi.apache.org/apidocs/deprecated-list.html.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|