Word 文档中的表格是一种强大的工具,可用于以清晰、结构化的格式组织和呈现数据。表格由行和列组成,行和列相交形成可包含文本、数字、图像或其他元素的单元格。在本文中,我们将学习如何使用 C# 以编程方式在 Word 文档中创建表格。本文通过代码示例展示了在DOCX文件中创建表格的各种方法。
Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。
Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。
Aspose.words for.net下载 Aspose.words for for java下载
在 Word 文档中创建表格的 C# 库
为了处理 Word 文档中的表格,我们将使用Aspose.Words for .NET库。这是一个强大的库,可让您直接在 .NET 应用程序中以编程方式动态创建和操作 Word 文档。
请使用以下命令下载 DLL或从NuGet安装它:
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 文档中创建表格。
// This code example demonstrates how to create a table in a Word document using C# Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); // Start building the table. builder.StartTable(); builder.InsertCell(); builder.Write("Row 1, Cell 1 Content."); // Build the second cell. builder.InsertCell(); builder.Write("Row 1, Cell 2 Content."); // Call the following method to end the row and start a new row. builder.EndRow(); // Build the first cell of the second row. builder.InsertCell(); builder.Write("Row 2, Cell 1 Content"); // Build the second cell. builder.InsertCell(); builder.Write("Row 2, Cell 2 Content."); builder.EndRow(); // Signal that we have finished building the table. 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 文档中创建表格。
// This code example demonstrates how to create a table in a Word document using DOM in C# Document doc = new Document(); // We start by creating the table object. Note that we must pass the document object // to the constructor of each node. This is because every node we create must belong // to some document. Table table = new Table(doc); doc.FirstSection.Body.AppendChild(table); // Here we could call EnsureMinimum to create the rows and cells for us. This method is used // to ensure that the specified node is valid. In this case, a valid table should have at least one Row and one cell. // Instead, we will handle creating the row and table ourselves. // This would be the best way to do this if we were creating a table inside an algorithm. Row row = new Row(doc); row.RowFormat.AllowBreakAcrossPages = true; table.AppendChild(row); // We can now apply any auto fit settings. 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")); // Append a cell row.AppendChild(cell); // We would then repeat the process for the other cells and rows in the table. // We can also speed things up by cloning existing cells and rows. row.AppendChild(cell.Clone(false)); row.LastCell.AppendChild(new Paragraph(doc)); row.LastCell.FirstParagraph.AppendChild(new Run(doc, "Row 1, Cell 2 Text")); // Save the document doc.Save("InsertTableDirectly.docx");
使用 C# 在 Word 文档中创建嵌套表格
我们还可以在表格的单元格内创建新表格。以下是在 Word 文档中创建嵌套表格的步骤。
- 创建Document类的对象。
- 创建DocumentBuilder类的对象。
- 使用StartTable()方法创建一个表并获取对象中对该表的引用。
- 使用InsertCell()方法插入一个单元格并获取对象中对该单元格的引用。
- 使用DocumentBuilder.Write()方法将文本插入单元格。
- 根据需要重复插入单元格并将文本插入单元格。
- 插入所有行后结束表格。
- 使用MoveTo(cell.FirstParagraph)方法将控制权移至所需单元格内。
- 通过插入单元格来创建另一个表格,完成后结束表格。
- 最后,使用Save()方法保存Word文档。
以下代码示例展示如何使用 C# 在 Word 文档中创建嵌套表格。
// This code example demonstrates how to create a nested table in a Word document using C# 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"); // This call is important to create a nested table within the first table. // Without this call, the cells inserted below will be appended to the outer table. builder.EndTable(); // Move to the first cell of the outer table. builder.MoveTo(cell.FirstParagraph); // Build the inner table. builder.InsertCell(); builder.Writeln("Inner Table Cell 1"); builder.InsertCell(); builder.Writeln("Inner Table Cell 2"); builder.EndTable(); // Save the document 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 文档中的表格。
// This code example demonstrates how to clone an existing table in a Word document using C# Document doc = new Document("Tables.docx"); Table table = (Table) doc.GetChild(NodeType.Table, 0, true); // Clone the table and insert it into the document after the original. Table tableClone = (Table) table.Clone(true); table.ParentNode.InsertAfter(tableClone, table); // Insert an empty paragraph between the two tables, // or else they will be combined into one upon saving this has to do with document validation. 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 表格。
// This code example demonstrates how to insert an HTML table in a Word document using C# Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); // Note that AutoFitSettings does not apply to tables inserted from 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");
在本文中,我们学习了如何使用 C# 在 Word 文档中创建表格。我们探索了使用 C# 以编程方式创建表格的各种方法。我们还了解了如何创建嵌套表格或动态克隆 Word 文档中的现有表格。