IRONSOFTWAREHOME
USING IRONXL

如何在 C# 中讀取帶有逗號的 CSV 文件

Curtis Chau
Curtis Chau
Updated: 2026年5月8日

為什麼 .NET 開發者需要更好的 CSV 解決方案?

CSV 檔案在無數 .NET 應用程式中推動了資料交換。 從財務報表到庫存系統,您只需幾行程式碼即可程式化地建立 CSV 檔案。 雖然像CsvHelper這樣的程式庫涵蓋了基本的 CSV 操作,現代開發者面臨著複雜的情境:轉換帶公式的 Excel 活頁簿,保留匯出期間的資料型別,處理企業級試算表工作流程。 IronXL通過結合強大的 CSV 寫入和全面的Excel 功能來解決這些挑戰,在單一程式庫中輕鬆管理多欄位,無需依賴其他程式庫,遵循RFC 4180 標準

這使得它對於構建自定義 .NET CSV writer 或支持多欄位的 .NET CSV parser 且具備僅影響處理中的列的功能行,並且能自動推斷分隔符的開發人員非常理想。

開始使用 IronXL

安裝 IronXL 只需透過 NuGet Package Manager 點擊幾下即可完成:

PM > Install-Package IronXL.Excel

安裝完成後,新增 IronXL 命名空間即可開始編寫 CSV 檔案並有效地處理分隔數值:

using IronXL;
class Program
{
    static void Main(string[] args)
    {
        // Create a new workbook and worksheet
        WorkBook workBook = WorkBook.Create();
        WorkSheet workSheet = workBook.CreateWorkSheet("data");
        // Add headers
        workSheet["A1"].Value = "Product";
        workSheet["B1"].Value = "Quantity";
        workSheet["C1"].Value = "Price";
        // Add data
        workSheet["A2"].Value = "Widget";
        workSheet["B2"].Value = 100;
        workSheet["C2"].Value = 19.99;
        // Save as CSV with comma delimiter
        workBook.SaveAsCsv("inventory.csv", ",");
    }
}

此簡單的控制台測試程式展示了如何直接從您的 C# 程式碼寫入 CSV 內容,建立包含我們資料的Workbook物件。 此SaveAsCsv 方法使用預設分隔符(逗號),但允許您根據不同區域可選地定義 sep; 這在處理小數點分隔符或替代欄位分隔符字元時特別有用。 在內部,sep 為輸出緩衝區的陣列分配進行處理。 之前提到的 sep 參數允許您定義此字元。

我們還展示了如何提供靜態進入點,並展示如何使用靜態定義的資源池進行有效的記憶體管理,從而即使在多行中也能達到高效的效能。

進階 CSV 檔案建立技術

如何使用 C# 讀取包含逗號的 CSV 檔案:圖 1 - 使用 IronXL 的 CSV 輸出範例

進階 CSV 檔案建立技術

將 Excel 活頁簿轉換為 CSV

IronXL 出色地將現有Excel 檔案轉換為 CSV,計算公式並保留資料完整性。 在編寫同時包含表頭行和動態生成資料的 CSV 檔案時這是必要的。

// Load an Excel file with formulas and formatting
WorkBook workBook = WorkBook.Load("financial_report.xlsx");
// IronXL evaluates formulas before export
workBook.EvaluateAll();
// Export to CSV - each worksheet creates a separate CSV file
workBook.SaveAsCsv("report.csv", ",");
// Creates: report.Sheet1.csv, report.Sheet2.csv, etc.

在轉換多表活頁簿時,IronXL 自動為每個工作表生成單獨的 CSV 檔案。 公式計算在匯出前執行,以確保最終 CSV 輸出中資料的準確性。 但這不僅僅是唯一的一個功能。 預設自動推斷的分隔符確保了跨區域的相容性,多行或多列能夠無縫處理。

您還可以在預設支持的分隔符各有不同的動態環境中使用可空的 sep。

輸出

首先,在這裡您可以看到從我們的多表 Excel 檔案生成的 CSV 檔案:

如何使用 C# 讀取包含逗號的 CSV 檔案:圖 2 - CSV 檔案

這是一個 Excel 表格與相應 CSV 檔案的範例比較:

如何使用 C# 讀取包含逗號的 CSV 檔案:圖 3 - 輸出範例

將資料表(Datatable)匯出為 CSV

對於資料庫驅動的應用程式,IronXL 簡化了DataTable 匯出。 我們將 var 設置為 Datarow,而不是典型的引用 var v,以便更加清晰。

// Assume dataTable contains query results
DataTable dataTable = GetSalesData();
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");
// Import DataTable directly
var row = 1;
foreach (var dataRow in dataTable.Rows)
{
    for (var col = 0; col < dataTable.Columns.Count; col++)
    {
        workSheet.SetCellValue(row, col, dataRow[col].ToString());
    }
    row++;
}
// Export with custom delimiter if needed
workBook.SaveAsCsv("sales_data.csv", ";");

在匯入過程中,從 dataTable.Rows 集合中每一行的水平資料集變為工作表中的新列。 IronXL 在轉換過程中保留資料型別,這意味著數字保持數值,日期保持格式,而文字則能正確處理特殊字元而不需額外配置。

輸出

在這裡,您可以看到我們的模擬資料源旁邊的輸出 CSV 檔案:

如何使用 C# 讀取包含逗號的 CSV 檔案:圖 4 - 資料表到 CSV 輸出

IronXL 與 CsvHelper:CSV 檔案撰寫的全面比較

考慮這個顯示 CSV 解析和撰寫工作流的員工資料匯出情境。

CsvHelper 實現:

using (var writer = new StreamWriter("employees.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(employees);
}

IronXL 實現:

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("employees");
// Add data with automatic type handling
int rowIndex = 1;
foreach (var emp in employees)
{
    workSheet[$"A{rowIndex}"].Value = emp.Name;
    workSheet[$"B{rowIndex}"].Value = emp.Salary;
    workSheet[$"C{rowIndex}"].Value = emp.StartDate;
    rowIndex++;
}
workBook.SaveAsCsv("employees.csv", ",");

功能

CsvHelper

IronXL

基本 CSV 撰寫

Excel 到 CSV 轉換

公式計算

多表處理

資料型別保留

手動

自動

Excel 格式支持

XLSX, XLS, XLSM

不需 Microsoft Office

雖然 CsvHelper 高效地處理了簡單的撰寫欄位操作,IronXL 提供了在多行、插值字串和動態程式碼生成場景中工作的靈活性,甚至允許使用 ref 結構連結等結構進行低層次優化。

開發人員可以枚舉符合特定標準的行,管理預設自動推斷的分隔符,甚至使用簡單的控制台程式進行測試,這些程式揭示了行特定功能,並僅顯示每個條目的鍵以便於除錯。

企業級功能與最佳實踐

IronXL 的 SaveAsCsv 方法包括企業級功能:

  • 自定義分隔符:支持逗號、分號、製表符或任何字元(可以用分隔符 sep 覆蓋預設分隔符)
  • 編碼選項:UTF-8、UTF-16 和自定義編碼
  • 公式計算:在匯出前計算 Excel 公式
  • 跨平台支持:相容 Windows、Linux 和 macOS

開發人員還可以應用擴展方法來存取多欄,以便於高效處理,或者在需要文字換行時撰寫跨多行的 CSV 行。

常見問題與解決方案

在處理 CSV 匯出時,開發人員經常遇到這些挑戰:

  • **資料中的特殊字元:**IronXL 自動轉義號碼、逗點和換行符
  • **大檔案處理:**使用工作表範圍將資料分塊處理,
  • **編碼問題:**為國際字元指定 UTF-8 編碼
  • **缺少資料型別:**IronXL 預設保留數字和日期格式

如需詳細的故障排查,請存取IronXL 的 CSV 文件API 參考支援資源

立即開始構建您的 CSV 寫入器

IronXL 將 CSV 撰寫從解析挑戰轉變為一項簡單的操作。 通過將 CSV 功能與 Excel 活頁簿支持、公式計算和自動型別處理相結合,消除了管理多個程式庫或手動資料轉換的複雜性。

準備簡化您的 CSV 工作流程了嗎? 開始您的免費試用從 $999 開始。

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天試用金鑰
無需信用卡或帳戶建立