使用Java在Word文档中创建表格

Microsoft Word 是一种流行的文字处理应用程序,用于创建各种类型的文档。这些文档可能包含多种类型的元素,包括文本、图像、表格和图表。当涉及到用 Java 自动创建和操作文档时,您可能需要一个轻松的解决方案来在 Word 文档中创建表格。因此,在这篇博文中,我们将探讨如何在 Java 应用程序中在 Word 文档中创建表格。

在 Word 文档中创建表格的 Java 库

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>

用Java在Word文档中创建表格

使用 Aspose.Words for Java 在 Word 文档中创建表格有两种方法:

  • 使用文档生成器
  • 使用 DOM(文档对象模型)

您可以选择最适合您要求的方法。那么让我们详细探讨一下这些方法。

使用 DocumentBuilder 创建表

DocumentBuilder 类为您提供了一种快速、简单的方法来从头开始创建动态文档或处理现有文档。它提供了一系列用于插入各种内容元素的功能,例如文本、复选框、OLE 对象、段落、列表、表格、图像等。

以下是在Java中使用DocumentBuilder类在Word文档中创建表格的步骤。

  • 创建Document类的对象来加载或创建Word文档。
  • 创建 DocumentBuilder 类的对象。
  • 使用 DocumentBuilder.startTable() 方法启动一个表。
  • 使用 DocumentBuilder.insertCell() 方法插入单元格。
  • (可选)对单元格应用格式设置,例如字体和对齐方式。
  • 使用 DocumentBuilder.write() 方法将文本插入单元格。
  • 根据需要重复将单元格和文本插入到单元格中。
  • 使用 DocumentBuilder.endRow() 方法完成插入单元格时结束一行。
  • 使用 DocumentBuilder.endTable() 方法插入所有行时结束表。
  • 使用 Document.save() 方法保存 Word 文档。

以下代码片段展示了如何使用 Java 在 Word 文档中创建表格。

// 创建或加载文档。
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 文档的内容和格式。以下步骤演示如何使用 DOM 在 Word 文档中创建表格。

  • 创建Document类的对象来加载或创建Word文档。
  • 创建 Table 类的对象,并使用 Document.getFirstSection().getBody().appendChild(Table) 方法将表格插入到文档中。
  • 创建 Row 类的对象并使用 Table.appendChild(Row) 方法将其插入表中。
  • 创建 Cell 类的对象,设置格式选项并向单元格添加文本。
  • 使用 Row.appendChild(Cell) 方法将单元格插入行中。
  • 对所需数量的行重复此过程。
  • 使用 Document.save() 方法保存 Word 文档。

以下代码片段展示了如何使用 Java 在 Word 文档中创建表格。

// 创建或加载文档。
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()) 方法将控件移动到父表的所需单元格内。完成后,以同样的方式创建一个新表。

以下代码片段展示了如何使用 Java 在 Word 文档中创建嵌套表格。

// 创建或加载文档。
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

在 Java 中从 HTML 创建 Word 表

您还可以使用 HTML 字符串在 Word 文档中创建表格,以下是要遵循的步骤。

  • 创建Document类的对象来加载或创建Word文档。
  • 创建 DocumentBuilder 类的对象。
  • 使用 DocumentBuilder.insertHtml(String) 方法将表的 HTML 字符串插入到文档中。
  • 最后,使用 Document.save() 方法保存文档。

下面是从 HTML 字符串生成 Word 表格的代码片段。

// 创建或加载文档。
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,而不受评估限制。

结论

在这篇博文中,我们探讨了如何使用 Java 在 Word 文档中创建表格。您已经了解了如何使用文档生成器或 DOM 创建表格、创建嵌套表格以及从 HTML 字符串创建表格。通过安装该库并遵循指南,您可以轻松地将表创建功能集成到您的 Java 应用程序中。

Aspose.Words for Java 提供了许多其他功能和格式选项,使您可以轻松创建丰富而复杂的文档。要了解有关 Aspose.Words for Java 的更多信息,请浏览其广泛的文档示例。如有任何疑问,请随时通过我们的论坛告诉我们。

也可以看看