跳至頁尾內容
USING IRONXL

如何在 C# 中將 `DataTable` 匯出為 CSV 文件

IronXL 在 C# 中無需安裝 Microsoft Excel 即可實現 CSV 轉換。 這個獨立的 .NET 程式庫提供簡單的 API,可以自動將 DataTables 轉換為具有自定結構和分隔符號的 CSV 檔案,使資料匯出對開發者而言變得簡單。

IronXL 是一個受歡迎的程式庫,允許開發者使用 C# .NET 技術與Microsoft Excel 文件互動,包括 CSV 檔案,無需安裝 Microsoft Excel。 它可以自動將註冊型別轉換為 CSV 檔案,並以自定結構寫入 CSV 檔案。

IronXL 程式庫提供哪些功能?

可以使用 C# IronXL .NET 程式庫讀取轉換為 CSV 檔案Microsoft Excel 文件。 IronXL 是一個獨立的 .NET 軟體程式庫,可以讀取多種試算表格式。 它不依賴Microsoft.Office.Interop.Excel也不需要安裝 Microsoft Excel。

藉由 IronXL 使用者友好的 C# API,您可以快速在 .NET 環境中讀取、修改和建立 Excel 試算表檔案。 .NET Core、.NET Framework、Xamarin、Mobile、LinuxmacOSAzure 均由 IronXL 完全支援。

  • 領先的 .NET Core 和 .NET Framework Excel 試算表程式庫包括 IronXL。
  • 幾乎所有的 .NET Framework 都得到支援,包括 Console、Windows Forms 和 Web 應用程式。
  • IronXL 可在 Windows、Linux 和 macOS 作業系統上運行。
  • IronXL 使讀取 Excel 檔案變得簡單快速。
  • IronXL 支持多種 Excel 格式:XLSX、XLS、CSV、TSV、XLST 和 XLSM 檔案。
  • IronXL 匯出檔案至各種格式,包括 XLS、CSV、TSV、JSON 和 XML。
  • IronXL 生成 Excel 計算並支持公式。
  • IronXL 支援 Excel 欄位資料格式,包括文字、數字、日期、貨幣和百分比。

欲了解更多詳情,請存取 IronXL 文件概述

如何在Visual Studio中建立一個新專案?

在 Visual Studio 中,必須建立一個 .NET 專案才能使用 IronXL 框架。 任何版本的 Visual Studio 都可行,但建議使用最新版本。 根據您的需求,您可以建立 Windows Forms 應用程式或不同的專案範本。 為了簡化程式,本教程將使用控制台應用程式。

Visual Studio 的 Create New Project 對話框顯示各種 .NET 專案範本,包括控制台應用程式、ASP.NET Core Web 應用程式和 Blazor 伺服器應用程式選項。 在Visual Studio中建立新專案

之後,輸入專案名稱和位置。

Visual Studio 專案配置對話框顯示新建 C# 控制台應用程式的設置,專案名為 'ConsoleApp1',目標為 Windows 並以控制台輸出。 配置新專案

然後,選擇以下結構。 本專案將使用 .NET Core 6。

Visual Studio 專案建立對話框顯示控制台應用程式配置,選擇 .NET 6.0(長期支援)作為框架。 選擇一個.NET Framework版本

應用程式生成解決方案後,program.cs 文件將開啟,以便您輸入程式碼並建置/運行應用程式。

Visual Studio 中的 C# 控制台應用程式空窗顯示 IronXLConsole 專案,包含準備實施 CSV 匯出功能的初始程式碼結構。 新建立的控制台應用程式專案

然後可以新增程式庫並用於評估程式碼。 對於其他專案型別,如 .NET MAUI 應用程式VB.NET 專案,過程類似,但具有框架特定的考慮。

如何安裝 IronXL 程式庫?

下載和安裝 IronXL 程式庫有四種方法。

這些方法是:

  • 通過 Visual Studio 安裝
  • 使用 Visual Studio 套件管理器控制台安裝
  • 從 NuGet 網站直接下載
  • 從 IronXL 網站直接下載

應該使用哪種方法在 Visual Studio 安裝 IronXL?

using NuGet 套件管理器,可以安裝 IronXL 模組。 要找到 IronXL,首先必須啟動 NuGet 套件管理器,然後在瀏覽窗格中查找。 從搜尋列表中選擇 IronXL 進行安裝。 之後,IronXL 程式庫將能夠使用此應用程式。

下圖展示了如何啟動 Visual Studio 的 NuGet 套件管理器。

Visual Studio 工具選單展開,顯示 NuGet 套件管理器選項,及包管理器控制台在工具下拉選單中突出顯示。 導航到NuGet套件管理器

NuGet 套件管理器介面顯示 IronXL.Excel 套件,版本為 2022.3.0,顯示 133K 次下載和易於整合的安裝按鈕。 在 NuGet 套件管理器 UI 中安裝 IronXL 套件

什麼時候應使用套件管理器控制台?

許多開發者偏好使用控制台來執行任務。 因此,終端安裝也是一個選項。 要使用命令列安裝 IronXL,請依照以下指示操作。

  • 在 Visual Studio 中導航到 工具 > NuGet 套件管理器 > 套件管理介面。
  • 將以下命令輸入至套件管理器的控制台選項卡中:

    Install-Package IronXL.Excel
  • 等待 IronXL 下載並安裝到活動專案中。

Visual Studio 中的套件管理器控制台顯示命令 'Install-Package IronXL.Excel' 以及成功安裝確認訊息。 在套件管理器控制台 UI 中安裝 IronXL 套件

為什麼要從 NuGet 網站下載?

作為第三種選擇,套件可以直接從網站下載。 此方法特別有用於無法輕鬆存取網路的環境中,或者您需要手動管理套件時。

  • 瀏覽到 NuGet 正式網址
  • 在右側選單中找到下載套件選項。
  • 點擊保存在本地的檔案兩次,立即安裝。
  • 之後重新載入解決方案並開始在專案中使用它。

如何從 IronXL 網站直接安裝?

要從網站直接下載最新的包,請點擊此連結下載 IronXL ZIP 文件。 此連結將下載包含最新版本 IronXL 程式庫 DLL 的 ZIP 檔案。 下載完成後,將 ZIP 檔案的內容解壓縮到您選擇的任何目錄。

下載後,依照以下步驟將檔案新增到專案中。

  • 從方案窗口中,右鍵點選專案。
  • 選擇參考,然後導航到包含 IronXL DLL 的解壓縮資料夾。
  • 選擇 DLL,然後點擊確定將其作為參考新增到活動專案中。

在部署場景中,您還可以在 Docker 容器中設置 IronXL 或部署到雲平台,如 AWS LambdaAzure Functions

如何匯出 DataTable 到 CSV 文件?

可以使用 IronXL 輕鬆快捷地匯出 DataTables 到 CSV 檔案。 它支持自定分隔符號和編碼選項,幫助將資料寫入新的 CSV 檔案。

首先,如下圖中的程式碼所示,應包含 IronXL 命名空間以便使用 IronXL 類和方法。

C# 程式碼編輯器顯示 'using IronXL;' 和 'using System.Data;' 命名空間宣告,提供 DataTable 到 CSV 匯出實作的語法醒目顯示。 新增常用命名空間

可以使用 IronXL 建立 Excel 檔案,然後將其轉換為WorkBook 物件。 然後對這些物件執行各種操作。 以下範例程式碼將通過將 DataTable 轉換為 Excel 工作表來構建 Excel 檔案。

using IronXL;
using System.Data;

// Entry point of the application
static void Main(string[] args)
{
    // Specify the file path for the CSV file output
    ExportToExcel("H:\\test.csv");
}

// Exports the DataTable to an Excel file and saves it as CSV
public static void ExportToExcel(string filepath)
{
    // Create a DataTable and add columns and rows
    DataTable table = new DataTable();
    table.Columns.Add("DataSet_Fruits", typeof(string));
    table.Rows.Add("Apple");
    table.Rows.Add("Orange");
    table.Rows.Add("Strawberry");
    table.Rows.Add("Grapes");
    table.Rows.Add("Watermelon");
    table.Rows.Add("Bananas");
    table.Rows.Add("Lemons");

    // Create a new WorkBook and add the DataTable data to it
    WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
    var writer = wb.DefaultWorkSheet;
    int rowCount = 1;
    foreach (DataRow row in table.Rows)
    {
        // Write each item from the DataTable into the worksheet starting from cell A1
        writer["A" + (rowCount)].Value = row[0].ToString();
        rowCount++;
    }
    // Save the workbook as a CSV file with a specified delimiter
    wb.SaveAsCsv(filepath, ";");
}
using IronXL;
using System.Data;

// Entry point of the application
static void Main(string[] args)
{
    // Specify the file path for the CSV file output
    ExportToExcel("H:\\test.csv");
}

// Exports the DataTable to an Excel file and saves it as CSV
public static void ExportToExcel(string filepath)
{
    // Create a DataTable and add columns and rows
    DataTable table = new DataTable();
    table.Columns.Add("DataSet_Fruits", typeof(string));
    table.Rows.Add("Apple");
    table.Rows.Add("Orange");
    table.Rows.Add("Strawberry");
    table.Rows.Add("Grapes");
    table.Rows.Add("Watermelon");
    table.Rows.Add("Bananas");
    table.Rows.Add("Lemons");

    // Create a new WorkBook and add the DataTable data to it
    WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
    var writer = wb.DefaultWorkSheet;
    int rowCount = 1;
    foreach (DataRow row in table.Rows)
    {
        // Write each item from the DataTable into the worksheet starting from cell A1
        writer["A" + (rowCount)].Value = row[0].ToString();
        rowCount++;
    }
    // Save the workbook as a CSV file with a specified delimiter
    wb.SaveAsCsv(filepath, ";");
}
Imports IronXL
Imports System.Data

' Entry point of the application
Shared Sub Main(ByVal args() As String)
	' Specify the file path for the CSV file output
	ExportToExcel("H:\test.csv")
End Sub

' Exports the DataTable to an Excel file and saves it as CSV
Public Shared Sub ExportToExcel(ByVal filepath As String)
	' Create a DataTable and add columns and rows
	Dim table As New DataTable()
	table.Columns.Add("DataSet_Fruits", GetType(String))
	table.Rows.Add("Apple")
	table.Rows.Add("Orange")
	table.Rows.Add("Strawberry")
	table.Rows.Add("Grapes")
	table.Rows.Add("Watermelon")
	table.Rows.Add("Bananas")
	table.Rows.Add("Lemons")

	' Create a new WorkBook and add the DataTable data to it
	Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLS)
	Dim writer = wb.DefaultWorkSheet
	Dim rowCount As Integer = 1
	For Each row As DataRow In table.Rows
		' Write each item from the DataTable into the worksheet starting from cell A1
		writer("A" & (rowCount)).Value = row(0).ToString()
		rowCount += 1
	Next row
	' Save the workbook as a CSV file with a specified delimiter
	wb.SaveAsCsv(filepath, ";")
End Sub
$vbLabelText   $csharpLabel

上面的程式碼將 DataTable 匯出到 Excel 檔案。一旦建立 DataTable,就會建立欄位頭。 然後,在建立第一列之後逐個新增行。 在將欄位和行新增到 DataTable 物件後,WorkBook 物件被建立以保存那些資料。 然後構建WorkSheet物件,該物件被新增到 WorkBook 物件中。

DataTable 中的每個值在新增到 WorkSheet 之前,使用 foreach 迴圈讀取並新增。 在所有值都新增到工作表後,SaveAsCsv 方法會將它們保存到 CSV 文件中。您可以將分隔符號和文件位置作為參數指定。

在更複雜的場景中,您可能想要將多個 DataTables 匯出為不同的工作表或使用DataSets以獲得更結構化的資料組織。

處理不同的 CSV 格式

IronXL 在處理 CSV 檔案時提供靈活性。 這裡有一個例子,展示如何使用自定格式和編碼匯出 DataTable

// Export with custom delimiter and encoding
public static void ExportToCSVWithOptions(DataTable dataTable, string filepath)
{
    // Create workbook from DataTable
    WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet ws = wb.CreateWorkSheet("DataExport");

    // Add headers
    for (int i = 0; i < dataTable.Columns.Count; i++)
    {
        ws[$"{(char)('A' + i)}1"].Value = dataTable.Columns[i].ColumnName;
    }

    // Add data rows
    for (int row = 0; row < dataTable.Rows.Count; row++)
    {
        for (int col = 0; col < dataTable.Columns.Count; col++)
        {
            ws[$"{(char)('A' + col)}{row + 2}"].Value = dataTable.Rows[row][col];
        }
    }

    // Save with custom delimiter (comma) and UTF-8 encoding
    wb.SaveAsCsv(filepath, ",", System.Text.Encoding.UTF8);
}
// Export with custom delimiter and encoding
public static void ExportToCSVWithOptions(DataTable dataTable, string filepath)
{
    // Create workbook from DataTable
    WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet ws = wb.CreateWorkSheet("DataExport");

    // Add headers
    for (int i = 0; i < dataTable.Columns.Count; i++)
    {
        ws[$"{(char)('A' + i)}1"].Value = dataTable.Columns[i].ColumnName;
    }

    // Add data rows
    for (int row = 0; row < dataTable.Rows.Count; row++)
    {
        for (int col = 0; col < dataTable.Columns.Count; col++)
        {
            ws[$"{(char)('A' + col)}{row + 2}"].Value = dataTable.Rows[row][col];
        }
    }

    // Save with custom delimiter (comma) and UTF-8 encoding
    wb.SaveAsCsv(filepath, ",", System.Text.Encoding.UTF8);
}
Imports System.Text

' Export with custom delimiter and encoding
Public Shared Sub ExportToCSVWithOptions(dataTable As DataTable, filepath As String)
    ' Create workbook from DataTable
    Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
    Dim ws As WorkSheet = wb.CreateWorkSheet("DataExport")

    ' Add headers
    For i As Integer = 0 To dataTable.Columns.Count - 1
        ws($"{ChrW(AscW("A"c) + i)}1").Value = dataTable.Columns(i).ColumnName
    Next

    ' Add data rows
    For row As Integer = 0 To dataTable.Rows.Count - 1
        For col As Integer = 0 To dataTable.Columns.Count - 1
            ws($"{ChrW(AscW("A"c) + col)}{row + 2}").Value = dataTable.Rows(row)(col)
        Next
    Next

    ' Save with custom delimiter (comma) and UTF-8 encoding
    wb.SaveAsCsv(filepath, ",", Encoding.UTF8)
End Sub
$vbLabelText   $csharpLabel

這種方法讓您對匯出過程擁有更多控制,允許您設置單元格資料格式並自定輸出結構。

Excel 試算表中顯示了水果列表(蘋果、橙子、草莓、葡萄、西瓜、香蕉、檸檬)在 A 列中,具有適當的 CSV 格式和無額外的分隔符號。 輸出CSV文件

上面顯示的是運行程式碼範例的輸出。 在截圖中,資料表中的每一個資料片段都已單獨新增到新建立的 Excel 表中。 在匯出前,您還可以應用格式化到單元格,或新增公式以計算值。

對於更高級的 CSV 操作,您可以:

若要了解更多關於 IronXL 教程,請點擊這個如何匯出到 Excel 格式的方法

為什麼我應該使用 IronXL 來進行 CSV 匯出?

IronXL 是最受歡迎的 Excel 工具之一。 它不依賴任何其他第三方的程式庫。 它是自治的,不需要安裝 Microsoft Excel。 它跨多個頻道運行。

IronXL 提供了一個一體化解決方案,讓所有與 Microsoft Excel 文件相關的任務都能程式化地實現。 您可以執行公式計算字串或數值排序裁切並追加,查找和取代、合併和取消合併、保存文件等。您還可以設置單元格資料格式,並驗證試算表資料。 它還支持讀取和寫入 CSV 檔案,幫助您像處理 Excel 資料一樣進行操作。

額外的好處包括:

IronXL 的起價在發佈時為 $999。 它還為使用者提供支付一年訂閱費以享受產品協助和更新的選擇。 需額外支付費用,IronXL 提供不受限制的再分發安全。 要研究更多的近似價格資訊,請存取此授權頁面

常見問題

如何在 C# 中將 DataTable 匯出至 CSV 檔案?

您可以使用 IronXL 將 DataTable 匯出至 CSV 檔案,方法是建立 WorkBook 並將資料匯出到工作表物件中。這樣可以流暢地轉換和匯出,無需 Microsoft Excel。

使用這個程式庫可以匯出哪些檔案格式?

IronXL 支援將資料匯出為多種格式,如 XLS、CSV、TSV 和 JSON,提供處理不同資料需求的靈活性。

這個程式庫可以執行類似 Excel 的操作嗎?

是的,IronXL 支援 Excel 類似的操作,例如公式計算、資料排序和檔案儲存,使其成為一個完整的 Excel 相關程式設計工具。

我需要安裝 Microsoft Excel 以使用這個程式庫嗎?

不,IronXL 是一個獨立的 .NET 程式庫,不需要安裝 Microsoft Excel,讓開發人員能直接在其 C# 應用程式中處理 Excel 文件。

這個程式庫相容於哪些平台?

IronXL 支援多個平台,包括 .NET Core、.NET Framework、Xamarin,以及 Windows、Linux 和 macOS 等作業系統。

如何在我的專案中安裝 IronXL 程式庫?

IronXL 可以透過 Visual Studio 的 NuGet 封裝管理器安裝,或直接從 NuGet 或 IronXL 官網下載安裝於 .NET 專案中。

這個程式庫有哪些價格選擇?

IronXL 提供起始價格,並有一年訂閱選項,包括產品協助和更新,提供持續的支持和最新功能的存取。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話