Статья опубликована в рамках: Научного журнала «Студенческий» № 17(229)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4, скачать журнал часть 5, скачать журнал часть 6, скачать журнал часть 7
ИССЛЕДОВАНИЕ БИБЛИОТЕК ДЛЯ РАБОТЫ С DOCX ДЛЯ ЯЗЫКА ПРОГРАММИРОВАНИЯ JAVA
RESEARCH OF LIBRARIES FOR WORKING WITH DOCX FOR THE JAVA PROGRAMMING LANGUAGE
Maxim Chebola
2nd year master's degree, Department of Applied Information Technologies, National Research University “MIET",
Russia, Moscow
АННОТАЦИЯ
При разработке программного обеспечения зачастую необходимо, чтобы из нее можно было получить данные в виде документов Microsoft Office. В данной статье проводится сравнительный анализ наиболее популярных открытых библиотек для полноценной работы с форматом docx, созданных для работы с языком программирования Java а также приводится пример их использования.
ABSTRACT
When developing software, it is often necessary that data can be obtained from it in the form of Microsoft Office documents. This article provides a comparative analysis of the most popular open libraries for full-fledged work with the docx format, created to work with the java programming language, and also provides an example of their use.
Ключевые слова: MS Word, MS Office, Apache POI, Docx4j, Java, docx, разработка ПО.
Keywords: MS Word, MS Office, Apache POI, Docx4j, Java, docx, software development.
Введение
В ходе разработки системы по создании концептов игр, создаваемой в рамках магистерской диссертации, возникла необходимость выбрать библиотеку для создания документов офисных форматов с возможностями тонкой настройки получившегося результата, которые также созданы для работы с языком программирования Java.
Наиболее популярными являются 2 таких библиотеки, Apache POI и Docx4j. Данные библиотеки включают в себя инструменты по работе с элементами документов MS Office, поэтому им не нужен доступ к Microsoft Word, что делает их кроссплатформенными и достаточно самостоятельными.
Документ Microsoft Word (.docx) - это формат файла, основанный на стандарте Office Open XML (OOXML), который используется для создания и редактирования текстовых документов. Файл .docx можно распаковать в zip-архив, который содержит структуру с файлами и папками. [5]
styles.xml – файл с определением стилей форматирования текста, таких как размер шрифта, цвет и выравнивание, отступы.
document.xml – основной файл документа, где содержится список отдельных частей с настройками оформления, шрифта, цветов и отступов, а также стиль разделов документов и ориентация и размер листов в документе.
Помимо указанных выше файлов, архив может содержать также другие файлы с данными комментариев, сносок, оформлением колонтитулов, а также различных настроек, которые есть в документах .docx.
Apache POI
Apache POI - это библиотека Java, используемая для создания документов Microsoft Office и работы с ними, включая файлы Word, Excel и PowerPoint [1]. Она была выпущена в 2001 году Apache Software Foundation и с того момента активно развивается. Библиотека была создана для того, чтобы предоставить разработчикам Java возможность работать с документами Microsoft Office независимо от платформы.
Apache POI предоставляет сравнительно простые инструменты для работы с документами Office, облегчающий разработчикам Java создание, чтение и изменение этих файлов. Библиотека поддерживает как старые форматы двоичных файлов MS Office (.xls, .doc, .ppt), так и более новые форматы Office Open XML (.xlsx, .docx, .pptx).
Docx4j
Docx4j - это библиотека Java, используемая для создания и работы с документами Microsoft Word в формате Office Open XML (docx). Эта библиотека с открытым исходным кодом, доступная под лицензией Apache 2.0. Она была создана австралийской компанией Plutext Pty Ltd, в 2008 году. [2]
Одной из ключевых особенностей Docx4j является его поддержка Open Packaging Conventions (OPC) [6], который является базовым форматом, используемым документами Office Open XML. Docx4j использует JAXB архитектуру для создания представления объекта в памяти. акцентируя свое внимание на всесторонней поддержке заявленного формата, поэтому от пользователя данного API требуется знание и понимание технологии JAXB и структуры Open XML.
Для демонстрации напишем 2 метода с использованием данных библиотек, где им нужно будет добавить в входящий пустой файл документ с несколькими строками, каждая из которых содержит подпись с названием стиля и соответствующим стилем оформления.
Сравнение
В 1 строке происходит создание документа в памяти, во второй выделение главной части документа, в которую добавляются параграфы. Затем цикл с добавлением блока с текстом в новый параграф с заданным в этом блоке стиле. В конце происходит сохранение документа в файл и возврат файла [3]. Всего потребовалось 5 строк, но этот метод способен работать только с массивом строк текста.
Рисунок 1. Фрагмент кода экспорта с помощью библиотеки Docx4j
В 1 строке происходит создание документа в памяти, затем в цикле происходит создание параграфов, в нём назначается стиль оформления теста и добавляется текст. Затем происходит сохранение документа в файл. [4]
Рисунок 2. Фрагмент кода экспорта с помощью библиотеки Apache POI
В отличии от docx4j, Apache POI создает файл без таблицы с стилями, поэтому в итоговом файле будет оформление по умолчанию. Самым лучшим решением будет экспортировать стили, добавив к листингу их чтение из другого файла. На рисунке 2 для этого потребовалось 3 дополнительные строчки, которые обведены. Итоговый размер кода получился немного больше.
У этих библиотек довольно сложное создание стилей, так как нет классов-помощников, которые помогают облегчить создание стилей оформления текста, поэтому для создания стилей через код придется разбираться с поиском документации или экспортировать стили из другого файла. В точки зрения написания кода, данные библиотеки не сильно отличаются друг от друга, что поэтому их сложно сравнивать с точки зрения удобства.
Выводы
Docx4j и Apache POI являются мощными Java-библиотеками, используемыми для работы с документами Microsoft Office. Выбор между ними зависит от конкретных потребностей проекта и опыта команды разработчиков. Docx4j обладает немного простым функционалом, но Apache POI более универсальный и способен также работать с форматами Excel и PowerPoint. Данные библиотеки не сильно отличаются по своим возможностям и для работы с ним может потребоваться знание структуры документов и Microsoft OpenXML, поэтому их сложно сравнивать между собой с этой точки зрения.
Для экспорта данных проектов в разрабатываемой системе будет использоваться Apache POI, так как кроме экспорта в docx, дальше, при развитии системы может потребоваться сделать экспорт данных из системы в xlsx и pptx, что при использовании Apache POI можно сделать без дополнительных библиотек.
Список литературы:
- Apache POI - Component Overview / [Электронный ресурс] // Apache Software Foundation : [сайт]. — URL: https://poi.apache.org /components/index.html (дата обращения: 01.05.2023).
- Docx4j documentation / [Электронный ресурс] // https://www.docx4java.org : [сайт]. — URL: https://github.com/plutext/docx4j/blob/master/docs/ Docx4j_GettingStarted.pdf?
- Introduction To Docx4J / baeldung [Электронный ресурс] // https://www.baeldung.com : [сайт]. — URL: https://www.baeldung.com/ docx4j (дата обращения: 02.05.2023). raw=true (дата обращения: 03.05.2023).
- Генерация файлов Word в Apache POI / alexzavzavzav [Электронный ресурс] // Хабр : [сайт]. — URL: https://habr.com/ru/articles/503444/ (дата обращения: 02.05.2023).
- Структура документа WordprocessingML (Open XML SDK) / Alex Jerabek, Alma Jenks, Andy Pasic, Linda Lu Cannon [Электронный ресурс] // Microsoft Learn : [сайт]. — URL: https://learn.microsoft.com/ru-ru/office/open-xml/structure-of-a-wordprocessing ml-document (дата обращения: 03.05.2023).
- Чернова, Е. В. ВЫБОР API ДЛЯ РАБОТЫ С ФАЙЛАМИ MICROSOFT OFFICE НА ЯЗЫКЕ JAVA [Текст] // ЕВРАЗИЙСКИЙ НАУЧНЫЙ ЖУРНАЛ. — 2015. — № 7. — С. 90-91.
Оставить комментарий