How to Use C# to Convert Datatable to CSV
using IronXL 在 C# 中將 DataTable 轉換為 CSV,方法是建立 WorkBook,填入 DataTable 行資料,並呼叫 SaveAsCsv() 方法——無需複雜的迴圈或 Interop。
快速入門:將 DataTable 匯出至 CSV 檔案的一行指令
using IronXL 透過單一方法呼叫,即可將填寫好的 DataTable 轉換為 CSV 檔案——無需迴圈、無需 Interop、毫無複雜性。 您只需使用 WorkBook 及其 DefaultWorkSheet,即可透過 SaveAsCsv 在數秒內完成匯出。
簡化工作流程(5 個步驟)
/IronXL.- 下載並安裝"將 DataTable 轉換為 CSV"C# 函式庫
- 請使用
DataTable類別來儲存新資料 - 建立新試算表或匯入現有試算表
- 遍歷表格行,並據此填入工作表的儲存格
- 使用
SaveAsCsvC# 函式
步驟 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 格式所需的所有元件。
操作教學
如何建立並將 DataTable 匯出為 CSV 檔案?
將 DataTable 轉換為 CSV 的過程,包含建立 WorkBook、填入資料,並使用 IronXL 內建的 CSV 寫入功能。 此方法比手動建構 CSV 字串或使用傳統的檔案串流方法更為高效。
我需要導入哪個命名空間?
首先,導入 IronXL 命名空間。 IronXL 提供對 DataSet 和 DataTable 物件的全面匯入與匯出支援,使其成為資料庫驅動型應用的理想選擇。
using IronXL;
using IronXL;
Imports IronXL
完整的程式碼範例是什麼?
請加入以下程式碼:
: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
程式碼的運作原理是怎樣的?
上述程式碼會建立一個 DataTable,建立一個指定"OJ"為擁有者的新工作簿,然後使用 foreach 迴圈將 DataTable 中的資料插入 Excel 試算表中。 最後,SaveAsCsv 方法會將資料表匯出為 CSV 檔案。
流程分解:
-
DataTables 建立:初始化一個新的
DataTable,並透過新增欄位來定義其資料結構。 這類似於定義資料庫表結構。 -
資料填入:使用
Rows.Add()方法向DataTable新增資料列。 每行代表一筆用於 CSV 匯出的記錄。 -
工作簿建立:IronXL 的
WorkBook.Create()方法會初始化一個新的 Excel 工作簿。 如有需要,您亦可建立包含多個工作表的試算表。 -
儲存格填入:foreach 迴圈會遍歷
DataTable行,並使用儲存格參照語法(例如"A1"、"A2")將每個值映射至特定的工作表儲存格。 - 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", ",")
翻譯成果應呈現何種樣貌?
輸出 Excel 試算表顯示如下:
如何處理大型的 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
函式庫快速存取
常見問題
如何在不編寫複雜迴圈的情況下,於 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() 方法允許您指定自訂分隔符。在範例程式碼中,使用逗號 (",") 作為分隔符,但您可以將其更改為任何符合您需求的字元。

