在C#中將DataTable插入到Word文檔中

作為 .NET 開發人員,您必須經常處理 DataTable 對象。特別是當您需要從數據庫或 XML/JSON 文件導入或導出數據時。在以編程方式生成文檔時,您可能需要將 DataTable 對像中的數據直接插入到 Word 文檔中的表中。對於這種情況,讓我為您提供一個完美且最簡單的解決方案,用於在 C# 中將 DataTable 中的數據插入到 Word 文檔中。

用於在 Word DOC 中插入數據表的 C# 庫 - 免費下載

要將數據從 DataTable 對象導入到 Word 文檔中,我們將使用 Aspose.Words for .NET。它是一個功能豐富的庫,可讓您創建和處理 MS Word 文檔。您可以下載其 DLL 或從 NuGet 安裝它。

下載動態鏈接庫

通過 NuGet 安裝

PM> Install-Package Aspose.Words

C# 將 DataTable 插入 Word 文檔 - 步驟

以下是我們從 DataTable 檢索數據並將其插入到 Word 文檔中所遵循的步驟。

  • 將數據庫或數據文件中的數據加載到 DataTable 對像中。
  • 創建一個新的 Word 文檔並向其中添加一個新表格。
  • 遍歷 DataTable 中的行並將每一行插入 Word 的表中。

就是這樣。

現在讓我們看看如何將這些步驟轉換為 C# 代碼並將 DataTable 導入 Word 文檔。

在 C# 中將 DataTable 中的數據插入 Word DOC

首先,我們將編寫一個方法,該方法接受用於構建文檔的 DocumentBuilder、具有數據的 DataTable 以及用於啟用/禁用導入列標題的附加參數。此外,它返回 Table 對象。

以下是該方法的工作流程。

  • 創建一個新表並將其引用獲取到 Table 對像中。
  • 根據DataTable中的列向表中插入列。
  • 如果第一行用於標題,則設置字體粗細。
  • 循環遍歷 DataTable.Rows 集合中的每個 DataRow
  • 為每個值插入一個新單元格並相應地設置數據類型。
  • 返回表對象。

下面是在C#中將DataTable中的數據導入Word文檔中的表格的方法的實現。

///<summary>
/// 將指定 DataTable 中的內容導入到新的 Aspose.Words Table 對像中。 
/// 表格插入到文檔構建器的當前位置,並使用當前構建器的格式(如果已定義)。
///</summary>
public static Table ImportTableFromDataTable(DocumentBuilder builder, DataTable dataTable, bool importColumnHeadings)
{
    Table table = builder.StartTable();

    // 檢查數據源中的列名稱是否要包含在標題行中。
    if (importColumnHeadings)
    {
        // 在更改它們之前存儲這些屬性的原始值。
        bool boldValue = builder.Font.Bold;
        ParagraphAlignment paragraphAlignmentValue = builder.ParagraphFormat.Alignment;

        // 使用適當的屬性格式化標題行。
        builder.Font.Bold = true;
        builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

        // 創建一個新行並將每列的名稱插入表的第一行。
        foreach (DataColumn column in dataTable.Columns)
        {
            builder.InsertCell();
            builder.Writeln(column.ColumnName);
        }

        builder.EndRow();

        // 恢復原來的格式。
        builder.Font.Bold = boldValue;
        builder.ParagraphFormat.Alignment = paragraphAlignmentValue;
    }

    foreach (DataRow dataRow in dataTable.Rows)
    {
        foreach (object item in dataRow.ItemArray)
        {
            // 為每個對象插入一個新單元格。
            builder.InsertCell();

            switch (item.GetType().Name)
            {
                case "DateTime":
                    // 為日期和時間定義自定義格式。
                    DateTime dateTime = (DateTime)item;
                    builder.Write(dateTime.ToString("MMMM d, yyyy"));
                    break;
                default:
                    // 默認情況下,任何其他項目都將作為文本插入。
                    builder.Write(item.ToString());
                    break;
            }

        }

        // 插入當前記錄中的所有數據後,我們可以結束表行。
        builder.EndRow();
    }

    // 我們已經完成從 DataTable 中插入所有數據,我們可以結束表。
    builder.EndTable();

    return table;
}

現在,是時候調用此方法並將 DataTable 插入到 Word 文檔中了。

C#中將DataTable導入Word文檔

以下是在 C# 中將 DataTable 中的數據導入 Word 文檔的步驟。

  • 使用 Document 類創建一個新的 Word 文檔(或加載現有文檔)。
  • 從數據庫/文件中讀取數據到 DataTable 對像中。
  • 調用我們在上一節中編寫的方法並獲取返回的 Table。
  • 設置表格的格式。
  • 使用 Document.Save() 方法保存 Word 文件。

下面的代碼示例演示如何在 C# 中將 DataTable 插入到 Word 文檔中。

// 創建一個新文檔。
Document doc = new Document();

// 我們可以定位我們想要插入表格的位置,還可以指定任何額外的格式
// 也應用到表上。
DocumentBuilder builder = new DocumentBuilder(doc);

// 我們希望旋轉頁面橫向,因為我們希望有一個寬表。
doc.FirstSection.PageSetup.Orientation = Orientation.Landscape;

DataSet ds = new DataSet();
ds.ReadXml("Employees.xml");

// 從存儲為 DataTable 的數據源中檢索數據。
DataTable dataTable = ds.Tables[0];

// 從 DataTable 中包含的數據在文檔中構建一個表。
Table table = ImportTableFromDataTable(builder, dataTable, true);

// 我們可以應用表格樣式作為將格式應用於整個表格的一種非常快速的方法。
table.StyleIdentifier = StyleIdentifier.MediumList2Accent1;
table.StyleOptions = TableStyleOptions.FirstRow | TableStyleOptions.RowBands | TableStyleOptions.LastColumn;

// 對於我們的表格,我們要刪除圖像列的標題。
table.FirstRow.LastCell.RemoveAllChildren();

// 保存輸出文檔。
doc.Save("Table.docx");

C# DataTable 到 Word 導入程序庫 - 獲取免費許可證

您可以獲得 免費臨時許可證 以在沒有評估限制的情況下使用 Aspose.Words for .NET。

結論

在本文中,您學習瞭如何使用 C# 將 DataTable 中的數據插入到 Word 文檔中。您可以輕鬆地將代碼示例集成到您的應用程序中,並使用 DataTable 將數據直接從數據庫/XML/JSON 導入到 Word 文檔中。

.NET Word 庫 - 閱讀更多

您可以訪問 Aspose.Words for .NET 的文檔來探索有關該庫的更多信息。如果您有任何疑問,請隨時通過我們的 論壇 告訴我們。

也可以看看