跳過到頁腳內容
使用 IRONXL

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

IronXL 能夠在 C# 中實現 DataTable 到 CSV 的無縫轉換,而無需安裝 Microsoft Excel。 這個獨立的 .NET 函式庫提供了一個簡單的 API,可以自動將 DataTables 轉換為具有自訂結構和分隔符號的 CSV 文件,使開發人員能夠輕鬆地匯出資料。

IronXL 是一個流行的庫,它允許開發人員在 C# .NET 技術中與Microsoft Excel 文件(包括 CSV 文件)進行交互,而無需安裝 Microsoft Excel。 它能夠自動將已註冊的類型轉換為 CSV 文件,並能夠使用自訂結構寫入 CSV 文件。

IronXL Library 提供哪些功能?

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

透過 IronXL 的用戶友好型 C# API ,您可以在 .NET 環境中快速讀取、修改和建立 Excel 電子表格檔案。 IronXL 完全支援 .NET Core、.NET Framework、Xamarin、行動平台、 LinuxmacOSAzure

  • 領先的 .NET Core 和 .NET Framework Excel 試算表庫(適用於 C#)包括 IronXL。
  • 幾乎所有 .NET Framework 版本都受支持,包括控制台應用程式、Windows 窗體應用程式和 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 窗體應用程式或不同的專案範本。 為了簡單起見,本教學將使用控制台應用程式。

Visual Studio 的"建立新專案"對話方塊顯示了各種 .NET 專案模板,包括控制台應用程式、ASP.NET Core Web 應用程式和 Blazor 伺服器應用程式選項。 在 Visual Studio 中建立一個新項目

之後,輸入項目名稱和地點。

Visual Studio 專案配置對話方塊顯示了名為"ConsoleApp1"的新 C# 控制台應用程式的設置,目標平台為 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?

使用 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",並顯示安裝成功的確認訊息。 在軟體套件管理器控制台介面中安裝 IronXL 軟體套件

我為什麼要從 NuGet 網站下載?

第三種選擇是直接從網站下載 NuGet 套件。 當網路存取受限或需要手動管理軟體包時,這種方法特別有用。

  • 造訪官方 NuGet 連結
  • 下載軟體包選項位於右側選單中。
  • 雙擊已儲存的文件,即可立即安裝。
  • 之後重新載入解決方案,並開始在專案中使用它。

如何直接從 IronXL 網站安裝?

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

下載檔案後,要將其新增至專案中,請按照下列步驟操作。

  • 在解決方案視窗中,右鍵點選項目。
  • 選擇"引用",然後導航至包含 IronXL DLL 的已解壓縮資料夾。
  • 選擇 DLL,然後按一下"確定"將其作為參考新增至活動項目。

對於部署方案,您也可以將 IronXL 設定在 Docker 容器中,或部署到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 循環讀取並新增 foreach 中的每個值,然後再將該值加到 WorkSheet 中。 將所有值新增至工作表後, SaveAsCsv方法會將它們儲存到 CSV 檔案中。您可以將分隔符號和檔案位置都指定為參數。

對於更複雜的場景,您可能需要將多個資料表匯出為不同的工作表,或使用資料集進行更結構化的資料組織。

使用不同的 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 操作,您可以: -讀取帶有自訂分隔符號的 CSV 文件

要了解有關 IronXL 教程的更多信息,請點擊此鏈接以了解如何匯出到 Excel 格式

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

IronXL是Excel中最受歡迎的工具之一。 它不依賴任何其他外部來源的庫。 它是獨立運作的,無需安裝微軟Excel。 它透過多個管道運作。

IronXL 提供了一個一體化解決方案,以程式設計方式實現所有與 Microsoft Excel 文件相關的任務。 您可以執行公式計算字串或數字排序修剪和追加、尋找和取代、合併和取消合併、儲存檔案等操作。您也可以設定儲存格資料格式並驗證電子表格資料。 它還支援讀寫 CSV 文件,幫助您像處理 Excel 資料一樣處理資料。

其他福利包括:

IronXL 的上市起價為 $799。 它還為用戶提供支付一年訂閱費以獲得產品支援和更新的選項。 IronXL 提供額外付費的無限再分送安全保障。 如需了解更詳細的定價信息,請訪問此許可頁面

常見問題解答

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

您可以使用 IronXL 匯出 DataTable 至 CSV 文件,通過創建 WorkBook 並將數據匯入工作表對象中。這可實現無縫轉換和匯出,無需微軟 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 庫?

可以在 .NET 專案中使用 Visual Studio 安裝 IronXL,透過訪問 NuGet 套件管理器或從 NuGet 或 IronXL 網站直接下載。

有哪些價位選項可用於此庫?

IronXL 提供起始價,選項包含一年的訂閱,提供產品協助和更新,從而提供持續支持和獲取最新功能。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担產品测测试,產品開發和研究的责任時,Jordi 為持续的產品改進增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。

鋼鐵支援團隊

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