создавать таблицы в документах Word с помощью Java

Microsoft Word — популярный текстовый редактор, используемый для создания различных типов документов. Эти документы могут содержать элементы нескольких типов, включая текст, изображения, таблицы и диаграммы. Когда дело доходит до автоматизации создания и обработки документов в Java, вам может понадобиться простое решение для создания таблиц в документах Word. Итак, в этом сообщении блога мы рассмотрим, как создавать таблицы в документах Word в приложении Java.

Библиотека Java для создания таблиц в документах Word

Aspose.Words for Java — это API, который позволяет разработчикам Java программно работать с документами Microsoft Word. Он предоставляет широкий спектр функций для создания, изменения и управления документами Word, что делает его ценным инструментом для автоматизации задач создания и обработки документов. Мы будем использовать эту библиотеку для вставки таблиц в документ Word.

Вы можете скачать библиотеку или установить ее, используя следующие конфигурации Maven.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>23.10</version>
    <classifier>jdk17</classifier>
</dependency>

Создайте таблицу в документе Word на Java

Существует два способа создания таблиц в документах Word с помощью Aspose.Words for Java:

  • Использование DocumentBuilder
  • Использование DOM (объектная модель документа)

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

Создать таблицу с помощью DocumentBuilder

Класс DocumentBuilder предоставляет вам быстрый и простой способ создания динамических документов с нуля или обработки существующих документов. Он предлагает ряд функций для вставки различных элементов контента, таких как текст, флажки, объекты OLE, абзацы, списки, таблицы, изображения и многое другое.

Ниже приведены шаги, которые используют класс DocumentBuilder для создания таблицы в документе Word на Java.

  • Создайте объект класса Document, чтобы загрузить или создать документ Word.
  • Создайте объект класса DocumentBuilder.
  • Запустите таблицу с помощью метода DocumentBuilder.startTable().
  • Вставьте ячейку, используя метод DocumentBuilder.insertCell().
  • (Необязательно) Примените форматирование к ячейке, например шрифт и выравнивание.
  • Вставьте текст в ячейку с помощью метода DocumentBuilder.write().
  • При необходимости повторите вставку ячеек и текста в ячейки.
  • Завершите строку после завершения вставки ячеек с помощью метода DocumentBuilder.endRow().
  • Завершите таблицу, когда вы вставили все строки с помощью метода DocumentBuilder.endTable().
  • Сохраните документ Word, используя метод Document.save().

В следующем фрагменте кода показано, как создать таблицу в документе Word с помощью Java.

// Создайте или загрузите документ.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Создайте новую таблицу и вставьте ячейку.
Table table = builder.startTable();
builder.insertCell();

// Общее форматирование таблицы должно применяться после того, как в таблице присутствует хотя бы одна строка.
table.setLeftIndent(20.0);

// Установите высоту и определите правило высоты для строки заголовка.
builder.getRowFormat().setHeight(40.0);
builder.getRowFormat().setHeightRule(HeightRule.AT_LEAST);

builder.getCellFormat().getShading().setBackgroundPatternColor(new Color((198), (217), (241)));
builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
builder.getFont().setSize(16.0);
builder.getFont().setName("Arial");
builder.getFont().setBold(true);

builder.getCellFormat().setWidth(100.0);
builder.write("Header Row,\n Cell 1");

// Нам не нужно указывать ширину этой ячейки, поскольку она унаследована от предыдущей ячейки.
builder.insertCell();
builder.write("Header Row,\n Cell 2");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Header Row,\n Cell 3");
builder.endRow();

builder.getCellFormat().getShading().setBackgroundPatternColor(Color.WHITE);
builder.getCellFormat().setWidth(100.0);
builder.getCellFormat().setVerticalAlignment(CellVerticalAlignment.CENTER);

// Сбросьте высоту и определите другое правило высоты для тела таблицы.
builder.getRowFormat().setHeight(30.0);
builder.getRowFormat().setHeightRule(HeightRule.AUTO);
builder.insertCell();
        
// Сбросить форматирование шрифта.
builder.getFont().setSize(12.0);
builder.getFont().setBold(false);

builder.write("Row 1, Cell 1 Content");
builder.insertCell();
builder.write("Row 1, Cell 2 Content");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Row 1, Cell 3 Content");
builder.endRow();

builder.insertCell();
builder.getCellFormat().setWidth(100.0);
builder.write("Row 2, Cell 1 Content");

builder.insertCell();
builder.write("Row 2, Cell 2 Content");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Row 2, Cell 3 Content.");
builder.endRow();

// Конечный стол.
builder.endTable();

// Сохранить документ.
doc.save("table.docx");

Ниже приведен снимок экрана таблицы, которую мы создали с использованием приведенного выше примера кода.

Таблица в документе Word

Создать таблицу, используя DOM

Объектная модель документа (DOM) — это представление документа Word в памяти, которое позволяет программно читать, манипулировать и изменять содержимое и форматирование документа Word. Следующие шаги демонстрируют, как создать таблицу в документе Word с помощью DOM.

  • Создайте объект класса Document, чтобы загрузить или создать документ Word.
  • Создайте объект класса Table и вставьте таблицу в документ с помощью метода Document.getFirstSection().getBody().appendChild(Table).
  • Создайте объект класса Row и вставьте его в таблицу с помощью метода Table.appendChild(Row).
  • Создайте объект класса Cell, задайте параметры форматирования и добавьте текст в ячейку.
  • Вставьте ячейку в строку, используя метод Row.appendChild(Cell).
  • Повторите процесс для любого количества строк.
  • Сохраните документ Word, используя метод Document.save().

В следующем фрагменте кода показано, как создать таблицу в документе Word на Java.

// Создайте или загрузите документ.
Document doc = new Document();
        
// Начнем с создания объекта таблицы. Обратите внимание, что мы должны передать объект документа
// конструктору каждого узла. Это потому, что каждый создаваемый нами узел должен принадлежать
// к какому-то документу.
Table table = new Table(doc);
doc.getFirstSection().getBody().appendChild(table);

// Здесь мы могли бы вызвать SureMinimum, чтобы создать для нас строки и ячейки. Этот метод используется
// чтобы убедиться, что указанный узел действителен. В этом случае допустимая таблица должна иметь хотя бы одну строку и одну ячейку.

// Вместо этого мы создадим строку и таблицу самостоятельно.
// Это был бы лучший способ сделать это, если бы мы создавали таблицу внутри алгоритма.
Row row = new Row(doc);
row.getRowFormat().setAllowBreakAcrossPages(true);
table.appendChild(row);

// Теперь мы можем применить любые настройки автоподбора.
table.autoFit(AutoFitBehavior.FIXED_COLUMN_WIDTHS);

Cell cell = new Cell(doc);
cell.getCellFormat().getShading().setBackgroundPatternColor(Color.BLUE);
cell.getCellFormat().setWidth(80.0);
cell.appendChild(new Paragraph(doc));
cell.getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 1 Text"));

row.appendChild(cell);

// Затем мы повторим процесс для других ячеек и строк таблицы.
// Мы также можем ускорить процесс, клонируя существующие ячейки и строки.
row.appendChild(cell.deepClone(false));
row.getLastCell().appendChild(new Paragraph(doc));
row.getLastCell().getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 2 Text"));

// Сохранить документ.
doc.save("table.docx");

Вставка вложенной таблицы в документы Word

Также может быть случай, когда вам нужно создать вложенную таблицу, которая находится внутри ячейки родительской таблицы. Вы можете сделать это, не проходя сложный процесс. Сначала создайте родительскую таблицу, а затем вызовите метод DocumentBuilder.moveTo(Cell.getFirstParagraph()), чтобы переместить элемент управления внутри нужной ячейки родительской таблицы. После этого таким же образом создайте новую таблицу.

В следующем фрагменте кода показано, как создать вложенную таблицу в документе Word с помощью Java.

// Создайте или загрузите документ.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Вставить ячейку.
Cell cell = builder.insertCell();
builder.writeln("Outer Table Cell 1");

builder.insertCell();
builder.writeln("Outer Table Cell 2");

// Этот вызов важен для создания вложенной таблицы внутри первой таблицы. 
// Без этого вызова ячейки, вставленные ниже, будут добавлены во внешнюю таблицу.
builder.endTable();

// Перейдите к первой ячейке внешней таблицы.
builder.moveTo(cell.getFirstParagraph());

// Постройте внутреннюю таблицу.
builder.insertCell();
builder.writeln("Inner Table Cell 1");
builder.insertCell();
builder.writeln("Inner Table Cell 2");
builder.endTable();

// Сохранить документ.
doc.save("table.docx");

Ниже приведен снимок экрана вложенной таблицы, которую мы создали выше.

Nested Table in a Word Document

Создайте таблицу Word из HTML в Java

Вы также можете создать таблицу в документе Word, используя строку HTML, и вот шаги, которые необходимо выполнить.

  • Создайте объект класса Document, чтобы загрузить или создать документ Word.
  • Создайте объект класса DocumentBuilder.
  • Вставьте HTML-строку таблицы в документ с помощью метода DocumentBuilder.insertHtml(String).
  • Наконец, сохраните документ, используя метод Document.save().

Ниже приведен фрагмент кода для создания таблицы Word из строки HTML.

// Создайте или загрузите документ.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Обратите внимание, что AutoFitSettings не применяется к таблицам, вставленным из HTML.
builder.insertHtml("<table>" +
                   "<tr>" +
                   "<td>Row 1, Cell 1</td>" +
                   "<td>Row 1, Cell 2</td>" +
                   "</tr>" +
                   "<tr>" +
                   "<td>Row 2, Cell 2</td>" +
                   "<td>Row 2, Cell 2</td>" +
                   "</tr>" +
                   "</table>");

// Сохранить документ.
doc.save("table.docx");

Получите бесплатную лицензию

Вы можете получить временную лицензию на использование Aspose.Words for Java без ограничений ознакомительной версии.

Заключение

В этой записи блога мы рассмотрели, как создавать таблицы в документах Word с помощью Java. Вы видели, как создать таблицу с помощью построителя документов или DOM, создать вложенную таблицу и создать таблицу из строки HTML. Установив библиотеку и следуя инструкциям, вы сможете легко интегрировать функцию создания таблиц в свое Java-приложение.

Aspose.Words for Java предоставляет множество других функций и возможностей форматирования, позволяющих с легкостью создавать насыщенные и сложные документы. Чтобы узнать больше об Aspose.Words for Java, изучите его обширную документацию и примеры. Если у вас возникнут вопросы, задайте их нам на форум.

Смотрите также