Создание документа Word в формате docx с помощью Apache POI

В этой статье мы продолжим знакомство с java библиотекой Apache POI, а именно научимся создавать документы пакета MS Word в современном формате .docx.

Кто не знаком с библиотекой Apache POI, почитайте эту статью (краткое описание и настройка библиотеки в Java проекте). С помощью этой библиотеки мы уже создавали Excel файл, редактировали его и просто считывали данные с xls-файла. Сегодня настало время потренироваться на документах Word.

Сегодня мы создадим новый docx файл с колонтитулами и каким-то содержимым. Давайте ознакомимся с небольшой теорией и далее перейдем к примеру создания такого файла.

Для работы с современным форматом документа MS Word, нам понадобится библиотека Apache POI версии 3.11 с артефактом poi-ooxml. Обратите внимание, что шаблоны файлов пакета MS Office постоянно обновляются и дорабатываются, а сама Apache POI перерабатывается, поэтому работоспособность приведенного в статье кода в новых версиях не гарантируется.

Подключите следующую зависимость в свой maven проект:

Создание документа Word (.docx) с помощью Apache POI. Теория

В описании мы указали, что будем создавать документ с колонтитулами, поэтому давайте ознакомимся со специальными классами, которые позволят это сделать.

Apache POI предоставляет классы XWPFHeaderFooterPolicy и XWPFHeaderFooterPolicy для работы с колонтитулами. В каждом из этих классов есть методы создания createHeader() и createFooter(). Для работы с содержимым документа есть специальные классы XWPFParagraph and XWPFRun API.

Ход создания docx документа будет следующий:

  1. Создаем объект XWPFDocument — для создания модели самого docx-документа.
  2. Создаем экземпляр класса XWPFHeaderFooterPolicy для доступа к колонтитулам.
  3. Создаем экземпляры CTP для верхнего и нижнего колонтитулов
  4. Создаем классы-оболочки XWPFParagraph для каждого колонтитула и тела Word документа.
  5. Устанавливаем полученные оболочки в модель XWPFDocument и сохраняем модель в файл с расширением docx.

 

Создание документа Word в формате docx с помощью Apache POI. Пример

А теперь реализуем наш алгоритм в коде:

Обратите внимание, что цвет текста задается в шестнадцатеричном представлении RGB, то есть HEX, но без знака #.

Запустим пример и посмотрим содержимое документа Apache POI Word Test.docx на диске F:

apache_poi_word_create

Нижний колонтитул есть, но просто не поместился в скрин.

Вот такой просто пример создания документа Word в формате docx с помощью библиотеки Apache POI. Подписывайтесь на обновления.

3 thoughts to “Создание документа Word в формате docx с помощью Apache POI”

  1. cttFooter.setStringValue(footerContent);
    setStringValue горит красным, хоть java.lang.String импортнул.
    Что делать?

  2. Интересная статья, спасибо за труды.

    Не подскажите, как в вордовском документе создать таблицу, объединить ячейки, сделать видимыми границы, перейти на новый лист в документе (на каждом листе вордовского документа создать свою таблицу)?

Добавить комментарий для Дмитрий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *