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

Эта статья является продолжением знакомства с возможностями библиотеки Apache POI. В прошлой статье мы научились создавать новые Word документы на Java, а сегодня рассмотрим простой пример считывания данных с файлов в формате docx.

Считывание Word документа с помощью Apache POI

Давайте рассмотрим краткие теоретические сведения по работе с библиотекой, колонтитулами и параграфами. Считанный в память docx документ представляет собой экземпляр класса XWPFDocument, который мы будем разбирать на составляющие. Для этого нам понадобятся специальные классы:

  • Отдельные классы XWPFHeader и XWPFFooter — для работы (считывания/создания) верхнего и нижнего колонтитулов.  Доступ к ним можно получить через специальный класс-поставщик XWPFHeaderFooterPolicy.
  • Класс XWPFParagraph — для работы с параграфами.
  • Класс XWPFWordExtractor — для парсинга содержимого всей страницы docx документа

Apache POI содержит множество других полезных классов для работы с таблицами и медиа объектами внутри Word документа, но в этой ознакомительной статье мы ограничимся лишь с разбором колонтитулов и парсингом текстовой информации.

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

Теперь добавим в проект библиотеку Apache POI для работы с Word именно в docx формате. Я использую maven, поэтому просто добавлю в проект еще одну зависимость

Если вы используете gradle или хотите вручную добавить библиотеку в проект, то найти ее можно здесь.

Парсить/считывать я буду docx документ, полученный в предыдущей статье — Создание Word файла. Вы можете использовать свой файл. Содержимое моего документа следующее:

apache_poi_word_create

Теперь напишем простой класс для считывания данных из колонтитулов и параграфов документа:

Запустим и смотрим в консоль:

Начинающие Java программисты, обратите внимание, что мы использовали конструкцию try-with-resources — особенность Java 7. Подробнее читайте в специальном разделе Особенности Java 7.

Другой способ считать содержимое Word файла

Приведенный выше пример сначала парсит отдельные части документа, а потом печатает в консоль их содержимое. А как быть, если мы просто хотим посмотреть все содержимое файла сразу? Для этого в Apache POI есть специальный класс XWPFWordExtractor, с помощью которого мы в 2 строчки сделаем то, что нам нужно.

Просто раскомментируйте код в листинге выше и еще раз запустите проект. В консоле просто продублируется вывод на экран.

Подробнее о библиотеке Apache POI читайте здесь, а также посмотрите пример чтения Excel файла, а также создания Excel (xls) документа все помощью Apache POI.

Подписывайтесь на новые статьи по Java и Android.

One thought to “Чтение документа Word в формате docx с помощью Apache POI”

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

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