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. 使用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 格式。

IronXL.Excel NuGet 套件安裝窗口顯示套件詳細資訊、版本資訊和在 Visual Studio 套件管理員中安裝按鈕
Figure 1 - IronXL.Excel NuGet Package

教程

我該如何建立並導出 DataTable 為 CSV?

DataTable 轉換為 CSV 的過程涉及建立 WorkBook ,填入資料,並使用 IronXL 的內建CSV 編寫功能。 這個方法比手動構建 CSV 字串或使用傳統的文件流方法更有效率。

我需要匯入什麼命名空間?

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

:path=/static-assets/excel/content-code-examples/how-to/csharp-datatable-to-csv-3.cs
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 方法導出 datatable 為 CSV。

流程分解:

  1. DataTable 建立:初始化新 DataTable 並通過新增列定義其架構。 這類似於定義資料庫表結構。

  2. 資料填充:使用 Rows.Add() 方法向 DataTable 新增行。 每一行代表 CSV 導出的紀錄。

  3. 工作簿生成:IronXL 的 WorkBook.Create() 方法初始化新 Excel 工作簿。 您也可以建立多個工作表的試算表如果需要。

  4. 單元格填充:foreach 迴圈遍歷 DataTable 行,並使用單元格引用語法(例如 "A1"、"A2")將每個值對應到特定的工作表單元格。

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

關於高級 DataTable 場景呢?

對於具有多個列的複雜 DataTable,可以如此擴展程式碼:

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

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

--snip--
workbook.SaveAsCsv("products.csv", ",");
' 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 格式導出的 DataTable 值,單元格 A1 至 A7 包含連續的數值
Figure 2 - Datatable output to CSV

我該如何處理大型 DataTable

當處理含有數千行的大型 DataTable 時,IronXL 仍保持卓越的性能。 該程式庫有效地處理大量資料集。 在生產環境中,應用您的授權金鑰以去除浮水印並啟用完整功能。

關於錯誤處理呢?

在處理文件操作時,始終實施正確的錯誤處理:

:path=/static-assets/excel/content-code-examples/how-to/csharp-datatable-to-csv-6.cs
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}");
}
Imports System

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 程式庫快捷存取

常見問題

如何在不寫複雜迴圈的情況下將 DataTable 轉換為 CSV?

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

DataTable 到 CSV 轉換程式庫的安裝選項有哪些?

IronXL 可以通過 Visual Studio 中的 NuGet 套件管理器安裝,搜尋 'IronXL.Excel' 或使用 NuGet 命令行。這是首選的方法,因為它可以自動管理依賴項並保持程式庫最新。

我需要安裝 Microsoft Excel 來將 DataTable 轉換為 CSV 嗎?

不需要,IronXL 獨立運行,不需要安裝 Microsoft Excel 或 Interop。它是一個獨立的程式庫,可以簡化在 C# 應用中處理 Excel 文件和 CSV 匯出。

將 DataTable 轉換為 CSV 所需導入的命名空間是什麼?

您需要通過在 C# 文件頂部新增 'using IronXL;' 來導入 IronXL 命名空間。這可提供對導入和匯出 DataSet 和 DataTable 物件的全面支持。

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

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

Curtis Chau
技術作家

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

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

準備好開始了嗎?
Nuget 下載 2,134,203 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

仍在滾動嗎?

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