22 апреля 2010 г.

Формирование отчетов в OpenOffice.org Calc и Writer из Java-программы

При создании прикладных программ, работающих с базой данных, довольно часто возникает необходимость выгрузки данных в какой-нибудь текстовый редактор, который может быть использован для корректировки информации и печати получившегося документа. В этой статье я расскажу, как решил эту задачу для себя, используя язык программирования Java и офисный пакет OpenOffice.org, что позволило обеспечить кроссплатформенность этого решения.
Для начала необходимо, что бы был установлен OpenOffice.org 3 версии, ну и разумеется JDK со средой разработки, или кому как нравится.
Для разработки понадобятся следующие библиотеки OpenOffice.org:
  • juh.jar, jurt.jar, ridl.jar, unoloader.jar из каталога /opt/openoffice.org3/basis-link/ure-link/share/java (если OpenOffice.org установлен не из официальных репозиториев) 
  • unoil.jar из каталога /opt/openoffice.org3/basis-link/program/classes
  • bootstrapconnector.jar, который можно скачать здесь
Можно скопировать данные библиотеки в директорию jre/lib/ext, но лучше подключить их в своей среде разработки, как User Libraries.
Библиотеки juh.jar, jurt.jar, ridl.jar, unoil.jar и unoloader.jar представляют собой необходимый набор классов API OpenOffice.org.
Библиотека bootstrapconnector.jar необходима для решения некоторых проблем, которые могут возникнуть во время подключения приложения к работающему экземпляру OpenOffice.org при определенных условиях. Подробнее об этих проблемах можно почитать здесь (на англ. яз), там же есть ссылка на саму библиотеку.
Когда всё установлено и все библиотеки подключены можно приступать к разработке. Приведу пример рабочих классов и методов для работы с OpenOffice.org Calc и OpenOffice.org Writer.

Класс для работы с документами OpenOffice.org Calc
Этот класс позволяет открывать файлы *.ods и *.xls в OpenOffice.org Calc и осуществлять вставку текста, формул и значений в ячейки, обращаясь к ним по именам (А1, А2, B3 и т.п.).



Я не буду приводить пример всего класса для работы с документами OpenOffice.org Writer, т.к. он практически аналогичен классу OOCalcDocument. Различие заключаются лишь в том, что в классе для работы с OpenOffice.org Writer отсутствуют методы для работы с ячейками (insertTextIntoCellByName(...) и insertValueIntoCellByName(...)), вместо них есть методы для вставки и замены текста, которые описаны ниже.


Методы для работы с текстом в документах OpenOffice.org Writer


Оба класса можно использовать для работы с заранее подготовленными шаблонами документов. Подробнее о том, как создавать и использовать переменные в документах OpenOffice.org Writer можно посмотреть в статье Java + OpenOffice.org = генератор отчетов, ссылка на которую приведена ниже.

Возможно вам также будет интересна статья "Создание документа ODF с помощью ODFDOM Simple Java API".

При написании статьи была использована информация и исходные коды со следующих источников:

1 комментарий: