
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");

使用 DocumentBuilder 建立表
使用文檔物件模型 (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");

使用文檔物件模型 (DOM) 建立表
使用 C# 在 Word 文件中建立巢狀表
我們也可以在表格的儲存格內建立一個新表格。以下是在 Word 文件中建立巢狀表格的步驟。
- 建立 Document 類別的物件。
- 建立 DocumentBuilder 類別的物件。
- 使用 StartTable() 方法建立一個表格並在物件中取得對該表的參考。
- 使用 InsertCell() 方法插入單元格並取得物件中單元格的參考。
- 使用 DocumentBuilder.Write() 方法將文字插入儲存格。
- 根據需要重複將儲存格和文字插入到儲存格中。
- 插入所有行後結束表。
- 使用 MoveTo(cell.FirstParagraph) 方法將控制項移至所需儲存格內。
- 透過插入儲存格建立另一個表格,完成後結束表格。
- 最後,使用 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 文件中建立巢狀表
在 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");

在 C# 中複製 Word 文件中的現有表
從 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");

從 HTML 在 Word 文件中建立表格
取得免費的 API 許可證
您可以獲得臨時許可證來使用 Aspose.Words for .NET,而不受評估限制。
結論
在本文中,我們學習如何使用 C# 在 Word 文件中建立表格。我們探索了使用 C# 以程式設計方式建立表格的各種方法。我們也了解如何動態建立巢狀表格或複製 Word 文件中的現有表格。此外,您可以使用文件了解更多並探索該庫的各種其他功能。如有任何疑問,請隨時透過我們的免費支援論壇與我們聯繫。