Word 文档中的表格是一种强大的工具,可用于以清晰且结构化的格式组织和呈现数据。表格由行和列组成,行和列相交形成可包含文本、数字、图像或其他元素的单元格。在本文中,我们将学习如何使用 C# 以编程方式在 Word 文档中创建表格。本文通过代码示例展示了在 DOCX 文件中创建表格的各种方法。
本文涵盖以下主题:
在 Word 文档中创建表格的 C# 库
为了处理 Word 文档中的表格,我们将使用 Aspose.Words for .NET 库。这是一个强大的库,可让您直接在 .NET 应用程序中以编程方式动态创建和操作 Word 文档。
PM> Install-Package Aspose.Words
使用 C# 在 Word 文档中创建表格
有两种方法可以使用 Aspose.Words for .NET 在 Word 文档中创建表格:
- 使用 DocumentBuilder 类
- 使用 DOM(文档对象模型)
您可以选择最适合您需求的方法。让我们详细探讨每种方法。
使用 DocumentBuilder 创建表
DocumentBuilder 类可以高效、轻松地从头开始创建动态文档或修改现有文档。借助其全面的功能,我们可以无缝插入各种内容元素,包括文本、复选框、OLE 对象、段落、列表、表格、图像等等。
请按照以下步骤使用 DocumentBuilder 类在 Word 文档中创建表格。
- 创建 Document 类的对象。
- 创建 DocumentBuilder 类的对象。
- 使用 StartTable() 方法创建一个新表。
- 使用 InsertCell() 方法插入一个单元格。
- 使用 Write() 方法将文本插入单元格。
- 根据需要重复插入单元格并将文本插入单元格。
- 使用 EndRow() 方法结束一行。
- 使用 EndTable() 方法结束表。
- 最后,使用Save()方法保存Word文档。
以下代码示例展示如何使用 C# 在 Word 文档中创建表格。
// 此代码示例演示如何使用 C# 在 Word 文档中创建表格
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// 开始建表。
builder.StartTable();
builder.InsertCell();
builder.Write("Row 1, Cell 1 Content.");
// 构建第二个单元格。
builder.InsertCell();
builder.Write("Row 1, Cell 2 Content.");
// 调用以下方法来结束该行并开始新行。
builder.EndRow();
// 构建第二行的第一个单元格。
builder.InsertCell();
builder.Write("Row 2, Cell 1 Content");
// 构建第二个单元格。
builder.InsertCell();
builder.Write("Row 2, Cell 2 Content.");
builder.EndRow();
// 表示我们已经完成了表格的构建。
builder.EndTable();
doc.Save("CreateSimpleTable.docx");
使用文档对象模型 (DOM) 创建表格
文档对象模型 (DOM) 是 Word 文档的内存表示形式。它允许通过编程方式读取、操作和修改 Word 文档的内容和格式。
请按照以下步骤使用 DOM 在 Word 文档中创建表格。
- 创建 Document 类的对象。
- 使用 Table() 类创建一个新表。
- 使用 AppendChild() 方法将表格添加到文档主体。
- 创建 Row 类的对象并使用 Table.AppendChild(Row) 方法将其插入表中。
- 创建 Cell 类的对象,设置格式选项,并向单元格添加文本。
- 使用 Row.AppendChild(Cell) 方法将单元格插入到行中。
- 之后,根据需要重复该过程以获得尽可能多的行。
- 最后,使用Save()方法保存Word文档。
以下代码示例展示如何使用 C# 在 Word 文档中创建表格。
// 此代码示例演示如何使用 C# 中的 DOM 在 Word 文档中创建表格
Document doc = new Document();
// 我们首先创建表对象。请注意,我们必须传递文档对象
// 到每个节点的构造函数。这是因为我们创建的每个节点都必须属于
// 到某些文件。
Table table = new Table(doc);
doc.FirstSection.Body.AppendChild(table);
// 这里我们可以调用 EnsureMinimum 来为我们创建行和单元格。此方法用于
// 确保指定节点有效。在这种情况下,有效表格应至少包含一行和一个单元格。
// 相反,我们将自己处理行和表的创建。
// 如果我们在算法内部创建一个表,这将是最好的方法。
Row row = new Row(doc);
row.RowFormat.AllowBreakAcrossPages = true;
table.AppendChild(row);
// 我们现在可以应用任何自动适应设置。
table.AutoFit(AutoFitBehavior.FixedColumnWidths);
Cell cell = new Cell(doc);
cell.CellFormat.Shading.BackgroundPatternColor = Color.LightBlue;
cell.CellFormat.Width = 80;
cell.AppendChild(new Paragraph(doc));
cell.FirstParagraph.AppendChild(new Run(doc, "Row 1, Cell 1 Text"));
// 追加单元格
row.AppendChild(cell);
// 然后我们将对表格中的其他单元格和行重复该过程。
// 我们还可以通过克隆现有的单元格和行来加快速度。
row.AppendChild(cell.Clone(false));
row.LastCell.AppendChild(new Paragraph(doc));
row.LastCell.FirstParagraph.AppendChild(new Run(doc, "Row 1, Cell 2 Text"));
// 保存文档
doc.Save("InsertTableDirectly.docx");
使用 C# 在 Word 文档中创建嵌套表格
我们还可以在表格的单元格内创建新表格。以下是在 Word 文档中创建嵌套表格的步骤。
- 创建 Document 类的对象。
- 创建 DocumentBuilder 类的对象。
- 使用 StartTable() 方法创建一个表并获取对象中对该表的引用。
- 使用 InsertCell() 方法插入一个单元格并获取对象中对该单元格的引用。
- 使用 DocumentBuilder.Write() 方法将文本插入单元格。
- 根据需要重复插入单元格并将文本插入单元格。
- 插入所有行后结束表格。
- 使用 MoveTo(cell.FirstParagraph) 方法将控制权移至所需单元格内。
- 通过插入单元格来创建另一个表格,完成后结束表格。 10.最后,使用Save()方法保存Word文档。
以下代码示例展示如何使用 C# 在 Word 文档中创建嵌套表格。
// 此代码示例演示如何使用 C# 在 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.FirstParagraph);
// 构建内表。
builder.InsertCell();
builder.Writeln("Inner Table Cell 1");
builder.InsertCell();
builder.Writeln("Inner Table Cell 2");
builder.EndTable();
// 保存文档
doc.Save("NestedTable.docx");
使用 C# 克隆 Word 文档中的现有表格
我们可以按照以下步骤克隆Word文档中现有的表格:
- 使用 Document 类加载带有表的现有文档。
- 使用 GetChild(NodeType.TABLE, int, boolean) 方法获取对象中的表。
- 使用 Table.Clone(True) 方法克隆表。
- 使用 Table.ParentNode.InsertAfter() 方法插入克隆表。
- 使用 Table.ParentNode.InsertAfter(new Paragraph(Document), Table) 方法在表格之间插入一个空段落。
- 最后,使用Save()方法保存Word文档。
以下代码示例展示如何使用 C# 克隆 Word 文档中的表格。
// 此代码示例演示如何使用 C# 克隆 Word 文档中的现有表格
Document doc = new Document("Tables.docx");
Table table = (Table) doc.GetChild(NodeType.Table, 0, true);
// 克隆该表格并将其插入到原始文档之后。
Table tableClone = (Table) table.Clone(true);
table.ParentNode.InsertAfter(tableClone, table);
// 在两个表格之间插入一个空段落,
// 否则,在保存时它们将被合并为一个,这与文档验证有关。
table.ParentNode.InsertAfter(new Paragraph(doc), table);
doc.Save("CloneCompleteTable.docx");
通过 HTML 在 Word 文档中创建表格
我们还可以按照以下步骤使用 HTML 字符串在 Word 文档中创建表格:
- 创建 Document 类的对象。
- 创建 DocumentBuilder 类的对象。
- 使用 DocumentBuilder.InsertHtml(String) 方法将表的 HTML 字符串插入文档。
- 最后,使用 Document.Save() 方法保存文档。
以下代码示例显示如何使用 C# 在 Word 文档中插入 HTML 表格。
// 此代码示例演示如何使用 C# 在 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("InsertTableFromHtml.docx");
获取免费 API 许可证
您可以获得临时许可证来使用 Aspose.Words for .NET,不受评估限制。
结论
在本文中,我们学习了如何使用 C# 在 Word 文档中创建表格。我们探索了使用 C# 以编程方式创建表格的各种方法。我们还了解了如何创建嵌套表格或动态克隆 Word 文档中的现有表格。此外,您可以使用 文档 了解更多信息并探索库的各种其他功能。如有任何疑问,请随时通过我们的 免费支持论坛 与我们联系。