створювати таблиці в документах 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);

// Тут ми можемо викликати EnsureMinimum, щоб створити для нас рядки та клітинки. Цей спосіб використовується
// щоб переконатися, що вказаний вузол дійсний. У цьому випадку дійсна таблиця повинна мати принаймні один рядок і одну клітинку.

// Замість цього ми створимо рядок і таблицю самостійно.
// Це був би найкращий спосіб зробити це, якби ми створювали таблицю всередині алгоритму.
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

Вкладена таблиця в документі Word

Створіть таблицю 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, перегляньте його велику документацію та приклади. У разі будь-яких запитань, не соромтеся повідомити нас через наш форум.

Дивись також