How to Use C# to Convert Datatable to CSV

This article was translated from English: Does it need improvement?
Translated
View the article in English

using IronXL 在 C# 中將 DataTable 轉換為 CSV,方法是建立 WorkBook,填入 DataTable 行資料,並呼叫 SaveAsCsv() 方法——無需複雜的迴圈或 Interop。

快速入門:將 DataTable 匯出至 CSV 檔案的一行指令

using IronXL 透過單一方法呼叫,即可將填寫好的 DataTable 轉換為 CSV 檔案——無需迴圈、無需 Interop、毫無複雜性。 您只需使用 WorkBook 及其 DefaultWorkSheet,即可透過 SaveAsCsv 在數秒內完成匯出。

  1. using NuGet 套件管理員安裝 https://www.nuget.org/packages/IronXL.Excel

    PM > Install-Package IronXL.Excel
  2. 請複製並執行此程式碼片段。

    IronXl.WorkBook.Create().DefaultWorkSheet.SaveAsCsv("output.csv", ",");
  3. 部署至您的生產環境進行測試

    立即透過免費試用,在您的專案中開始使用 IronXL

    arrow pointer

步驟 1

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

您必須先安裝 IronXL,才能在應用程式中使用它。 IronXL 為您的專案提供多種安裝選項。 IronXL 程式庫可簡化 C# 程式中 Excel 檔案處理流程,無需安裝 Microsoft Excel 或 Interop。

我應該使用哪種安裝方式?

請透過以下連結從官方網站下載:https://ironsoftware.com/csharp/excel/docs/

or

  • 在 Visual Studio 中,選取"專案"選單
  • 點擊"管理 NuGet 套件"
  • 搜尋 IronXl.Excel
  • 點擊安裝

我應該使用哪個 NuGet 指令?

Install-Package IronXL.Excel

為何選擇 NuGet 套件管理員?

NuGet 是 .NET 開發人員的首選方案,因為它能自動管理依賴項並保持函式庫的最新狀態。 IronXL 套件包含轉換試算表檔案類型及處理各種 Excel 格式所需的所有元件。

 related to 為何選擇 NuGet 套件管理員?
圖 1 - IronXl.Excel NuGet 套件

操作教學

如何建立並將 DataTable 匯出為 CSV 檔案?

DataTable 轉換為 CSV 的過程,包含建立 WorkBook、填入資料,並使用 IronXL 內建的 CSV 寫入功能。 此方法比手動建構 CSV 字串或使用傳統的檔案串流方法更為高效。

我需要導入哪個命名空間?

首先,導入 IronXL 命名空間。 IronXL 提供對 DataSetDataTable 物件的全面匯入與匯出支援,使其成為資料庫驅動型應用的理想選擇。

using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

完整的程式碼範例是什麼?

請加入以下程式碼:

:path=/static-assets/excel/content-code-examples/how-to/csharp-database-to-csv-datatable.cs
using IronXL;
using System;
using System.Data;

// Create a new DataTable object
DataTable table = new DataTable();

// Add a single column named "Example_DataSet" of type string
table.Columns.Add("Example_DataSet", typeof(string));

// Add rows to the DataTable
table.Rows.Add("0");
table.Rows.Add("1");
table.Rows.Add("2");
table.Rows.Add("3");
table.Rows.Add("1");
table.Rows.Add("2");
table.Rows.Add("3");

// Create a new Excel workbook and set its author metadata
WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);
wb.Metadata.Author = "OJ";

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

// Initialize rowCounter for Excel sheet rows
int rowCount = 1;

// Loop through each row in the DataTable and add the data to the Excel worksheet
foreach (DataRow row in table.Rows)
{
    // Populate worksheet cells with data from DataTable
    ws["A" + (rowCount)].Value = row[0].ToString();
    rowCount++;
}

// Save the workbook as a CSV file
wb.SaveAsCsv("Save_DataTable_CSV.csv", ";"); // Will be saved as: Save_DataTable_CSV.Sheet1.csv
Imports IronXL
Imports System
Imports System.Data

' Create a new DataTable object
Dim table As New DataTable()

' Add a single column named "Example_DataSet" of type string
table.Columns.Add("Example_DataSet", GetType(String))

' Add rows to the DataTable
table.Rows.Add("0")
table.Rows.Add("1")
table.Rows.Add("2")
table.Rows.Add("3")
table.Rows.Add("1")
table.Rows.Add("2")
table.Rows.Add("3")

' Create a new Excel workbook and set its author metadata
Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLS)
wb.Metadata.Author = "OJ"

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

' Initialize rowCounter for Excel sheet rows
Dim rowCount As Integer = 1

' Loop through each row in the DataTable and add the data to the Excel worksheet
For Each row As DataRow In table.Rows
    ' Populate worksheet cells with data from DataTable
    ws("A" & rowCount).Value = row(0).ToString()
    rowCount += 1
Next

' Save the workbook as a CSV file
wb.SaveAsCsv("Save_DataTable_CSV.csv", ";") ' Will be saved as: Save_DataTable_CSV.Sheet1.csv
$vbLabelText   $csharpLabel

程式碼的運作原理是怎樣的?

上述程式碼會建立一個 DataTable,建立一個指定"OJ"為擁有者的新工作簿,然後使用 foreach 迴圈將 DataTable 中的資料插入 Excel 試算表中。 最後,SaveAsCsv 方法會將資料表匯出為 CSV 檔案。

流程分解:

  1. DataTables 建立:初始化一個新的 DataTable,並透過新增欄位來定義其資料結構。 這類似於定義資料庫表結構。

  2. 資料填入:使用 Rows.Add() 方法向 DataTable 新增資料列。 每行代表一筆用於 CSV 匯出的記錄。

  3. 工作簿建立:IronXL 的 WorkBook.Create() 方法會初始化一個新的 Excel 工作簿。 如有需要,您亦可建立包含多個工作表的試算表

  4. 儲存格填入:foreach 迴圈會遍歷 DataTable 行,並使用儲存格參照語法(例如"A1"、"A2")將每個值映射至特定的工作表儲存格。

  5. CSV 匯出SaveAsCsv() 方法可處理 CSV 格式化的複雜性,包括特殊字元的正確轉義及分隔符號處理。

至於進階的 DataTables 情境呢?

對於包含多欄位的複雜 DataTable,請按以下方式擴展程式碼:

// Create a DataTable with multiple columns
DataTable advancedTable = new DataTable();
advancedTable.Co/lumns.Add("ID", typeof(int));
advancedTable.Co/lumns.Add("Name", typeof(string));
advancedTable.Co/lumns.Add("Price", typeof(decimal));

--snip--
workbook.SaveAsCsv("products.csv", ",");
// Create a DataTable with multiple columns
DataTable advancedTable = new DataTable();
advancedTable.Co/lumns.Add("ID", typeof(int));
advancedTable.Co/lumns.Add("Name", typeof(string));
advancedTable.Co/lumns.Add("Price", typeof(decimal));

--snip--
workbook.SaveAsCsv("products.csv", ",");
Imports System.Data

' Create a DataTable with multiple columns
Dim advancedTable As New DataTable()
advancedTable.Columns.Add("ID", GetType(Integer))
advancedTable.Columns.Add("Name", GetType(String))
advancedTable.Columns.Add("Price", GetType(Decimal))

' --snip--
workbook.SaveAsCsv("products.csv", ",")
$vbLabelText   $csharpLabel

翻譯成果應呈現何種樣貌?

輸出 Excel 試算表顯示如下:

Excel 工作表顯示匯出至 CSV 格式的 DataTables 值,其中 A1 至 A7 儲存格包含連續的數值
圖 2 - 將 DataTables 輸出為 CSV

如何處理大型的 DataTable

當處理包含數千行資料的大型 DataTable 時,IronXL 仍能維持卓越的效能。 此函式庫能高效處理大量資料集。 在生產環境中,請套用您的授權金鑰以移除浮水印並啟用完整功能。

關於錯誤處理呢?

進行檔案操作時,務必實施適當的錯誤處理:

try 
{
    // Your DataTable to CSV conversion code
    WorkBook wb = WorkBook.Create();
    // ... rest of the code
    wb.SaveAsCsv("output.csv", ",");
    Console.WriteLine("CSV file created successfully!");
}
catch (Exception ex)
{
    Console.WriteLine($"Error creating CSV: {ex.Message}");
}
try 
{
    // Your DataTable to CSV conversion code
    WorkBook wb = WorkBook.Create();
    // ... rest of the code
    wb.SaveAsCsv("output.csv", ",");
    Console.WriteLine("CSV file created successfully!");
}
catch (Exception ex)
{
    Console.WriteLine($"Error creating CSV: {ex.Message}");
}
Try
    ' Your DataTable to CSV conversion code
    Dim wb As WorkBook = WorkBook.Create()
    ' ... rest of the code
    wb.SaveAsCsv("output.csv", ",")
    Console.WriteLine("CSV file created successfully!")
Catch ex As Exception
    Console.WriteLine($"Error creating CSV: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

函式庫快速存取

IronXL API 參考文件

透過實用的 IronXL API 參考文件,進一步了解並分享如何在 Excel 試算表中合併、取消合併及處理儲存格。

IronXL API 參考文件
Documentation related to 函式庫快速存取

常見問題

如何在不編寫複雜迴圈的情況下,於 C# 中將 DataTable 轉換為 CSV?

IronXL 提供了一種簡單的一行代碼解決方案,可將 DataTable 轉換為 CSV。在建立工作簿並將 DataTable 資料填入其中後,您可以使用 SaveAsCsv() 方法直接匯出為 CSV 格式,無需編寫迴圈或使用 Interop。

DataTables 轉 CSV 轉換函式庫有哪些安裝選項?

IronXL 可透過 Visual Studio 中的 NuGet 套件管理員安裝,方法是搜尋「IronXL.Excel」或使用 NuGet 命令列。此為首選安裝方式,因其能自動管理依賴項並保持程式庫版本最新。

將 DataTables 轉換為 CSV 檔案時,是否需要安裝 Microsoft Excel?

不,IronXL 為獨立運作的工具,無需安裝 Microsoft Excel 或 Interop。它是一個獨立的程式庫,能簡化 C# 應用程式中處理 Excel 檔案及 CSV 匯出的流程。

要將 DataTables 轉換為 CSV,我需要導入哪個命名空間?

您需要在 C# 檔案頂端加入 'using IronXL;' 來導入 IronXL 命名空間。這將提供對 DataSet 和 DataTables 物件匯入與匯出的全面支援。

匯出為 CSV 時,我可以指定自訂分隔符號嗎?

是的,IronXL 的 SaveAsCsv() 方法允許您指定自訂分隔符。在範例程式碼中,使用逗號 (",") 作為分隔符,但您可以將其更改為任何符合您需求的字元。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
Nuget 下載 2,052,917 | 版本: 2026.6 just released
Still Scrolling Icon

還在捲動嗎?

想要快速證明? PM > Install-Package IronXL.Excel
執行範例 觀看您的資料變成試算表。