Рубрики
Без рубрики

Java – Чтение и запись Microsoft Word с помощью POI Apache

В этой статье показано, как Apache POI используется для чтения, анализа и записи документа Microsoft Word.

Автор оригинала: Nikita Masand.

В этой статье мы научимся читать и писать Microsoft Word с помощью библиотеки POI Apache .

Темы

  1. Apache POI – HWPF и XWPF
  2. Зависимости POI Apache
  3. Создайте документ word
  4. Работа с абзацами, шрифтами и страницей перерывы
  5. Верхний и нижний колонтитулы документа
  6. Добавить изображение
  7. Создайте таблицу
  8. Прочитайте и проанализируйте документ, абзац и таблицу
  9. Обновить документ

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/”