IRONSOFTWAREHOME
USING IRONXL

C# CSV 讀取器和寫入器:使用 IronXL 建立、匯出和轉換 CSV 文件

Curtis Chau
Curtis Chau
Updated: 2026年4月21日

CSV檔案 -- 以純文字格式儲存的逗號分隔值 -- 仍然是應用程式、資料庫和報告系統之間資料交換最普遍的格式之一。 無論是匯出使用者列表、生成財務報告,還是準備資料匯入分析平台,使用C#以程式化方式建立和讀取CSV檔案的能力對於現代.NET開發至關重要。 開發人員通常使用簡單的StreamWriter開始CSV生成,但隨著資料複雜性的增長,這些手動方法很快就變得容易出錯。

一些開發人員轉而使用CSV Helper程式庫進行基本的讀寫操作,但與像IronXL這樣以電子表格為基礎的方法相比,這些工具仍然需要手動映射和行級別處理。 本指南演示如何寫入資料到CSV檔案,將現有的Excel工作簿轉換為CSV格式,並使用IronXL將物件匯出為逗號分隔值 -- 這是一個強大的.NET程式庫,可以簡化電子表格操作而無需安裝Microsoft Excel。 IronXL可以在Windows、macOS、Linux和如Docker和Azure等容器環境中運行,使其成為雲原生應用程式和微服務架構的理想選擇。

什麼是CSV格式及其重要性是什麼?

逗號分隔值(CSV)檔案是儲存和交換表格資料的最廣泛使用的格式之一。 最簡單的形式中,CSV檔是一個純文字檔,每行包含一系列以逗號分隔的值。 這種簡單的結構使得CSV資料可以在各種軟體系統中輕鬆生成、讀取和處理。

CSV格式既輕量又可人類閱讀,這就是為什麼它是輸出報告、在資料庫之間轉移資料和與分析工具整合的流行選擇。 CSV檔中的每行表示一條記錄,該行中的每個值由逗號分隔。 檔案的第一行通常用作標題,列出每個欄位的名稱。 每個後續行包含實際資料,每個值對應於標題中的一列。

了解CSV檔的結構有助於您在選擇分隔符、字元轉義和編碼時做出更好的決策,這些都是影響下游系統能否可靠解析您輸出的因素。 CSV檔格式由RFC 4180定義,提供了關於處理如嵌入逗號、字段中的新行字元和引用的字串值等邊界情況的指導。

如何將 IronXL 安裝到 .NET 專案中?

通過NuGet(Microsoft為.NET提供的套件管理器)將IronXL新增到新項目中僅需幾秒鐘。 打開Visual Studio,然後進入NuGet Package Manager Console,執行以下命令:

PM > Install-Package IronXL.Excel

C# 使用IronXL保存至CSV:圖片1 - 安裝

或者,右鍵單擊Solution Explorer中的專案,選擇"Manage NuGet Packages",在Browse選項卡中搜索"IronXL",然後點選"Install"安裝。 IronXL支持.NET Framework 4.6.2+、.NET Core、.NET 5/6/7/8/10,並在任何平台上運行而無需外部依賴或COM互操作要求。

安裝完成後,使用using語句將IronXL命名空間新增到您的程式碼文件中:

using IronXL;

這個單一的命名空間提供了進行電子表格建立和CSV匯出操作所需的所有類的存取。 與依賴於StringBuilder基於手動方式寫入CSV文件的方法不同,IronXL自動處理正確CSV格式的所有複雜性,包括轉義特殊字元、保持資料型別和在匯出前評估公式。

IronXL文件涵蓋了完整的API介面,包括高級功能,如單元格樣式、公式評估、密碼保護和圖表生成。 快速參考,IronXL範例庫提供了涵蓋數十個常見電子表格情景的即時運行程式碼範例。

IronXL支持哪些平台?

IronXL可在支持.NET的平台上運行。 這包括Windows桌面和伺服器環境、macOS開發機器以及包括Docker容器在內的Linux伺服器。 對於在Azure或AWS上構建雲原生應用的團隊,IronXL無需任何額外的配置即可使用。 該程式庫不需要COM互操作、Microsoft Office安裝,也不需要外部系統依賴 -- 使其易於通過標準套件管理工作流程部署和更新。

如何從頭建立一個新的CSV檔案?

程式化建立新的CSV檔案涉及三個步驟:建立工作簿、填充資料和以CSV格式儲存。 IronXL的API鏡像了熟悉的Excel物件模型,使開發者可以輕鬆編寫可在主控台應用程式或任何.NET專案型別上進行電子表格概念工作的程式碼。

考慮需要將員工記錄列表匯出為CSV的情景。這是一個使用高級語句的完整範例:

using IronXL;

// Create a new workbook and worksheet
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.CreateWorkSheet("Employees");

// Add header row with column names
sheet["A1"].Value = "EmployeeID";
sheet["B1"].Value = "Name";
sheet["C1"].Value = "Department";
sheet["D1"].Value = "Salary";

// Add employee data rows
sheet["A2"].Value = 1001;
sheet["B2"].Value = "Sarah Johnson";
sheet["C2"].Value = "Engineering";
sheet["D2"].Value = 85000;

sheet["A3"].Value = 1002;
sheet["B3"].Value = "Michael Chen";
sheet["C3"].Value = "Marketing";
sheet["D3"].Value = 72000;

sheet["A4"].Value = 1003;
sheet["B4"].Value = "Emily Rodriguez";
sheet["C4"].Value = "Finance";
sheet["D4"].Value = 91000;

// Save as CSV file
workBook.SaveAsCsv("employees.csv", ",");

WorkBook.Create()方法在記憶體中完全初始化一個新的電子表格,不需要使用臨時文件或磁碟的輸入/輸出,直到最終的儲存操作。 CreateWorkSheet()方法向工作簿中新增了一個命名的工作表 -- 當匯出多工作表的工作簿到CSV時,這個名字會變得很重要。

輸出

C# 使用IronXL保存至CSV:圖片2 - CSV輸出

sheet["A1"]這樣的單元格參考提供了對指定單元格的直接存取,並在那裡可以賦值。 IronXL接受多種資料型別,包括字串、整數、小數、日期和布林值,自動處理每種型別的適當格式。 複雜資料輸入情況下,查看IronXL範圍操作指南,了解批量單元格賦值技術。

SaveAsCsv()方法將工作表內容匯到檔案。第一個參數指定輸出檔名和路徑,第二個參數定義分隔字元。 IronXL自動處理適當的格式,包括轉義可能破壞CSV解析的特殊字元並在整個匯出過程中保持資料完整性。

如何匯出物件列表到CSV?

處理強型別物件時,您可以使用foreach迴圈遍歷集合,然後將每個項目寫入工作表。 這裡是一個使用具有公共字串屬性的Student類的範例:

using IronXL;

// Define the Student class with public string properties
public class Student
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
}

// Create sample data
var students = new List<Student>
{
    new Student { FirstName = "John", LastName = "Smith", Email = "john@example.com" },
    new Student { FirstName = "Jane", LastName = "Doe", Email = "jane@example.com" }
};

WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.DefaultWorkSheet;

// Add header row
sheet["A1"].Value = "FirstName";
sheet["B1"].Value = "LastName";
sheet["C1"].Value = "Email";

// Use foreach to iterate through the list and write each item
int row = 2;
foreach (var item in students)
{
    sheet[$"A{row}"].Value = item.FirstName;
    sheet[$"B{row}"].Value = item.LastName;
    sheet[$"C{row}"].Value = item.Email;
    row++;
}

workBook.SaveAsCsv("students.csv", ",");

這個模式演示了如何通過遍歷每個項目並將其屬性映射到特定欄進行CSV資料匯出列表物件。 foreach迴圈處理集合中的每個學生,並透過字串插值動態構造單元格參考。 對於涉及基於反射的屬性映射或匿名型別的情景,您可以藉由遍歷型別元資料的PropertyInfo物件來調整此方法。

如何將現有Excel檔案轉換為CSV?

當整合到舊系統、準備資料進行資料庫匯入或從人類建立的報告生成機械可讀輸出時,將Excel電子表格轉換為CSV格式是一個常見要求。 IronXL以最小的程式碼處理此轉換,同時保持資料準確性。

using IronXL;

// Load an existing Excel file
WorkBook workBook = WorkBook.Load("Monthly_Report_20251012.xlsx");

// Convert and save as CSV format
workBook.SaveAsCsv("Monthly_Report_20251012.csv");

Load()方法開啟包括XLSX、XLS、XLSM甚至現有的CSV或TSV文件在內的各種格式的Excel文件。 這種靈活性意味著您可以構建標準化的匯出管道,無論其原始格式如何都可以接受輸入文件。 請參閱IronXL文件中的受支持的Excel格式的完整列表

輸入

C# 使用IronXL保存至CSV:圖片3 - 範例Excel輸入

輸出

C# 使用IronXL保存至CSV:圖片4 - Excel到CSV輸出

IronXL在轉換中的一個突出特點是自動公式評估。 保存到CSV時,IronXL計算電子表格中存在的所有公式,並輸出計算結果值,而不是公式文字。 例如,包含=SUM(A1:A10)的單元格將被匯出為計算的總數,確保CSV文件包含可操作的資料,以便下游系統可以立即使用。

多工作表匯出如何運作?

處理包含多個工作表的Excel工作簿時,IronXL會自動為每個工作表建立單獨的CSV檔案。 此功能對於財務報告、地區銷售資料或每個部門或類別佔據單一主工作簿中的一個工作表的任何情況特別有價值。

using IronXL;

// Load a multi-sheet workbook (e.g., annual sales by region)
WorkBook workBook = WorkBook.Load("annual_sales.xlsx");

// Export all sheets to CSV -- creates separate files for each sheet
workBook.SaveAsCsv("sales_export.csv");
// Output: sales_export.North.csv, sales_export.South.csv, sales_export.East.csv, etc.

// Or export a specific worksheet
WorkSheet northRegion = workBook.GetWorkSheet("North");
northRegion.SaveAsCsv("north_region_sales.csv");

命名約定將每個工作表名稱附加到基礎檔名中,這使得在處理或歸檔時容易識別每個匯出檔案的來源。 對於僅需要特定工作表的目標匯出,使用SaveAsCsv()在該表物件上。

了解更多關於IronXL文件中Excel格式間的轉換

如何匯出DataTable到CSV?

Enterprise應用程式經常處理DataTable物件,由資料庫查詢、API回應或記憶體資料處理獲得。 IronXL在這些.NET資料結構和文件匯出之間建立了橋樑,提供從應用程式記憶體到可共享的CSV文件的可靠路徑。 這種方法比使用StreamWriter手動編寫CSV文件更具可靠性,因為IronXL自動處理字元轉義、分隔符管理和編碼。

using IronXL;
using System.Data;

// Create and populate a DataTable with columns
DataTable products = new DataTable();
products.Columns.Add("SKU", typeof(string));
products.Columns.Add("ProductName", typeof(string));
products.Columns.Add("Price", typeof(decimal));
products.Columns.Add("InStock", typeof(int));

// Add rows of data
products.Rows.Add("SKU-001", "Wireless Mouse", 29.99m, 150);
products.Rows.Add("SKU-002", "Mechanical Keyboard", 89.99m, 75);
products.Rows.Add("SKU-003", "USB-C Hub", 45.99m, 200);

// Create workbook and transfer DataTable contents
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.DefaultWorkSheet;

// Add header row from column names
for (int col = 0; col < products.Columns.Count; col++)
{
    sheet.SetCellValue(0, col, products.Columns[col].ColumnName);
}

// Add data rows using nested loops
for (int row = 0; row < products.Rows.Count; row++)
{
    for (int col = 0; col < products.Columns.Count; col++)
    {
        sheet.SetCellValue(row + 1, col, products.Rows[row][col].ToString());
    }
}

// Export to CSV
workBook.SaveAsCsv("product_inventory.csv", ",");

此模式遍歷DataTable結構,首先轉移列標題,然後系統地填充每個資料行。 DefaultWorkSheet屬性提供快速存取新建立工作簿中的第一個工作表,在簡單情景中不需要顯式的工作表建立。

輸出

C# 使用IronXL保存至CSV:圖片5 - DataTable到CSV輸出

IronXL在傳輸過程中保存資料型別,確保數值保持其精度,日期保持其格式。 這種方法非常適合任何大小的DataTables,無論是來自簡單查詢查找的幾行還是來自大型資料匯出的數千條記錄。 在匯出之前進行更多的電子表格操作,探索單元格格式選項和範圍操作

如何處理CSV文件中的自定義分隔符?

不同的系統和地區標準需要不同的分隔符字元。 雖然逗號是許多國家的標準分隔符,但在歐洲地區,由於逗號用作數值的小數分隔符,通常更喜歡分號。 當源資料中包含字段值中的逗號時,Tab分隔的文件(TSV)很受歡迎。 IronXL的SaveAsCsv()方法適應所有這些情況,而無需額外的程式碼來處理每行的輸出。

using IronXL;

WorkBook workBook = WorkBook.Load("data.xlsx");

// Standard comma delimiter (default format)
workBook.SaveAsCsv("output_comma.csv", ",");

// Semicolon delimiter (common in European systems)
workBook.SaveAsCsv("output_semicolon.csv", ";");

// Tab delimiter (TSV format)
workBook.SaveAsCsv("output_tab.tsv", "\t");

// Pipe delimiter (used in some data interchange formats)
workBook.SaveAsCsv("output_pipe.csv", "|");

SaveAsCsv()的第二個參數接受任何字串作為分隔符,提供了與各種系統和地區要求整合的完全靈活性。 在生成國際分發的檔案時,考慮目標系統的區域設置期望 -- 歐洲的金融系統經常期望分號分隔,而北美系統通常預設為逗號。 CSV的RFC 4180標準描述了含有分隔符的值應該如何引用以防止解析錯誤。

使用C#生成CSV檔案的最佳實踐是什麼?

在C#中使用CSV檔案時,遵循成熟的做法確保您的資料保持準確、可讀和與其他系統相容。 以下表格總結了最重要的考慮事項:

在C#中生成CSV檔案的最佳實踐
實踐為什麼這很重要IronXL方法
保持一致的分隔符防止在下游系統中出現解析錯誤將分隔符作為第二個參數傳遞給SaveAsCsv()
引用特殊值當資料中出現逗號時保持字段完整性由IronXL自動處理
一致的日期格式避免跨區域和系統的歧義在儲存前設置單元格格式以控製輸出
避免值中出現新行防止行結構的損壞IronXL在匯出過程中轉義嵌入的新行
處理異常情況確保文件流正確關閉IronXL在內部處理資源回收
在儲存前驗證在資料進入消費者前捕捉資料問題使用範圍操作在匯出前驗證單元格值

除了基本知識外,針對國際聽眾時明確考慮編碼。 UTF-8 with BOM通常需要用於在Microsoft Excel中顯示非ASCII字元的CSV檔案。 對於涉及數百萬行的大批量匯出,考慮將資料切分為多個檔案而不是寫入單個大CSV -- 這使得文件大小易於處理,並在生成和消耗過程中降低記憶體壓力。

對於構建資料管道的團隊,IronXL異步和流式文件涵蓋了在不將整個工作簿載入記憶體的情況下處理大型資料集的模式。 IronXL範例庫包含了批處理、計劃匯出作業及與流行的ORM架構如Entity Framework的整合的額外模式。

使用.NET生態系統的CSV處理工具時,了解IronXL相對於較低級方法的位置有助於您選擇每個情況的正確工具。 對於不涉及任何Excel參與的純CSV生成,StreamWriter過程中的手動引用邏輯可能就足夠了。 對於涉及Excel格式相容性、公式評估或豐富格式的任何事情,IronXL提供更可靠的基礎。

如何用IronXL讀取現有的CSV文件?

將CSV資料重新載入您的應用程式遵循與載入任何其他電子表格格式相同的模式。 IronXL的Load()方法識別CSV文件並將其解析為標準工作簿/工作表模型,使您可以使用與Excel文件相同的API存取單獨的單元格和範圍。

using IronXL;

// Load an existing CSV file
WorkBook workBook = WorkBook.Load("employees.csv");
WorkSheet sheet = workBook.DefaultWorkSheet;

// Access specific cells by reference
string firstHeader = sheet["A1"].StringValue;

// Iterate through all rows
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
    {
        Console.Write(cell.StringValue + "\t");
    }
    Console.WriteLine();
}

// Access a range of cells
var nameColumn = sheet["B2:B100"];
foreach (var cell in nameColumn)
{
    Console.WriteLine(cell.StringValue);
}

這種讀寫操作的一致性意味著您的團隊只需要學習一個API來處理所有與電子表格相關的任務。 開啟CSV檔案的同一個WorkBook.Load()方法也處理XLSX、XLS和XLSM格式 -- 在構建可接受多種格式輸入的管道時非常有用。 在文件中了解更多關於使用IronXL讀取CSV檔案的資料。

您的下一步是什麼?

本指南涵蓋了使用IronXL在C#中建立和管理CSV檔案的核心模式:

  • WorkBook.Create()在記憶體中初始化新電子表格
  • WorkBook.Load()開啟現有的Excel和CSV檔案,支持任何格式
  • SaveAsCsv()使用可自定義分隔符匯出資料
  • 使用GetWorkSheet()進行個別工作表匯出以進行目標轉換
  • DataTable資料庫到CSV工作流的迭代模式
  • 使用foreach迴圈進行物件列表匯出
  • 通過完整範圍存取重新將CSV資料載入您的應用程式中

要將這些技術付諸實踐,開始免費試用IronXL,探索完整的電子表格功能,測試時間不受限制。 當準備部署到生產環境時,查看IronXL的許可選項,以找到適合您的團隊規模和使用需求的計畫。

更多涵蓋諸如單元格樣式、公式建立、圖表生成和密碼保護等高階場合的範例,探索IronXL文件完整的程式碼範例庫IronXL教學系列講述了更複雜的整合情景,包括DataTable匯出格式轉換寫入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天試用金鑰
無需信用卡或帳戶建立