跳過到頁腳內容
使用 IRONXL
如何將數據表轉換為Excel文件

在 C# 中將 DataTable 導出到 Excel(代碼範例教程)

編程方式更改 Excel 試算表可能很困難,主要有兩個原因。 首先,當處理試算表時,使用者必須保持一致的界面和文件結構,這並不總是那麼簡單。 其次,不總是清楚哪些代碼會在特定情況下有效,特別是當涉及到複雜計算時。 以編程方式創建 Excel 文件有許多困難的原因。 程式設計師首先必須將 Excel 文件中的數據轉換成可讀格式,然後解析這些數據並再次解析,這更加困難。 我已想出解決這個問題的方法。 我將教你如何使用 IronXL .NET Excel 庫創建 Excel 文件並以編程方式將 DataTable 匯出到 Excel 表中而無需任何問題。 讓我們開始吧:

class="hsg-featured-snippet">

如何在 C# 中將 DataTable 匯出到 Excel

  1. 安裝 C# 庫以匯出 DataTable 到 Excel
  2. 創建新的 Excel 工作簿並訪問工作表
  3. 遍歷 C# 中 DataTableDataRow
  4. 訪問 Cell 中的 Value 屬性,並使用 DataRow 中的數據填充工作表
  5. 將 Excel 試算表匯出到所需位置

IronXL 功能

  • IronXL runs on a variety of Operating Systems, including Windows, Linux, and macOS.
  • 幾乎所有 .NET Framework 都支持 IronXL,包括控制台、Windows Forms 應用程序和 Web 應用程序
  • IronXL 使閱讀 Excel 文件簡單易行。
  • We can load, edit, export Datatables, export datasets, and read Excel file formats such as XLSX files, XLS, CSV, TSV, XLST, XLSM files, and more with IronXL.
  • IronXL 允許我們保存和匯出文件,可選擇多種擴展名,包括 XLS、CSV、TSV、JSON、XLSX 等。
  • 可由 IronXL 創建Excel 公式
  • IronXL 支持文本、數字、公式、日期、幣種、百分比及其他Excel 單元格數據格式
  • 它還提供多種排序選項,如區域、列和行等。
  • IronXL 中的單元格樣式包括字體、大小、背景圖案、邊框和對齊等。
  • 我們可以使用 IronXL 讀取和匯出 Excel 文件中的數據。
  • IronXL 不需要服務器上安裝 Excel 或 Interop。 IronXL API 比 Microsoft Office、Interop 和 Excel 更快且更易於使用。

1 在 Visual Studio 中創建新項目

要使用 IronXL 庫,我們必須在 Visual Studio 中創建一個 .NET 項目。 您可以使用任何版本的 Visual Studio,但建議使用最新版本。 您可以根據需求創建 Windows Forms 應用程序或不同的項目模板等應用程序。 為簡單起見,我將在本教程中使用控制台應用程式。

如何在 C# 中匯出巨大數據從 Datatable 到 Excel,圖 1:在 Visual Studio 中創建新項目 UI 在 Visual Studio 中創建新項目 UI

接下來,輸入項目名稱和項目的位置。

如何在 C# 中匯出巨大數據從 Datatable 到 Excel,圖 2:創建新項目的配置步驟 創建新項目的配置步驟

接下來,選擇下面的框架。 在此項目中,我們將使用 .NET Core 6。

如何在 C# 中匯出巨大數據從 Datatable 到 Excel,圖 3:.Net 框架選擇 UI .Net 框架選擇 UI

應用程序創建解決方案後,將打開 program.cs 文件,您可以在此輸入代碼並構建/運行應用程序。

如何在 C# 中匯出巨大數據從 Datatable 到 Excel,圖 4:新項目中的空 program.cs 文件 新項目中的空 program.cs 文件

接下來,我們可以添加庫以測試代碼。

2 安裝 IronXL 庫

可以通過四種方式下載和安裝 IronXL 庫。

它們是:

  • 使用 Visual Studio
  • 使用 Visual Studio 命令行。
  • 從 NuGet 網站直接下載。
  • 從 IronXL 網站直接下載。

2.1 使用 Visual Studio

我們可以使用 NuGet Package Manager 安裝 IronXL 庫。 您必須先打開 NuGet Package Manager,然後在瀏覽選項卡中搜索 IronXL。 在搜索結果中選擇 IronXL 並安裝。 之後,我們的項目將可以使用 IronXL 庫。

以下截圖顯示了如何在 Visual Studio 中打開 NuGet Package Manager。

如何在 C# 中匯出巨大數據從 Datatable 到 Excel,圖 5:導航到 Visual Studio 中的 NuGet Package Manager 導航到 Visual Studio 中的 NuGet Package Manager

IronXL 在搜索結果中顯示:

如何在 C# 中匯出巨大數據從 Datatable 到 Excel,圖 6:尋找 IronXL 庫 尋找 IronXL 庫

2.2 使用 Visual Studio 命令列

許多人喜歡使用控制台來執行操作。 所以,我們也可以通過控制台安裝它。 按照以下步驟通過命令列安裝 IronXL。

  • 在 Visual Studio 中,轉到 工具-> NuGet Package Manager -> Package Manager Console
  • 在包管理控制台標籤中輸入以下行:
Install-Package IronXL.Excel

现在,包将下载/安装到当前项目并可供使用。

如何在 C# 中匯出巨大數據從 Datatable 到 Excel,圖 7:通過控制台安裝 IronXL 包 通過控制台安裝 IronXL 包

2.3 從 NuGet 網站直接下載

第三種方法是直接從網站下載 NuGet 包。

  • 導航到 NuGet 官方 IronXL 包頁面
  • 從右邊菜單中選擇下載包選項。
  • 雙擊下載的包。 它將自動安裝。
  • 接下來,重新加載解決方案並開始在項目中使用它。

2.4 從 IronXL 網站直接下載

點擊鏈接從網站直接下載最新包。下載後,按照以下步驟將包添加到項目中。

  • 右鍵單擊解決方案窗格中的項目。
  • 然後,選擇參考選項,並瀏覽下載參考的位址。
  • 接下來,點擊確定以添加參考。

3 使用 IronXL 將 Datatable 匯出到 Excel 文件

IronXL 允許我們輕鬆地將 DataTable 匯出到 Excel 文件中,只需有限的步驟。

首先,我們需要包括下面代碼截圖中 IronXL 的命名空間。 一旦添加後,我們就可以在代碼中使用 IronXL 的類和方法。

如何在 C# 中匯出巨大數據從 Datatable 到 Excel,圖 8:使用庫前包括 IronXL 的命名空間 使用庫前包括 namespace IronXL

IronXL 允許我們創建 Excel 文件並將其轉換為工作簿對象。 它們轉換為對象後,我們可以執行各種類型的操作。 在下面的示例代碼中,我們將 DataTable 轉換為 Excel 工作表,然後可以創建 Excel 文件。

using System;
using System.Data;
using IronXL;

public class ExcelExporter
{
    /// <summary>
    /// Exports a DataTable to an Excel file using IronXL.
    /// </summary>
    /// <param name="filePath">The file path where the Excel file will be saved.</param>
    public static void ExportToExcel(string filePath)
    {
        // Creating a DataTable with a single column
        DataTable table = new DataTable();
        table.Columns.Add("DataSet_Animal", typeof(string));

        // Adding some rows to the DataTable
        table.Rows.Add("Lion");
        table.Rows.Add("Tiger");
        table.Rows.Add("Cat");
        table.Rows.Add("Goat");
        table.Rows.Add("Panther");
        table.Rows.Add("Fox");
        table.Rows.Add("Cheetah");

        // Creating a new Excel Workbook
        WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);

        // Accessing the default worksheet
        WorkSheet ws = wb.DefaultWorkSheet;

        // Iterating through the DataTable rows
        int rowCount = 1;
        foreach (DataRow row in table.Rows)
        {
            // Adding each DataRow's first column value to the corresponding cell in the worksheet
            ws["A" + rowCount].Value = row[0].ToString();
            rowCount++;
        }

        // Saving the workbook to a CSV file at specified file path with ";" as delimiter
        wb.SaveAsCsv(filePath, ";");
    }
}
using System;
using System.Data;
using IronXL;

public class ExcelExporter
{
    /// <summary>
    /// Exports a DataTable to an Excel file using IronXL.
    /// </summary>
    /// <param name="filePath">The file path where the Excel file will be saved.</param>
    public static void ExportToExcel(string filePath)
    {
        // Creating a DataTable with a single column
        DataTable table = new DataTable();
        table.Columns.Add("DataSet_Animal", typeof(string));

        // Adding some rows to the DataTable
        table.Rows.Add("Lion");
        table.Rows.Add("Tiger");
        table.Rows.Add("Cat");
        table.Rows.Add("Goat");
        table.Rows.Add("Panther");
        table.Rows.Add("Fox");
        table.Rows.Add("Cheetah");

        // Creating a new Excel Workbook
        WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);

        // Accessing the default worksheet
        WorkSheet ws = wb.DefaultWorkSheet;

        // Iterating through the DataTable rows
        int rowCount = 1;
        foreach (DataRow row in table.Rows)
        {
            // Adding each DataRow's first column value to the corresponding cell in the worksheet
            ws["A" + rowCount].Value = row[0].ToString();
            rowCount++;
        }

        // Saving the workbook to a CSV file at specified file path with ";" as delimiter
        wb.SaveAsCsv(filePath, ";");
    }
}
Imports System
Imports System.Data
Imports IronXL

Public Class ExcelExporter
	''' <summary>
	''' Exports a DataTable to an Excel file using IronXL.
	''' </summary>
	''' <param name="filePath">The file path where the Excel file will be saved.</param>
	Public Shared Sub ExportToExcel(ByVal filePath As String)
		' Creating a DataTable with a single column
		Dim table As New DataTable()
		table.Columns.Add("DataSet_Animal", GetType(String))

		' Adding some rows to the DataTable
		table.Rows.Add("Lion")
		table.Rows.Add("Tiger")
		table.Rows.Add("Cat")
		table.Rows.Add("Goat")
		table.Rows.Add("Panther")
		table.Rows.Add("Fox")
		table.Rows.Add("Cheetah")

		' Creating a new Excel Workbook
		Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLS)

		' Accessing the default worksheet
		Dim ws As WorkSheet = wb.DefaultWorkSheet

		' Iterating through the DataTable rows
		Dim rowCount As Integer = 1
		For Each row As DataRow In table.Rows
			' Adding each DataRow's first column value to the corresponding cell in the worksheet
			ws("A" & rowCount).Value = row(0).ToString()
			rowCount += 1
		Next row

		' Saving the workbook to a CSV file at specified file path with ";" as delimiter
		wb.SaveAsCsv(filePath, ";")
	End Sub
End Class
$vbLabelText   $csharpLabel

在上面的代碼中,我們將 DataTable 匯出為 Excel 文件。首先,我們創建 DataTable,然後創建列標題。 創建列後,我們一行一行地添加行。 一旦添加行後,我們創建 WorkBook 對象。 通過使用該對象,我們可以將數據添加到 Excel 表中,然後將數據保存到位置。 我們正在創建一個 WorkSheet 對象,這允許創建一個工作表,然後可以將其添加到 WorkBook 對像。

我們使用 foreach 循環逐個讀取 DataTable 值,然後將值加到工作表中。 一旦所有值加到工作表中,我們然後使用稱為 SaveAsCsv 的方法將其保存到 CSV 文件中— 我們需要傳遞分隔符和帶節點名的文件名。 分隔符是可選參數,如果沒必要可以忽略。

如何在 C# 中匯出巨大數據從 Datatable 到 Excel,圖 9:在 Visual Studio 中完成的代碼 在 Visual Studio 中完成的代碼

以上是我們在 .NET Core 6 中使用的代碼完整截圖。

結果:

如何在 C# 中匯出巨大數據從 Datatable 到 Excel,圖 10:Microsoft Excel 中打開文件時的結果 Microsoft Excel 中打開文件時的結果

上面是執行代碼範例的結果。 在截圖中,DataTable 中所有可用的數據一一加到新創建的 Excel 表單中。

4 結論

IronXL 是最常用的 Excel 庫之一。 它不依賴於其他任何第三方庫。 它是獨立的,不需要安裝 MS Excel。 它多平台運行。 IronXL 的入門價格為 $799。 此外,它提供產品支持和更新的一年費用的選擇。 IronXL 提供免許可費的重分發報價,需額外付費。欲知更多價格詳情,請訪問我們的許可頁

常見問題解答

如何在 C# 中將 DataTable 匯出到 Excel 文件?

您可以使用 IronXL 的 WorkBook 和 WorkSheet 類將 DataTable 匯出到 Excel 文件中。創建一個 DataTable,遍歷其行,並通過 IronXL 的 API 來使用數據填充 Excel 文件。

使用 IronXL 進行 Excel 操作相較於 Interop 有什麼好處?

IronXL 比 Microsoft Interop 更快、更高效,不需要安裝 Microsoft Excel,並支持多個平台和文件格式。

IronXL 支援哪些 Excel 檔案格式?

IronXL 支持包括 XLSX、XLS、CSV、TSV、XLST 和 XLSM 在內的各種 Excel 文件格式,允許靈活的文件操作。

IronXL 可以在匯出數據時處理 Excel 公式嗎?

是的,IronXL 能夠處理 Excel 公式,確保在從 DataTable 匯出數據到 Excel 文件時保留複雜計算。

IronXL 兼容哪些操作系統?

IronXL 兼容多個操作系統,包括 Windows、Linux 和 macOS,允許跨平台開發。

使用 IronXL 是否需要安裝 Microsoft Excel?

不,IronXL 獨立於 Microsoft Excel 運行,允許您在服務器上不安裝 Excel 進行 Excel 文件操作。

如何在 C# 項目中安裝 IronXL?

您可以通過 Visual Studio 中的 NuGet 包管理器安裝 IronXL,使用命令行,或者直接從 NuGet 或 IronXL 網站下載。

IronXL 支持哪些 .NET 框架?

IronXL 支持多種 .NET 框架,包括控制台應用程序、Windows Forms 應用程序和 Web 應用程序,使其適用於各類項目。

IronXL 是否支持 Excel 文件中單元格的樣式和格式?

是的,IronXL 提供各種單元格樣式和格式選擇,例如設置字體樣式、顏色和邊框,增強 Excel 文件的外觀。

IronXL 如何簡化編程創建 Excel 文件的過程?

IronXL 通過提供易於使用的 API 來簡化過程,創建、修改和匯出 Excel 文件,免去其他方法所需的界面和結構維護的複雜性。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。