IRONSOFTWAREHOME
USING IRONXL

如何使用 IronXL 在 C# 中將資料保存為 CSV

Curtis Chau
Curtis Chau
Updated: 2026年6月18日

在現代C#應用程式中,管理CSV文件是基本需求,從生成商業報告到匯出資料庫記錄。 雖然.NET提供基本的文件寫入功能,但要有效處理CSV文件,尤其是涉及特殊字元、多種資料型別和大型資料集的情況,則需要更強大的解決方案。 IronXL 通過提供全面的API處理CSV操作,如C#保存到CSV,並具有完整的Excel相容性來簡化整個過程。

本教程展示了如何利用IronXL的強大功能在您的C#應用程式中建立、保存和管理CSV文件。 您將學習如何處理多種資料來源的實用技術,從簡單的集合到複雜的DataTable,同時保持乾淨且可維護的程式碼。

如何使用IronXL在C#中將資料保存為CSV:圖片1 - IronXL

開始使用 IronXL

在進入CSV操作之前,您需要在項目中安裝IronXL。 此程式庫支持.NET Framework 4.6.2+和.NET Core 2+,使其與舊的和現代的應用程式相容。 IronXL還提供了優良的跨平台支持,可以無縫運行於Windows、Linux和macOS環境。

如何使用IronXL在C#中將資料保存為CSV:圖片2 - 跨平台

打開Visual Studio,轉到Package Manager Console並鍵入以下命令:

PM > Install-Package IronXL.Excel

如何使用IronXL在C#中將資料保存為CSV:圖片3 - 安裝

或通過.NET CLI:

dotnet add package IronXL.Excel

安裝後,將IronXL命名空間新增到您的C#文件中,以存取所有CSV管理功能,例如寫入資料:

using IronXL;

該簡單設置可讓您立即存取強大的電子表格操作功能。 與需要Excel Interop或複雜的CSV解析邏輯的傳統方法不同,IronXL提供了一個直觀的API,處理幕後的復雜性。 此程式庫獨立運作,無需安裝Microsoft Office,非常適合伺服器部署和容器化應用程式。

如果在安裝或初始化程式庫時發生錯誤,請確保您的項目目標是支援的.NET版本,並且所有依賴項都已正確還原。

如何保存並寫入資料到新的CSV文件?

從頭建立或寫入CSV文件與IronXL遵循一個直覺模式。 您從建立一本工作簿開始,將所有資料新增到單元格中,然後以CSV格式保存。 此方法比基本的字串連接方法提供更多控制。

在深入了解主要的CSV建立邏輯之前,這是一個使用公共類學生結構的簡單模型定義。 此模型代表結構化資料,我們稍後可以匯出到CSV。

// Define a Student class to model your data
public class Student
{
    public string? Name { get; set; } // public string firstname, public string lastname
    public int Age { get; set; }
    public string? Grade { get; set; }
}

您可以填充一個學生物件列表,然後使用IronXL將它們高效地導出到CSV文件。此範例顯示如何將類性質映射到工作表單元格:

using System;
using System.Collections.Generic;
using IronXL;
class Program
{
    static void Main(string[] args)
    {
        // Create sample data using the student class
        List<Student> students = new List<Student>()
        {
            new Student { Name = "Alice Johnson", Age = 20, Grade = "A" },
            new Student { Name = "Brian Smith", Age = 22, Grade = "B+" },
            new Student { Name = "Chloe Brown", Age = 19, Grade = "A-" },
            new Student { Name = "David Clark", Age = 21, Grade = "B" }
        };
        // Create a new workbook and worksheet
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet sheet = workbook.CreateWorkSheet("Students");
        // Add headers
        sheet["A1"].Value = "Name";
        sheet["B1"].Value = "Age";
        sheet["C1"].Value = "Grade";
        // Add student data to the worksheet
        for (int i = 0; i < students.Count; i++)
        {
            sheet[$"A{i + 2}"].Value = students[i].Name;
            sheet[$"B{i + 2}"].IntValue = students[i].Age;
            sheet[$"C{i + 2}"].Value = students[i].Grade;
        }
        // Save as CSV file
        workbook.SaveAsCsv("students.csv");
        Console.WriteLine("students.csv file has been created successfully!");
    }
}

說明:

  1. 公共類學生定義了您的資料模型的架構。
  2. 使用樣本資料建立了一個學生物件列表。
  3. 使用IronXL的WorkBook和WorkSheet API在記憶體中建立一個結構化的電子表格。
  4. 手動新增標頭以確保CSV輸出具有可讀性。
  5. 學生資料逐行寫入工作表。
  6. 最後,使用SaveAsCsv()將資料保存為CSV文件。

輸出

如何使用IronXL在C#中將資料保存為CSV:圖4 - 控制台輸出

如何使用IronXL在C#中將資料保存為CSV:圖5 - Excel輸出

此模式具有可擴展性; 如此一來,您可以輕鬆地將其調整為更大的資料集,或將其整合到從資料庫或API檢索學生資料的應用程式中。

例如,如果在寫入文件時發生錯誤(例如,文件被鎖定或路徑無效),您可以再處更應優雅地處理:

try
{
    workbook.SaveAsCsv("students.csv");
}
catch (Exception ex)
{
    Console.WriteLine($"Error occurred while saving CSV: {ex.Message}");
}

這確保即使在出現文件I/O問題時,您的應用程式仍然堅固且具有資訊性。

以下是建立基本CSV文件的範例程式碼。

static void Main(string[] args)
{
 // Create a new workbook
 var writer = WorkBook.Create(ExcelFileFormat.XLSX);
 WorkSheet sheet = writer.CreateWorkSheet("Sales Data");
 // Add headers
 sheet["A1"].Value = "Product";
 sheet["B1"].Value = "Quantity";
 sheet["C1"].Value = "Price";
 sheet["D1"].Value = "Total";
 // Add data rows
 sheet["A2"].Value = "Widget A";
 sheet["B2"].IntValue = 100;
 sheet["C2"].DecimalValue = 29.99m;
 sheet["D2"].Formula = "=B2*C2";
 sheet["A3"].Value = "Widget B";
 sheet["B3"].IntValue = 50;
 sheet["C3"].DecimalValue = 49.99m;
 sheet["D3"].Formula = "=B3*C3";
 // Save as new CSV file
 writer.SaveAsCsv("sales_report.csv");
}

此程式碼建立一個具有標頭和資料的結構化工作簿,然後將其導出為CSV格式。 WorkBook.Create()方法在記憶體中初始化一個新的電子表格。 每個單元格可以承載不同的資料型別,例如字串、整數、小數,甚至是公式。 當您呼叫SaveAsCsv()時,IronXL會自動處理轉換,正確轉義任何特殊字元並保持資料完整性。

此方法的美妙之處在於其靈活性。 您可以在導出之前作為電子表格操作資料,應用公式、格式化或驗證規則。 IronXL在導出過程中自動計算公式,確保您的CSV中包含計算值而不是公式文字。

輸出

如何使用IronXL在C#中將資料保存為CSV:圖6 - CSV輸出

對於自定義分隔符要求,IronXL允許您指定標準逗號的替代方案:

// Save with semicolon delimiter for European locale compatibility
workbook.SaveAsCsv("sales_report.csv", ";");
// Save with tab delimiter
workbook.SaveAsCsv("sales_report.tsv", "\t");

此靈活性確保與各種地區設置和應用需求的相容性。 此程式庫自動處理編碼問題,確保跨不同系統和地區的正確字元表示。

如何使用IronXL在C#中將資料保存為CSV:圖7 - 功能

如何匯出DataTable至CSV?

在.NET應用程式中,DataTables廣泛用於儲存來自資料庫或業務邏輯的表格資料。 IronXL提供了無縫的DataTable到CSV轉換,保留了整個過程中的列名稱和資料型別。

// Create a sample DataTable (simulating database results) to store data
DataTable customerOrders = new DataTable("CustomerOrders");
customerOrders.Columns.Add("OrderID", typeof(int));
customerOrders.Columns.Add("CustomerName", typeof(string));
customerOrders.Columns.Add("OrderDate", typeof(DateTime));
customerOrders.Columns.Add("Amount", typeof(decimal));
// Add sample data
customerOrders.Rows.Add(1001, "Acme Corp", new DateTime(2024, 1, 15), 1250.50m);
customerOrders.Rows.Add(1002, "TechStart Inc", new DateTime(2024, 1, 16), 3500.00m);
customerOrders.Rows.Add(1003, "Global Systems", new DateTime(2024, 1, 17), 875.25m);
// Convert DataTable to CSV using IronXL
WorkBook workbook = WorkBook.Create();
WorkSheet sheet = workbook.CreateWorkSheet("Orders");
// Add headers from DataTable columns
for (int i = 0; i < customerOrders.Columns.Count; i++)
{
    sheet.SetCellValue(0, i, customerOrders.Columns[i].ColumnName);
}
// Add data rows
for (int row = 0; row < customerOrders.Rows.Count; row++)
{
    for (int col = 0; col < customerOrders.Columns.Count; col++)
    {
        sheet.SetCellValue(row + 1, col, customerOrders.Rows[row][col]);
    }
}
// Export to CSV
workbook.SaveAsCsv("customer_orders.csv");

本範例展示了一個真實世界場景,其中來自資料庫的訂單資料需要導出以進行報告或整合目的。 程式碼迭代DataTable結構,保留列標題和行資料。 IronXL適當地處理不同資料型別的轉換,確保日期、小數和字串在生成的CSV文件中格式正確。

輸出

如何使用IronXL在C#中將資料保存為CSV:圖8 - DataTable至CSV輸出

對於涉及多個相關表或進階資料轉換的更複雜情形,您可以利用IronXL的單元格引用和公式功能:

// Add summary row with formulas
int lastRow = customerOrders.Rows.Count + 1;
sheet[$"A{lastRow + 1}"].Value = "Total:";
sheet[$"D{lastRow + 1}"].Formula = $"=SUM(D2:D{lastRow})";
// Calculate and save
workbook.SaveAsCsv("customer_orders_with_total.csv");

此方法提供了比傳統的DataTable匯出方法更多的控制。 您可以在最終匯出之前新增計算欄位、應用條件格式邏輯或重新組織列。 IronXL文件為進階DataTable操控情境提供了全面的範例。

如何將Excel文件轉換為CSV?

IronXL最強大的特點之一是它能夠與現有的Excel文件無縫交流,將它們轉換為CSV格式,同時保留資料完整性。 這在與生成Excel報告但需要CSV進行下游處理的系統整合時特別有用。

// Load an existing Excel file
WorkBook existingWorkbook = WorkBook.Load("Budget.xlsx");
// Access the first worksheet
WorkSheet sheet = existingWorkbook.WorkSheets[0];
// Save as CSV - single sheet
sheet.SaveAsCsv("Budget.csv");
// Or save entire workbook (creates multiple CSV files for multiple sheets)
existingWorkbook.SaveAsCsv("BudgetReport.csv");

載入Excel文件時,IronXL保留所有單元格值,包括那些由公式計算的值。 程式庫在轉換過程中評估Excel公式,確保您的CSV僅包含實際計算值。 這消除了在CSV匯出中出現公式文字的常見問題。

輸入

如何使用IronXL在C#中將資料保存為CSV:圖9 - 樣本輸入

輸出

如何使用IronXL在C#中將資料保存為CSV:圖10 - Excel至CSV輸出

對於包含多個工作表的工作簿,IronXL智能地處理每個工作表:

// Process multiple sheets
WorkBook multiSheetWorkbook = WorkBook.Load("annual_data.xlsx");
foreach (WorkSheet sheet in multiSheetWorkbook.WorkSheets)
{
    string fileName = $"export_{sheet.Name}.csv";
    sheet.SaveAsCsv(fileName);
    Console.WriteLine($"Exported {sheet.Name} to {fileName}");
}

此程式碼迭代Excel文件中的所有工作表,為每個工作表建立單獨的CSV文件。 工作表名稱在文件命名中得以保留,使其容易識別每個CSV文件的來源。IronXL支援多種Excel格式,包括XLSX、XLS、XLSM和XLTX,提供與不同Excel版本和用例的廣泛相容性。 在文件中了解有關格式轉換的更多資訊。

進階CSV管理技術

除了基本的CSV建立之外,IronXL還提供了精緻的功能來處理生產環境中經常出現的複雜場景。 這些功能使它與簡單的文件寫入方法區分開來。

在處理特殊字元時, IronXL自動處理逃逸和編碼:

WorkBook workbook = WorkBook.Create();
WorkSheet sheet = workbook.CreateWorkSheet("Data");
// Data with special characters
sheet["A1"].Value = "Company \"ABC\", Inc.";  // Quotes
sheet["B1"].Value = "Line 1\nLine 2";         // Newlines
sheet["C1"].Value = "Price: €50,00";          // Unicode characters
workbook.SaveAsCsv("special_chars.csv");

IronXL正確地逃逸引號,處理多行內容並保留Unicode字元。 此自動處理防止了手動字串操作方法中常見的CSV解析錯誤。

輸出

如何使用IronXL在C#中將資料保存為CSV:圖11 - 特殊字元輸出

對於批量處理場景,您可以高效地處理多個文件:

string[] sourceFiles = Directory.GetFiles("input_folder", "*.xlsx");
foreach (string file in sourceFiles)
{
    WorkBook wb = WorkBook.Load(file);
    var csv = Path.ChangeExtension(file, ".csv");
    wb.SaveAsCsv(csv);
}

在處理大量資料集時,記憶體效率變得至關重要。 IronXL在內部優化記憶體使用,但您可以通過分塊處理資料和適當釋放資源進一步提升性能:

WorkBook largeWorkbook = WorkBook.Create();
WorkSheet sheet = largeWorkbook.CreateWorkSheet("LargeData");
// Process in batches
const int batchSize = 1000;
for (int batch = 0; batch < 10; batch++)
{
 for (int row = 0; row < batchSize; row++)
 {
  int actualRow = (batch * batchSize) + row;
  sheet.SetCellValue(actualRow, 0, $"Row {actualRow}");
  // Add more data...
  sheet.SetCellValue(actualRow, 1, DateTime.Now);
  sheet.SetCellValue(actualRow, 2, $"Batch {batch + 1}");
 }
}
largeWorkbook.SaveAsCsv("large_dataset.csv");

輸出

如何使用IronXL在C#中將資料保存為CSV:圖12 - 大資料集輸出

結論

IronXL將C#中的CSV文件管理從繁瑣的任務轉變為簡單的流程。 通過為CSV和Excel操作提供統一的API,它消除了對多個程式庫或複雜解析邏輯的需求。 該程式庫自動處理特殊字元、資料型別和編碼問題,確保資料在不同系統和區域中的可靠導出。

無論您是在構建報告系統、資料整合管道還是簡單的導出功能,IronXL都提供了高效CSV管理所需的工具。 其與現有Excel文件和DataTable結構的相容性使其易於整合到現有應用程式中,無需進行大規模重構。 一旦生成CSV文件,您可以直接在Excel中打開它們或使用任何文字編輯器檢查其原始格式,以快速驗證或排除故障。

準備好簡化您的CSV操作了嗎? 從免費試用開始,包括專業支援和更新。

Curtis Chau
技術作家

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

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預約您的免費即時演示
Booking Badge

全球數百萬工程師的信賴

Iron Software的客戶標誌
獲得無義務諮詢
填寫以下表格或電郵sales@ironsoftware.com
您的資料將始終保密。
全球數百萬工程師的信賴
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立