Автор оригинала: Nikita Masand.
В этой статье мы научимся читать и писать Microsoft Word с помощью библиотеки POI Apache .
Темы
- Apache POI – HWPF и XWPF
- Зависимости POI Apache
- Создайте документ word
- Работа с абзацами, шрифтами и страницей перерывы
- Верхний и нижний колонтитулы документа
- Добавить изображение
- Создайте таблицу
- Прочитайте и проанализируйте документ, абзац и таблицу
- Обновить документ
P.S Протестировано с Apache POI 4.1.2 и Java 8
1. Apache POI – HWPF и XWPF
Apache POI предоставляет API Java для работы с документами Microsoft. Мы рассмотрим варианты использования, включающие абзацы, шрифты, верхние и нижние колонтитулы, таблицы, изображения, запись, чтение, анализ и обновление документа. Прежде чем изучить варианты использования, давайте рассмотрим основные концепции, связанные с библиотекой POI Apache.
1.1 HWPF (ужасный формат текстового процессора) Эти API-интерфейсы предназначены для более старых форматов файлов Word 6 и Word 95, .doc
документы.
1.2 XWPF (формат текстового процессора XML) Эти API предназначены для новых документов Word 2007, .docx
.
Документ XWPFDocument | Он предоставляет API-интерфейсы высокого уровня для создания / редактирования файлов .docx word |
xwpfпараграф | Он используется для работы с абзацами |
XWPFRun | Он определяет область текста с общим набором свойств. Он также используется для редактирования свойств шрифта |
XWPFTable | Он используется для описания содержимого компонента таблицы, присутствующего в файле word |
XWPFTableRow | Он определяет строки, присутствующие в компоненте таблицы |
Xwpfвордэкстрактор | Он используется для извлечения текста из файла word |
P.S Эта статья будет посвящена последним XWPF API-интерфейсы, работа с .docx документы.
2. Зависимости POI Apache
Нам нужен только poi-ooxml
для работы с Microsoft word.
org.apache.poi poi-ooxml 4.1.2
3. Создайте документ word
В этом примере показано, как создать файл Microsoft Word .docx
. Мы используем XWPFParagraph
для создания абзацев и XWPFRun
для создания текста.
package com.mkyong.poi.word; import org.apache.poi.xwpf.usermodel.ParagraphAlignment; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import java.io.FileOutputStream; import java.io.IOException; public class CreateDocumentSimple { public static void main(String[] args) throws IOException { String fileName = "c:\\test\\hello.docx"; try (XWPFDocument doc = new XWPFDocument()) { // create a paragraph XWPFParagraph p1 = doc.createParagraph(); p1.setAlignment(ParagraphAlignment.CENTER); // set font XWPFRun r1 = p1.createRun(); r1.setBold(true); r1.setItalic(true); r1.setFontSize(22); r1.setFontFamily("New Roman"); r1.setText("I am first paragraph."); // save it to .docx file try (FileOutputStream out = new FileOutputStream(fileName)) { doc.write(out); } } } }
Выход
4. Работа с абзацами, шрифтами и разрывы страниц
Мы можем использовать XWPFRun
для настройки свойств стиля шрифта. Он содержит методы изменения свойств шрифта, таких как цвет, размер шрифта, курсив, жирный шрифт, заглавные буквы, тиснение и многое другое.
Мы создаем четыре абзаца и устанавливаем различные свойства шрифта, разрывы строк и разрывы страниц для каждого из них.
package com.mkyong.poi.word; import org.apache.poi.xwpf.usermodel.ParagraphAlignment; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import java.io.FileOutputStream; import java.io.IOException; public class WorkingParagraphFonts { public static void main(String[] args) throws IOException { try (XWPFDocument doc = new XWPFDocument()) { XWPFParagraph p1 = doc.createParagraph(); p1.setAlignment(ParagraphAlignment.CENTER); // Set Text to Bold and font size to 22 for first paragraph XWPFRun r1 = p1.createRun(); r1.setBold(true); r1.setItalic(true); r1.setFontSize(22); r1.setText("I am first paragraph. My Text is bold, italic, Courier and capitalized"); r1.setFontFamily("Courier"); XWPFParagraph p2 = doc.createParagraph(); //Set color for second paragraph XWPFRun r2 = p2.createRun(); r2.setText("I am second paragraph. My Text is Red in color and is embossed"); r2.setColor("ff0000"); r2.setEmbossed(true); XWPFParagraph p3 = doc.createParagraph(); //Set strike for third paragraph and capitalization XWPFRun r3 = p3.createRun(); r3.setStrikeThrough(true); r3.setCapitalized(true); r3.setText("I am third paragraph. My Text is strike through and is capitalized"); XWPFParagraph p4 = doc.createParagraph(); p4.setWordWrapped(true); p4.setPageBreak(true); // new page break p4.setIndentationFirstLine(600); XWPFRun r4 = p4.createRun(); r4.setFontSize(40); r4.setItalic(true); //r4.setTextPosition(100); r4.setText("Line 1"); r4.addBreak(); r4.setText("Line 2"); r4.addBreak(); r4.setText("Line 3"); // save the docs try (FileOutputStream out = new FileOutputStream("c:\\test\\simple.docx")) { doc.write(out); } } } }
Рисунок: Страница 1
Рисунок: Страница 2
5. Верхний и нижний колонтитулы документа
В этом примере создается верхний и нижний колонтитулы документа для всех страниц.
Рисунок: Страница 1
Рисунок: Страница 2
6. Добавить изображение
В этом примере в документ добавляется изображение.
7. Создайте таблицу
В этом примере мы рассмотрим, как мы можем вставить таблицу в файл документа Word. Мы будем использовать компонент XWPFTable
для создания и инициализации элемента таблицы.
В этом примере вставляется таблица, содержащая 3 строки и 3 столбца.
P.S Предупреждение для OpenOffice 4.1.7, API-интерфейсы таблиц неправильно отформатировали таблицу.
8. Прочитайте и проанализируйте документ, абзац и таблицу.
В этом примере будет показано, как мы можем использовать POI Apache для извлечения и считывания текста из документов.
8.1 Мы можем извлечь весь текст из документа с помощью XWPFWordExtractor
. Файл simple.docx
генерируется из примера 4. Работа с абзацами, шрифтами и разрывами страниц .
Вывод
8.2 В этом примере мы используем doc.getparagraphs()
для списка абзацев документа. Как только мы получим список, мы сможем повторить отдельные элементы абзаца и получить текст.
8.3 Файл table.docx
генерируется из примера 7. Создайте таблицу . Нам нужно получить список всех элементов в файле, а затем выполнить итерацию по нему, чтобы проверить наличие компонента ТАБЛИЦА
. Как только мы найдем компонент ТАБЛИЦА
, мы можем выполнить итерацию по нему, чтобы извлечь строки таблицы, и, наконец, выполнить итерацию по строкам, чтобы извлечь значения таблицы.
Вывод
9 . Обновить документ
В этом примере мы будем использовать предварительно заполненный файл шаблона template.docx
. Файл шаблона содержит следующий текст Привет ${имя}, Поздравляю, вы учитесь чему-то новому!
. И мы заменим строку ${имя}
предопределенным вводом и создадим новый файл output.docx
с обновленным содержимым.
Рисунок: c:\test\template.docx
Вывод
Рисунок: c:\test\output.docx
Дальнейшее чтение Для получения дополнительных примеров, пожалуйста, обратитесь к этому официальному Примеры Apache POI XWPF
Скачать исходный код
$ клон git https://github.com/mkyong/apache-poi-examples/
$ cd word
Ссылки
| Идентификатор текущей записи загружено через JS |/автор комментарииОригинал: “https://mkyong.com/java/java-read-and-write-microsoft-word-with-apache-poi/”