如何使用 C# 將資料表轉換為 CSV

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

使用 IronXL 在 C# 中將 DataTable 轉換為 CSV,方法是建立 W或kBook ,將 DataTable 行填充其中,並呼叫 SaveAsCsv() 方法 - 不需要複雜的循環或 Interop。

快速入門:單行匯出 DataTable 至 CSV

使用 IronXL 將填滿的 DataTable 轉換成 CSV 檔案,只需呼叫一個方法 - 沒有循環、沒有 Interop、沒有複雜性。 您只需要 W或kBook 及其 DefaultW或kSheet 即可使用 SaveAsCsv 在幾秒鐘內匯出。

Nuget Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 IronXL

    PM > Install-Package IronXL.Excel

  2. 複製並運行這段程式碼。

    IronXL.W或kBook.Create().DefaultW或kSheet.SaveAsCsv("output.csv", ",");
  3. 部署到您的生產環境進行測試

    立即開始在您的專案中使用 IronXL,免費試用!
    arrow pointer

步驟 1

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

在您的應用程式中使用 IronXL 之前,您必須先安裝 IronXL。 IronXL 為您的專案提供多種安裝選項。 IronXL 是一個函式庫,可簡化 在 C# 中處理 Excel 檔案的工作,而無需安裝 Microsoft Excel 或 Interop。

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

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

在 Visual Studio 中,選擇"項目"選單

  • 點選"管理 NuGet 套件" 搜尋 IronXL.Excel 點選安裝

我應該使用什麼 NuGet 指令?

Install-Package IronXL.Excel

為什麼選擇 NuGet 套件管理程式?

NuGet 是 .NET 開發人員的首選方法,因為它可以自動管理相依性並保持函式庫的最新性。 IronXL 套件包括 轉換試算表檔案類型以及使用各種 Excel 格式的所有必要元件。

在 Visual Studio Package Manager 中,IronXL.Excel NuGet 套件安裝視窗顯示套件詳細資訊、版本資訊和安裝按鈕
圖 1 - IronXL.Excel NuGet 套件

操作指南

我該如何建立 DataTable 並將其匯出至 CSV?

DataTable 轉換為 CSV 的過程包括建立 W或kBook 並將資料填充其中,以及使用 IronXL.Excel 內建的 CSV 寫入功能。 此方法比起手動建立 CSV 字串或使用傳統的檔案串流方法更有效率。

我需要匯入哪些命名空間?

首先,導入 IronXL 命名空間。 IronXL.Excel 提供對 匯入和匯出 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"為其擁有者,然後會使用 f或each 循環將 DataTable 中的資料插入 Excel 工作表中。 最後,SaveAsCsv 方法會將資料表匯出至 CSV。

流程明細:

1.DataTable Creation:初始化新的 DataTable 並透過新增欄位定義其模式。 這類似於定義資料庫表結構。

2.資料人口:使用 Rows.Add() 方法將行新增至 DataTable 中。 每一行代表一筆 CSV 匯出記錄。

3.W或kbook Generation:IronXL 的 W或kBook.Create() 方法初始化一個新的 Excel 工作簿。 如有需要,您也可以 建立多工作表的試算表

4.Cell Population:f或each 環路會遍歷 DataTable 行,並使用儲存格參照語法 (例如 "A1"、"A2") 將每個值對應到特定的工作表單儲存格。

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

進階 DataTable 方案如何?

對於具有多列的複雜 DataTables,請像這樣延伸程式碼:

// 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--
w或kbook.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--
w或kbook.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--
w或kbook.SaveAsCsv("products.csv", ",")
$vbLabelText   $csharpLabel

輸出是什麼樣子?

輸出的 Excel 工作表顯示如下:

Excel 工作表顯示匯出為 CSV 格式的 DataTable 值,其中單元格 A1 至 A7 包含順序數值
圖 2 -資料表輸出到 CSV

我該如何處理大型 DataTables?

當處理包含數千行的大型 DataTables 時,IronXL.Excel 能維持優異的效能。 資料庫能有效率地處理大量資料集。 對於生產環境,請套用您的 license key 以移除水印並啟用完整功能。

關於錯誤處理?

在處理檔案作業時,務必執行適當的錯誤處理:

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

圖書館快速訪問

### IronXL API 參考文檔

使用便利的 IronXL API 參考文檔,了解更多並分享如何在 Excel 電子表格中合併、取消合併和處理儲存格。

IronXL API 參考文檔
Documentation related to 圖書館快速訪問

常見問題解答

如何在 C# 中將 DataTable 轉換為 CSV,而不需要撰寫複雜的循環?

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

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

IronXL 可透過 Visual Studio 中的 NuGet Package Manager 搜尋「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 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。

準備好開始了嗎?
Nuget 下載 1,846,091 | 版本: 2026.2 剛剛發布