Aspose.Words文档对象模型的表格由独立行和单元格组成,那样可以方便地实现加入或划分表格。为了可以操作表格来与另外表格进行拆分与添加,我们只需要将一个表的行移动到另一个表里面即可。
两张表结合为一张表:
注意:第二张表的行被转移到第一张表的末尾并且第二张表会被删除。
代码如下:
C# // Load the document. Document doc = new Document(MyDir + "Table.Document.doc"); // Get the first and second table in the document. // The rows from the second table will be appended to the end of the first table. Table firstTable = (Table)doc.GetChild(NodeType.Table, 0, true); Table secondTable = (Table)doc.GetChild(NodeType.Table, 1, true); // Append all rows from the current table to the next. // Due to the design of tables even tables with different cell count and widths can be joined into one table. while (secondTable.HasChildNodes) firstTable.Rows.Add(secondTable.FirstRow); // Remove the empty table container. secondTable.Remove(); doc.Save(MyDir + "Table.CombineTables Out.doc");
Visual Basic ' Load the document. Dim doc As New Document(MyDir & "Table.Document.doc") ' Get the first and second table in the document. ' The rows from the second table will be appended to the end of the first table. Dim firstTable As Table = CType(doc.GetChild(NodeType.Table, 0, True), Table) Dim secondTable As Table = CType(doc.GetChild(NodeType.Table, 1, True), Table) ' Append all rows from the current table to the next. ' Due to the design of tables even tables with different cell count and widths can be joined into one table. Do While secondTable.HasChildNodes firstTable.Rows.Add(secondTable.FirstRow) Loop ' Remove the empty table container. secondTable.Remove() doc.Save(MyDir & "Table.CombineTables Out.doc")
拆分一张表为两张独立表:
注意:我们首先需要选择一个在哪儿分割表的行。一旦我们知道这个地方,遵循这些简单的步骤我们可以从原始表创建两张表:
1.创建一个复制的表,然后从原始表移动行并且插入进这张表。
2.从指定的行所有后续行移动到第二张表。
C# // Load the document. Document doc = new Document(MyDir + "Table.SimpleTable.doc"); // Get the first table in the document. Table firstTable = (Table)doc.GetChild(NodeType.Table, 0, true); // We will split the table at the third row (inclusive). Row row = firstTable.Rows[2]; // Create a new container for the split table. Table table = (Table)firstTable.Clone(false); // Insert the container after the original. firstTable.ParentNode.InsertAfter(table, firstTable); // Add a buffer paragraph to ensure the tables stay apart. firstTable.ParentNode.InsertAfter(new Paragraph(doc), firstTable); Row currentRow; do { currentRow = firstTable.LastRow; table.PrependChild(currentRow); } while ( currentRow != row); doc.Save(MyDir + "Table.SplitTable Out.doc");
Visual Basic ' Load the document. Dim doc As New Document(MyDir & "Table.SimpleTable.doc") ' Get the first table in the document. Dim firstTable As Table = CType(doc.GetChild(NodeType.Table, 0, True), Table) ' We will split the table at the third row (inclusive). Dim row As Row = firstTable.Rows(2) ' Create a new container for the split table. Dim table As Table = CType(firstTable.Clone(False), Table) ' Insert the container after the original. firstTable.ParentNode.InsertAfter(table, firstTable) ' Add a buffer paragraph to ensure the tables stay apart. firstTable.ParentNode.InsertAfter(New Paragraph(doc), firstTable) Dim currentRow As Row Do currentRow = firstTable.LastRow table.PrependChild(currentRow) Loop While currentRow IsNot row doc.Save(MyDir & "Table.SplitTable Out.doc")
了解更多Aspose文档管理产品 Aspose技术交流群(761297826)