Microsoft Word — популярный текстовый редактор, используемый для создания различных типов документов. Эти документы могут содержать элементы нескольких типов, включая текст, изображения, таблицы и диаграммы. Когда дело доходит до автоматизации создания и обработки документов в Java, вам может понадобиться простое решение для создания таблиц в документах Word. Итак, в этом сообщении блога мы рассмотрим, как создавать таблицы в документах Word в приложении Java.
- Библиотека Java для создания таблиц в документах Word
- Создать таблицу в документе Word
- Вставка вложенной таблицы в документы Word
- Создать таблицу из HTML
Библиотека 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");
Ниже приведен снимок экрана таблицы, которую мы создали с использованием приведенного выше примера кода.
Создать таблицу, используя 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");
Ниже приведен снимок экрана вложенной таблицы, которую мы создали выше.
Создайте таблицу 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, изучите его обширную документацию и примеры. Если у вас возникнут вопросы, задайте их нам на форум.