跳至頁尾內容
USING IRONXL

如何使用 IronXL 在 C# 中寫入 CSV 文件

在C#中建立CSV(逗號分隔值)文件是報告系統、資料交換和整合的核心任務。 然而,許多開發者厭倦了與StreamWriter、轉義字元和格式錯誤鬥爭。 IronXL提供了一種更清晰、更快速的方法來用C寫入CSV文件,無需處理分隔符問題或樣板程式碼。 在本指南中,您將看到IronXL如何簡化從Excel文件、DataTables和自定義資料建立CSV的過程,且具有生產就緒的可靠性。

為什麼傳統的CSV編寫會不如理想?

使用StreamWriter或StringBuilder的傳統方法需要手動處理分隔符、特殊字元和編碼問題。 舊方法通常涉及var csv = new StringBuilder(),迫使開發者編寫大量樣板程式碼。 根據Stack Overflow 討論,開發者必須編寫大量樣板程式碼來管理資料內的逗號、正確轉義引號和處理換行符,同時確保大型資料集的正確記憶體管理。 這些手動方法經常在遇到意外字元或編碼不匹配時導致文件損壞。

IronXL通過提供智能處理CSV生成的強大API來消除這些複雜性。 該程式庫自動管理特殊字元,支援多種Excel格式,不僅限於CSV用於儲存資料,且不需要Microsoft Excel安裝或Interop依賴

安裝只需數秒,打開Visual Studio並使用NuGet套件管理器運行以下命令:

Install-Package IronXL.Excel

立即開始免費試用,體驗無憂的CSV生成。

如何將Excel文件轉換為CSV格式?

建立CSV的最簡單方法是轉換現有的Excel工作簿。 IronXL的WorkBook.Load方法使此過程異常簡單,僅需三行程式碼。 我們可以通過建立一個新專案並運行以下程式碼來測試此功能:

using IronXL;
// Load an existing Excel file (XLSX, XLS, or even CSV)
WorkBook workBook = WorkBook.Load("SalesReport.xlsx");
// Convert and save as CSV - automatically handles the active worksheet
workBook.SaveAsCsv("SalesReport.csv");
using IronXL;
// Load an existing Excel file (XLSX, XLS, or even CSV)
WorkBook workBook = WorkBook.Load("SalesReport.xlsx");
// Convert and save as CSV - automatically handles the active worksheet
workBook.SaveAsCsv("SalesReport.csv");
Imports IronXL

' Load an existing Excel file (XLSX, XLS, or even CSV)
Dim workBook As WorkBook = WorkBook.Load("SalesReport.xlsx")
' Convert and save as CSV - automatically handles the active worksheet
workBook.SaveAsCsv("SalesReport.csv")
$vbLabelText   $csharpLabel

Load方法接受各種Excel格式,包括XLSX、XLS、XLSM,甚至是現有的CSV文件以重新格式化。 SaveAsCsv方法智能導出活動工作表,同時無縫保留資料型別和處理特殊字元。 在處理多工作表工作簿時,IronXL會自動為每個工作表建立單獨的CSV文件,附加工作表名稱以保持組織。

如何在C#中寫入CSV文件:圖1 - 輸入文件

對於特定工作表控制,開發者可以針對單個工作表:

// Export a specific worksheet to CSV
WorkSheet worksheet = workBook.WorkSheets[0];
worksheet.SaveAs("Q4_Report.csv");
// Export a specific worksheet to CSV
WorkSheet worksheet = workBook.WorkSheets[0];
worksheet.SaveAs("Q4_Report.csv");
' Export a specific worksheet to CSV
Dim worksheet As WorkSheet = workBook.WorkSheets(0)
worksheet.SaveAs("Q4_Report.csv")
$vbLabelText   $csharpLabel

這種針對性的方法在處理包含多個資料集的複雜工作簿時顯得極為寶貴,允許選擇性導出而無需手動資料提取。 了解更多關於工作表管理的資訊。

如何匯出DataTable至CSV?

企業應用程式經常與來自資料庫或API的DataTable物件關聯。從這些物件寫入資料到CSV的過程傳統上需要遍歷行和列,同時手動構建分隔字串。 IronXL簡化了這種常見場景,正如Microsoft官方論壇所記載:

using IronXL;
using System.Data;
class Program 
{
    // Example method to provide DataTable
    private static DataTable GetCustomerData()
    {
        DataTable table = new DataTable();
        table.Columns.Add("CustomerID", typeof(int));
        table.Columns.Add("Name", typeof(string));
        table.Columns.Add("Email", typeof(string));
        table.Rows.Add(1, "John Doe", "john@example.com");
        table.Rows.Add(2, "Jane Smith", "jane@example.com");
        return table;
    }
    public static void Main()
    {
        // Get your data
        DataTable dataTable = GetCustomerData();
        // Create a new workbook
        WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
        DataSet dataSet = new DataSet();
        dataSet.Tables.Add(dataTable);
        WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);
        // Export to CSV
        workBook.SaveAsCsv("CustomerExport.csv");
    }
}
using IronXL;
using System.Data;
class Program 
{
    // Example method to provide DataTable
    private static DataTable GetCustomerData()
    {
        DataTable table = new DataTable();
        table.Columns.Add("CustomerID", typeof(int));
        table.Columns.Add("Name", typeof(string));
        table.Columns.Add("Email", typeof(string));
        table.Rows.Add(1, "John Doe", "john@example.com");
        table.Rows.Add(2, "Jane Smith", "jane@example.com");
        return table;
    }
    public static void Main()
    {
        // Get your data
        DataTable dataTable = GetCustomerData();
        // Create a new workbook
        WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
        DataSet dataSet = new DataSet();
        dataSet.Tables.Add(dataTable);
        WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);
        // Export to CSV
        workBook.SaveAsCsv("CustomerExport.csv");
    }
}
Imports IronXL
Imports System.Data

Class Program
    ' Example method to provide DataTable
    Private Shared Function GetCustomerData() As DataTable
        Dim table As New DataTable()
        table.Columns.Add("CustomerID", GetType(Integer))
        table.Columns.Add("Name", GetType(String))
        table.Columns.Add("Email", GetType(String))
        table.Rows.Add(1, "John Doe", "john@example.com")
        table.Rows.Add(2, "Jane Smith", "jane@example.com")
        Return table
    End Function

    Public Shared Sub Main()
        ' Get your data
        Dim dataTable As DataTable = GetCustomerData()
        ' Create a new workbook
        Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
        Dim dataSet As New DataSet()
        dataSet.Tables.Add(dataTable)
        WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook)
        ' Export to CSV
        workBook.SaveAsCsv("CustomerExport.csv")
    End Sub
End Class
$vbLabelText   $csharpLabel

此程式碼展示了如何在簡單的控制台應用程式中使用IronXL將DataTable導出到CSV文件。 它首先建立一個包含客戶資料的樣本DataTable,並將其新增到DataSet中。 不需要手動插入值到工作表,DataTable自動生成工作簿中的工作表。 一旦所有資料都載入到工作簿中,整個工作表通過SaveAsCsv("CustomerExport.csv")導出為CSV文件。

輸出

如何在C#中寫入CSV文件:圖2 - DataTable導出到CSV例子的輸出文件

How to Write CSV Files from Scratch Using C#?

有時,應用程式需要以程式方式生成新的CSV文件,而不依賴現有的資料來源。 IronXL在從頭開始構建電子表格方面表現出色:

using IronXL;
// Create a new workbook
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("Inventory");
// Add headers
workSheet["A1"].Value = "Product ID";
workSheet["B1"].Value = "Product Name";
workSheet["C1"].Value = "Quantity";
workSheet["D1"].Value = "Price";
// Add data rows - supports various data types
workSheet["A2"].Value = 1001;
workSheet["B2"].Value = "Wireless Mouse";
workSheet["C2"].Value = 150;
workSheet["D2"].Value = 29.99;
workSheet["A3"].Value = 1002;
workSheet["B3"].Value = "Mechanical Keyboard";
workSheet["C3"].Value = 75;
workSheet["D3"].Value = 89.99;
// Apply formulas before export
workSheet["E1"].Value = "Total Value";
workSheet["E2"].Formula = "=C2*D2";
// Save as CSV - formulas calculate before export
workBook.SaveAsCsv("Inventory.csv");
using IronXL;
// Create a new workbook
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("Inventory");
// Add headers
workSheet["A1"].Value = "Product ID";
workSheet["B1"].Value = "Product Name";
workSheet["C1"].Value = "Quantity";
workSheet["D1"].Value = "Price";
// Add data rows - supports various data types
workSheet["A2"].Value = 1001;
workSheet["B2"].Value = "Wireless Mouse";
workSheet["C2"].Value = 150;
workSheet["D2"].Value = 29.99;
workSheet["A3"].Value = 1002;
workSheet["B3"].Value = "Mechanical Keyboard";
workSheet["C3"].Value = 75;
workSheet["D3"].Value = 89.99;
// Apply formulas before export
workSheet["E1"].Value = "Total Value";
workSheet["E2"].Formula = "=C2*D2";
// Save as CSV - formulas calculate before export
workBook.SaveAsCsv("Inventory.csv");
Imports IronXL

' Create a new workbook
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("Inventory")

' Add headers
workSheet("A1").Value = "Product ID"
workSheet("B1").Value = "Product Name"
workSheet("C1").Value = "Quantity"
workSheet("D1").Value = "Price"

' Add data rows - supports various data types
workSheet("A2").Value = 1001
workSheet("B2").Value = "Wireless Mouse"
workSheet("C2").Value = 150
workSheet("D2").Value = 29.99
workSheet("A3").Value = 1002
workSheet("B3").Value = "Mechanical Keyboard"
workSheet("C3").Value = 75
workSheet("D3").Value = 89.99

' Apply formulas before export
workSheet("E1").Value = "Total Value"
workSheet("E2").Formula = "=C2*D2"

' Save as CSV - formulas calculate before export
workBook.SaveAsCsv("Inventory.csv")
$vbLabelText   $csharpLabel

單元格引用系統反映Excel熟悉的A1標記法,使程式碼對開發者直觀易懂。 IronXL支援單獨設置值或通過範圍進行批量操作。 當有公式存在時,程式庫在導出為CSV之前計算結果,以保證資料表示的準確性。 這種編程方法使得可以根據運行時條件動態生成報告。

輸出

如何在C#中寫入CSV文件:圖3 - 從頭開始建立的CSV文件

現在開始使用IronXL。
green arrow pointer

如何處理常見的CSV挑戰?

處理分隔符和錯誤處理是常見的CSV生成挑戰。 IronXL自動解決這些問題,但當需要時提供控制,正如開發者論壇中所討論的:

// Robust error handling
try
{
    WorkBook workBook = WorkBook.Load("Data.xlsx");
    // Specify delimiter options
    workBook.SaveAsCsv("Output.csv", delimiter: ",");
}
catch (Exception ex)
{
    Console.WriteLine($"Export failed: {ex.Message}");
    // Log error or implement retry logic
}
// Robust error handling
try
{
    WorkBook workBook = WorkBook.Load("Data.xlsx");
    // Specify delimiter options
    workBook.SaveAsCsv("Output.csv", delimiter: ",");
}
catch (Exception ex)
{
    Console.WriteLine($"Export failed: {ex.Message}");
    // Log error or implement retry logic
}
Imports System

' Robust error handling
Try
    Dim workBook As WorkBook = WorkBook.Load("Data.xlsx")
    ' Specify delimiter options
    workBook.SaveAsCsv("Output.csv", delimiter:=",")
Catch ex As Exception
    Console.WriteLine($"Export failed: {ex.Message}")
    ' Log error or implement retry logic
End Try
$vbLabelText   $csharpLabel

IronXL自動轉義資料字段內的特殊字元,如逗號和引號,消除了手動預處理的需要。 該程式庫對於常見問題(如文件存取問題或無效資料格式)拋出描述性異常,使生產環境中能夠進行適當的錯誤處理。 通過將程式碼包裹在try-catch塊中,我們可以輕鬆處理任何拋出的異常。 如需更多故障排除指導,請參閱綜合文件

如何在C#中寫入CSV文件:圖4 - 成功將Excel轉換為CSV並處理解決常見挑戰

結論

IronXL將C#的CSV寫入從手動、易出錯的過程轉變為可靠且精簡的操作。 程式庫處理包括從DataTable導出到特殊字元轉義等複雜場景,這些傳統上需要編寫大量自定義程式碼。 無論是轉換現有的Excel文件還是從頭構建CSV文件,IronXL直觀的API減少了開發時間,同時確保專業的結果。

開發者可以通過免費試用來探索IronXL的全部功能,提供綜合的CSV操作功能以及更廣泛的Excel功能。 準備好簡化您的CSV操作了嗎? 今天就改變您的資料導出流程。

常見問題

使用IronXL在C#中撰寫CSV文件有什麼優勢?

IronXL提供了一種更清晰、更快速的方法來撰寫C#中的CSV文件,通過消除分隔符處理和樣板程式碼的常見問題。它簡化了Excel文件、DataTables和自定義資料的CSV建立,具有生產就緒的可靠性。

IronXL如何在CSV檔案中處理特殊字元?

IronXL自動管理特殊字元和轉義序列,確保您的CSV文件正確格式化,無需額外的編碼工作。

IronXL可以將Excel電子表格轉換為CSV文件嗎?

是的,IronXL可以輕鬆將Excel電子表格轉換為CSV文件,實現無縫的資料交換和報告能力。

IronXL可以將DataTables匯出到CSV嗎?

IronXL支持將DataTables匯出到CSV格式,簡化了開發者的資料交換和整合過程。

IronXL為什麼在生產環境中建立CSV時是可靠的選擇?

IronXL透過簡化CSV文件建立和處理CSV特定挑戰,提供了生產就緒的可靠性,確保一致且無錯誤的輸出。

IronXL需要複雜的設置來建立CSV文件嗎?

不,設定IronXL以建立CSV文件是直接的,讓開發者可以快速將其功能整合到應用程式中。

IronXL如何改善處理CSV文件的開發過程?

IronXL提供了一個強大的解決方案,通過減少對CSV特定邏輯(如分隔符處理和格式化)手動編碼的需求,改善了開發過程。

Curtis Chau
技術作家

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

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

Iron 支援團隊

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