Обновление заголовка страницы файла .docx с помощью Apache POI

Как обновить заголовок страницы файла .docx с помощью API Apache POI 3.7?


person Jalal Sordo    schedule 24.02.2012    source источник
comment
Пожалуйста, посмотрите мой ответ в этом сообщении как-извлечь-данные-заголовка-из-docx-в-java-используя-poi-3-8   -  person Liquidpie    schedule 23.02.2014


Ответы (3)


Сначала вызовите getHeaderFooterPolicy(). в вашем XWPFDocument, который возвращает HeaderFooterPolicy< /а>. Исходя из этого, вы можете определить соответствующий заголовок для своей страницы (например, «По умолчанию», «Первая страница» и т. д.).

Когда у вас есть соответствующий XWPFHeader, который вы хотите изменить, то вы можете приступить к редактированию его, как и любой другой части документа. Вы можете получить таблицы, абзацы и т. д., а затем удалить их, добавить новые, изменить их текст и т. д. Это все тот же процесс, что и редактирование основного документа.

person Gagravarr    schedule 25.02.2012
comment
Можете ли вы предоставить несколько примеров кода, который позволяет редактировать заголовок, используя упомянутые классы POI? - person Jalal Sordo; 28.02.2012
comment
Попробуйте взглянуть на юнит-тесты, там есть много примеров, как часть тестирования того, что функция работает правильно. - person Gagravarr; 02.03.2012
comment
Кроме того, заголовок работает так же, как и любая другая часть документа, поэтому, как только вы изучите XWPF в достаточной степени, чтобы иметь возможность добавлять/изменять абзацы и таблицы, процесс для заголовка точно такой же. - person Gagravarr; 02.03.2012
comment
@Gagravarr Вы когда-нибудь успешно изменяли ячейку таблицы с помощью XWPF? - person Kent Bull; 18.02.2015

Поскольку ваш документ имеет формат .docx, вам потребуется использовать API компонента XWPF проекта POI. Вам может пригодиться класс org.apache.poi.xwpf.usermodel.XWPFHeader (Javadoc ), но я никогда не использовал его сам.

Я не смог найти подходящего справочника по использованию XWPF, но следующие инструкции описывают доступ к заголовкам с помощью HWPF, аналогичного интерфейса для старых документов Word (AKA .doc docs):

Чтобы получить верхние и нижние колонтитулы документа Word, сначала создайте файл org.apache.poi.hwpf.HWPFDocument. Далее вам нужно создать org.apache.poi.hwpf.usermodel.HeaderStores, передав ему свой HWPFDocument. Наконец, HeaderStores дает вам доступ к верхним и нижним колонтитулам, включая первую/четную/нечетную страницу, если они определены в вашем документе. Кроме того, HeaderStores предоставляет метод удаления любых макросов в тексте, что полезно, поскольку многие верхние и нижние колонтитулы заканчиваются макросами.

страница, откуда взяты эти инструкции, подразумевает, что поддержка заголовков никогда не была такой хорошей в HWPF, не говоря уже о XWPF. Если говорить о других плохих новостях, эта другая страница Apache звучит так, как будто разработка XWPF практически застопорилась. . Возможно, то, что вы хотите сделать, запланировано, но еще не поддерживается.

person Pops    schedule 24.02.2012
comment
На странице, на которую вы ссылаетесь, говорится только о том, что разработка HWPF в данный момент не очень активна - похоже, что большая часть усилий уходит на XWPF, поскольку это то, что интересует большинство людей. - person Gagravarr; 25.02.2012
comment
Если вы что-нибудь знаете о коммитах XWPF, то вы знаете больше, чем я. Однако на этой странице говорится, что ни один из коммиттеров [XWPF] активно не добавляет новые функции. @Гаграварр - person Pops; 26.02.2012

Ознакомьтесь с Написание документов Microsoft Word на Java с помощью Apache POI < /а>

Я никогда раньше не работал с файлом Word, но сделал это с библиотекой POI для файлов Excel, им довольно легко следовать (они моделируют строку, столбец, лист и т. д. для Excel), поэтому я предполагаю, что их будет одинаково легко сделать для Word файлы.

И быстро прочитайте их руководство Apache POI - HWPF - API Java для обработки файлов Microsoft Word

person TS-    schedule 24.02.2012
comment
Я предполагал то же самое, когда начинал свой проект, у меня был такой успех с электронными таблицами, почему бы не использовать его и для Word? Это был ужасный опыт, определенно не рекомендую его, если у вас нет простого документа. Каждый год, когда мне приходится обновлять документы Word, заголовки выигрывают каждый раз. - person Chris.Stover; 01.12.2016