Java - отчет с помощью Open. Office. org Writer. Напечатано под названием . Ничего удивительного, ведь для большинства предприятий бумажный документооборот остается пока основой делопроизводства. Вместе с тем, прошедшее десятилетие ознаменовалось бурным развитием свободного программного обеспечения (СПО). И действительно, в настоящее время можно построить информационную систему предприятия или часть ее на продуктах со свободной лицензией. Следуя духу СПО удачным опытом такого внедрения можно и нужно поделиться. В настоящей статье мы рассмотрим один из вариантов построения отчетов — с помощью свободно распространяемого офисного пакета Open. Office. org (кратко OOo), а точнее — текстового редактора Writer, входящего в его состав. ВЫБОР — СВОБОДНЫЕ ПРОГРАММЫ! Нужно добавить "путь класса" postgresql-jdbc. Открываем OpenOffice.org Base . Драйвер jdbc надо подключать дополнительно. Например Сервис- Параметры - OpenOffice.org - Java - Путь класса - Добавить архив. Класс драйвера MySQL JDBC: com.mysql.jdbc.Driver. Передо мной рабочее пространство OpenOffice.org Base. Перехожу в . Можно использовать класс драйвера JDBC для подключения к базе данных JDBC из LibreOffice. Класс драйвера определяется . В одном из номеров журнала «Системный администратор» я натолкнулся на статью . Суть проблемы была в том, что нужен был простой и, желательно, бесплатный генератор отчетов для Java. Ну, не устраивали наше предприятие формы документов, идущие в поставке с программой на которой было построено делопроизводство. А разработчик программы не очень хотел что- то в ней переделывать. А почему бы и нет? Оставалось только выбрать технологию для реализации поставленной задачи. На сайтах их создателей и продавцов все выглядело красиво, но их стоимость, при всех достоинствах — таких как техническая поддержка, удобство использования, интеграция с различными средами разработки, была бы точно непонятна для руководства предприятия, расположенного достаточно далеко от столиц, судите сами (см. Таблицу 1): Таблица 1. Цены на некоторые коммерческие генераторы отчетов для Java Поэтому решено было поискать что- то менее «болезненное» для бюджета предприятия. Напомню, что в . Обе статьи рассматривают технологию генерации отчетов «по шаблону». Что в нашем случае было не лишено смысла, так как требовалось сформировать первичные документы для клиента, а при выписке счета, например, нужно просто расставить необходимые поля из базы данных в определенных местах формы (шаблона). Кандидатом на победу при выборе генератора отчетов был еще один представитель СПО - библиотека Jasper Reports, использующая для разметки шаблона xml- файлы. Попытки протестировать Jasper Reports дали неплохие результаты. Эта библиотека хорошо документирована, в том числе есть материалы на русском языке . Однако, не умаляя достоинств Jasper Reports и решения, описанного в . Кстати, можно озадачить созданием формы шаблона заинтересованного партнера (коллегу), занявшись вплотную вопросами программирования. Собственно, мне и хотелось бы поделиться с читателями некоторыми идеями и блоками Java- кода, используя которые можно построить систему печати отчетов над существующей АИС, АРМ, СУБД и тому подобное. ПОДКЛЮЧАЕМСЯ К БАЗЕ ДАННЫХ Первой задачей, которую приходится решать при генерации отчетов, это, конечно, подключение к базе данных для получения необходимой информации. Рассмотрим, для примера, подключение к базе MS SQL (именно она была использована на нашем предприятии). Найти подходящий драйвер в сети не составит труда — на MSDN . Нам остается лишь подключить нужные jar- файлы к CLASSPATH. Для ОС семейства Linux это может выглядеть так: Листинг 1. Файл . profile домашнего каталога пользователя (ОС Ubuntu 1. MS. В остальном подключение к базе данных не отличается от обычного использования JDBC (англ. Java Data. Base Connectivity), ставшего для Java стандартом. Хотя, связь с данными с помощью JDBC для технологии отчетов по шаблону, которую мы описываем, вариант не единственный. Можно использовать JDO, Hibernate, или, например, библиотеку Castor (см. Обратим внимание на подключение модулей, необходимых для работы API Open. Office. org в CLASSPATH. Во- первых, кроме самого Open. Office. org, нам необходимо установить OOo SDK (см. Для системы Ubuntu 1. Теперь для нормального функционирования API OOo к CLASSPATH необходимо подключить следующие пакеты juh. OOo SDK, что в Ubuntu после установки SDK выглядит так (см. Листинг 2): Листинг 2. Дополнение к файлу . Листинга 1export OOO. Класс com. sun. star.
Драйвер jdbc надо подключать дополнительно. Сервис- Параметры -OpenOffice.org - Java - Путь класса- Добавить архив. Нужно добавить "путь класса " postgresql- jdbc. Заходим Открываем OpenOffice.org Base Можно использовать класс драйвера JDBC для подключения к базе данных JDBC из LibreOffice. Класс драйвера определяется. В сущности, именно драйвер MySQL Connector/J JDBC обеспечивает обмен. Loader расположен в каталоге /usr/share/java/openoffice - поэтому этот путь нужно подключить к CLASSPATH. ИСПОЛЬЗУЕМ ПОЛЯ Open. Office. org В статье А. Астафьева (подробности работы с API можно также посмотреть в Wiki на сайте Openoffice. Поля Open. Office — это особые области документа, к которым можно обратиться по именам прямо из нашей Java- программы. Создать поле можно в любом месте шаблона документа из меню Вставка- > Поля- > Дополнительно программы Writer, а сохранить документ необходимо в формате odt. Обращение к полям в программе удобно реализовать с помощью контейнера Hash. Map, как показано в Листинге 2. Листинг 2. Пример формирования контейнера с наименованием полей документа Open. Office и их значений. Hash. Map< String,String> v. Map =new Hash. Map< String,String> (); v. Map. put(. Kод из Листинга 3 заполнит необходимые поля в документе: Листинг 3. Пример заполнения полей документа с помощью экземпляра класса Hash. Map (v. Map): while( x. Text. Fields. Enumeration. More. Elements()). Примеры кода для соединения с экземпляром Open. Office открытия документа, печати, закрытия с помощью API Open. Office. org// соединение с экземпляром Open. Office. orgpublicvoid connect()throws. Exception. Многие программы, выгружающие свои отчеты в Microsoft Word/Excel используют для этого подобные технологии COM/DCOM. Uno. Runtime - центральный класс необходимый для использования UNO компонентов в Java. Вот описание некоторых модулей связанных с технологией UNO, взятое из Apache Open. Office. org Man . Таблицу 2). Таблица 2. Описание модулей, связанных с java UNOjut - Java UNO Tools. Инструменты для компонентов UNOjuh - Java UNO Helper. Реализует преобразование и дает доступ к нативным (зависимым от платформы) компонентамjurt - Java UNO Runtime. Ядро java UNOridl - Java Runtime Interface Definition Library unoil - UNO Interface Library. Набор интерфейсов для API OOo. Именно эти модули мы и пытались подключить в начале работы. МНОГОСТРОЧНЫЕ ТАБЛИЦЫ В ДОКУМЕНТАХ С чем можно еще столкнуться при формировании отчетов с помощью шаблонов Open. Office? Обычно мы не можем заранее знать сколько позиций понадобится в шаблоне при выгрузке данных из базы, например, строк счета. Это можно решить сформировав несколько шаблонов с различным количеством строк и, соответственно, полей документа. Зная количество записей в Result. Set, которое возвратит SQL- запрос, можно поступить как описано в Листингах 5 и 6. Формирование полей Open. Office в i- ой строке счетаfor( i=1; i =< k; i++). Подмена шаблона документа в зависимости от количества строк (k)switch(k). Например, нетрудно сделать так, чтобы была возможность распечатывать несколько документов подряд, отметив нужные в простой экранной форме, как показано на Рис. Рисунок 1. Экранная форма для выбора нужных документов при печати Отмечу, что генерация отчетов на базе ООо эксплуатируется на нашем предприятии с марта 2. Linux и Windows. Вдобавок ко всему, можно отметить, что в существующей экономической ситуации полезно предоставить руководству отчет об эффекте от внедрения подобной системы. В зависимости от ситуации выгода может складываться из экономии на рабочих станциях с ОС Linux и/или Open. Office, а также из стоимости коммерческого ПО для построения отчетов. Таким образом, рассмотренный нами метод печати документов по шаблону на базе Apache Open. Office. org Writer позволяет создать вполне «боеспособную» систему печати для документооборота предприятия. При этом есть возможность экономии на покупке как генератора отчетов, так и операционных систем и офисных программ. Вторников Генерация отчетов по текстовым шаблонам. Задачи сравнения списков или еще раз про XML.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
August 2017
Categories |