IRONSOFTWAREHOME
USING IRONXL

C# CSV 檔案讀取器:使用 IronXL 解析和處理 CSV 資料

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

CSV(逗號分隔值)文件在商業應用中無處不在,從財務報告到客戶資料導出皆是如此。 CSV格式表面上看似簡單,但在生產程式碼中解析它可能會因處理帶引號的欄位、多種資訊符號型別、嵌入的新行以及將原始文字轉換為強型別.NET物件的需求而迅速變得困難。 IronXL是一個.NET程式庫,提供企業級的CSV文件處理,允許開發人員以最少的程式碼將CSV資料轉換為Excel、XML或其他格式。

本指南將引導您了解IronXL如何作為C# CSV文件閱讀器工作,以及如何在您的.NET 10應用中實施它。 您可以試用免費試用授權來親自體驗IronXL,並學習它如何處理CSV和Excel任務。

如何安裝IronXL以閱讀CSV文件?

將IronXL引入您的專案只需片刻時間。 您可以透過Visual Studio中的NuGet套件管理器安裝它,也可以通過命令行使用.NET CLI或PowerShell中的NuGet套件管理器控制台安裝。 這兩種方法會安裝相同的套件,並適用於任何.NET 10專案型別。

dotnet add package IronXL.Excel

有關安裝選項和配置的更多詳細資訊,請參見IronXL安裝文件

安裝完成後,閱讀您的第一個CSV文件所需的程式碼非常少。 下面的範例使用.NET 10的頂層語句:

using IronXL;

// Load CSV file
WorkBook workbook = WorkBook.LoadCSV("data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a specific cell
string cellValue = sheet["A1"].StringValue;

// Iterate through all rows and cells
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
    {
        Console.WriteLine(cell.StringValue);
    }
}

WorkBook.LoadCSV方法處理標頭識別,建立內部資料結構,並執行記憶體效能高的解析——簡化您從第一行程式碼的資料管理。

C# CSV文件閱讀器指南:使用IronXL解析和轉換CSV資料:圖1 - IronXL NuGet安裝

如何使用自定義的資訊符號閱讀CSV文件?

現實世界的CSV文件並不總是使用逗號。 分號、管道和製表符是常見的替代品,尤其是在國際資料集中,逗號作為小數分隔符。 IronXL通過其靈活的載入選項處理任何資訊符號。

using IronXL;

// Load CSV with semicolon delimiter (common in European data exports)
WorkBook workbook = WorkBook.LoadCSV("european-data.csv",
    fileFormat: ExcelFileFormat.XLSX,
    listDelimiter: ";");

// Load tab-separated values (TSV)
WorkBook tsvWorkbook = WorkBook.LoadCSV("export_data.tsv",
    fileFormat: ExcelFileFormat.XLSX,
    listDelimiter: "\t");

// Load pipe-delimited file
WorkBook pipeWorkbook = WorkBook.LoadCSV("log_export.csv",
    fileFormat: ExcelFileFormat.XLSX,
    listDelimiter: "|");

// Access data normally after loading
WorkSheet sheet = workbook.DefaultWorkSheet;
decimal totalSales = sheet["B2:B10"].Sum();

Console.WriteLine($"Total sales: {totalSales}");

list信息符號參數接受任何字串,讓您完全控制解析行為。 IronXL在解析期間保留列值和資料型別——數值保持為數字,日期維持為DateTime物件,公式維持其關係。

對於格式不一致的文件,IronXL的錯誤處理處理格式錯誤的行不會崩潰應用程式,即使個別行有問題,也能繼續處理有效資料。

C# CSV文件閱讀器指南:使用IronXL解析和轉換CSV資料:圖2 - 入門範例輸出

支援的文件格式和分隔符

IronXL在閱讀CSV文件時支持載入以下資訊符號型別:

IronXL的LoadCSV方法支持常見的資訊符號型別
資訊符號字元常見用例
逗號,標準CSV,美國地區導出
分號;歐洲地區導出(逗號為小數符)
製表符\t製表符分隔值(TSV),資料庫導出
管道|日誌文件,系統導出
自定義字串任何專有資料格式,多字元分隔符

如何將CSV資料解析為C#物件?

將CSV行轉換為強型別物件可以簡化資料處理並啟用LINQ操作。 IronXL通過其單元存取方法使映射變得簡單明瞭。 以下程式碼演示如何使用.NET 10的頂層語句將CSV文件映射到一個型別化物件列表:

using IronXL;

// Define a typed model matching your CSV structure
public record Product(string Name, decimal Price, int Stock, DateTime? LastUpdated);

// Load and parse CSV file
WorkBook workbook = WorkBook.LoadCSV("inventory.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

var products = new List<Product>();

// Start from row 2 to skip the header row
for (int row = 2; row <= sheet.RowCount; row++)
{
    products.Add(new Product(
        Name: sheet[$"A{row}"].StringValue,
        Price: sheet[$"B{row}"].DecimalValue,
        Stock: sheet[$"C{row}"].IntValue,
        LastUpdated: sheet[$"D{row}"].DateTimeValue
    ));
}

// Use LINQ for analysis after loading
var lowStock = products.Where(p => p.Stock < 10).ToList();
var highValue = products.Where(p => p.Price > 100m).OrderByDescending(p => p.Price).ToList();

Console.WriteLine($"Products with low stock: {lowStock.Count}");
Console.WriteLine($"High-value products: {highValue.Count}");

IronXL的型別化值屬性——DateTimeValue——安全地處理轉換,對於無效資料返回預設值而不是拋出異常。 這種預防性方法確保應用程式在處理不完善的資料時不會中斷。 它與C# 9引入的C# 記錄型別自然配合,為映射的CSV行提供了一個簡潔、不可變的資料模型。

IronXL功能頁面提供了可用於讀取單元資料的值存取器型別的完整概覽。

C# CSV文件閱讀器指南:使用IronXL解析和轉換CSV資料:圖3 - 閱讀不同分隔符的輸出

如何使用LINQ過濾和查詢CSV資料?

一旦將CSV資料載入到WorkSheet,您可以使用範圍選擇器來處理它或將其轉換為物件以進行LINQ查詢。 對於簡單的列操作,基於範圍的存取是最直接的途徑:

using IronXL;

WorkBook workbook = WorkBook.LoadCSV("sales-data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read entire columns using range notation
var productNames = sheet["A2:A100"]
    .Select(cell => cell.StringValue)
    .Where(name => !string.IsNullOrEmpty(name))
    .ToList();

// Aggregate numeric columns directly
decimal totalRevenue = sheet["C2:C100"].Sum();
decimal averageOrder = sheet["C2:C100"].Avg();

Console.WriteLine($"Products loaded: {productNames.Count}");
Console.WriteLine($"Total revenue: {totalRevenue:C}");
Console.WriteLine($"Average order value: {averageOrder:C}");

這種基於範圍的方法避免了逐行迭代進行簡單聚合,提高了大文件的性能。 查看IronXL文件以獲取支持的範圍操作的完整列表。

如何在C#中將CSV轉換為Excel格式?

許多業務流程需要將CSV資料轉換為Excel格式以進行高級分析、格式化或分發。 IronXL使這種轉換變得簡單,同時保留所有資料完整性。

using IronXL;

// Load CSV file
WorkBook csvWorkbook = WorkBook.LoadCSV("monthly-report.csv");
WorkSheet sheet = csvWorkbook.DefaultWorkSheet;

// Apply formatting before saving
sheet["A1:D1"].Style.Font.Bold = true;
sheet["A1:D1"].Style.BackgroundColor = "#4472C4";
sheet["A1:D1"].Style.Font.Color = "#FFFFFF";

// Apply currency format to price column
sheet["B2:B1000"].FormatString = "$#,##0.00";

// Apply date format to date column
sheet["D2:D1000"].FormatString = "yyyy-MM-dd";

// Save as Excel with a single method call
csvWorkbook.SaveAs("monthly-report.xlsx");

Console.WriteLine("Conversion complete: monthly-report.xlsx");

轉換保留數字精度、日期格式和特殊字元,這些經常在手動轉換方法中引發問題。 IronXL自動優化生成的Excel文件結構,即使在大資料集的情況下也能快速打開。

若需對輸出格式有額外的控制,匯出指引涵蓋了包括XLSX、XLS、CSV和PDF匯出的選項。 您還可以學習如何編寫Excel文件從頭開始建立Excel文件

C# CSV文件閱讀器指南:使用IronXL解析和轉換CSV資料:圖4 - 解析CSV資料輸出

將CSV轉換為資料集進行資料庫操作

當您需將CSV資料載入到DataSet以進行進一步處理或資料庫插入時,IronXL提供直接的轉換支持。 Excel到資料集指南詳細解釋:

using IronXL;
using System.Data;

WorkBook workbook = WorkBook.LoadCSV("customer-export.csv");

// Convert entire workbook to DataSet
DataSet dataSet = workbook.ToDataSet();

// The first sheet becomes the first Data製表符le
DataTable customerTable = dataSet.Tables[0];

Console.WriteLine($"Rows loaded: {customerTable.Rows.Count}");
Console.WriteLine($"Columns: {customerTable.Columns.Count}");

// Process with standard ADO.NET
foreach (DataRow row in customerTable.Rows)
{
    string name = row["Name"]?.ToString() ?? string.Empty;
    string email = row["Email"]?.ToString() ?? string.Empty;
    Console.WriteLine($"Customer: {name} <{email}>");
}
C#

這種方法直接整合到ADO.NET工作流中,當將CSV資料推送到SQL Server、SQLite或其他關聯資料庫中時,非常有用,通過標準資料適配器。 由於Data製表符le是核心.NET型別,這條路徑除了IronXL本身之外不需要其他依賴。

如何處理大型CSV文件及性能優化?

處理大型CSV文件——成千上萬行或者更多——需要關注資料的存取方式及記憶體管理方式。 IronXL包含有助於大型文件場景的功能。

使用範圍操作來提升性能

為了在大型資料集上獲得最佳性能,請使用範圍操作而不是一次存取一個單獨的單元。範圍操作由IronXL的內部引擎更高效地處理:

using IronXL;

WorkBook workbook = WorkBook.LoadCSV("large-dataset.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

int rowCount = sheet.RowCount;
int colCount = sheet.ColumnCount;

Console.WriteLine($"Dataset dimensions: {rowCount} rows x {colCount} columns");

// Efficient: read entire range at once
var allData = sheet[$"A1:{GetColumnLetter(colCount)}{rowCount}"]
    .Select(cell => cell.StringValue)
    .ToList();

// Efficient: aggregate a column without row-by-row iteration
decimal columnSum = sheet[$"B2:B{rowCount}"].Sum();

Console.WriteLine($"Column B total: {columnSum}");

static string GetColumnLetter(int col)
{
    string result = string.Empty;
    while (col > 0)
    {
        col--;
        result = (char)('A' + col % 26) + result;
        col /= 26;
    }
    return result;
}

IronXL在載入CSV文件時自動處理文字編碼變化(例如UTF-8、UTF-16、ASCII),確保列值中的國際字元在無需額外配置的情況下顯示正確。 這對於從使用UTF-8 BOM或替代編碼地區的系統導出的文件來說尤其重要。

處理不受信任的CSV來源的錯誤

在處理來自不受信任或可變來源的CSV文件時,用try-catch塊將操作包裝起來提供了一層額外的安全保障:

using IronXL;

string filePath = "user-uploaded-data.csv";

try
{
    WorkBook workbook = WorkBook.LoadCSV(filePath);
    WorkSheet sheet = workbook.DefaultWorkSheet;

    Console.WriteLine($"Loaded {sheet.RowCount} rows from {filePath}");

    for (int row = 2; row <= sheet.RowCount; row++)
    {
        string value = sheet[$"A{row}"].StringValue;
        if (!string.IsNullOrWhiteSpace(value))
        {
            Console.WriteLine(value);
        }
    }
}
catch (IronXL.Exceptions.IronXLException ex)
{
    Console.WriteLine($"IronXL error reading {filePath}: {ex.Message}");
}
catch (IOException ex)
{
    Console.WriteLine($"File access error: {ex.Message}");
}

IronXL指南介紹了來自不同來源的資料導入模式,包括文件、流和字節陣列。

C# CSV文件閱讀器指南:使用IronXL解析和轉換CSV資料:圖5 - 將CSV轉換為Excel格式

跨平台部署

IronXL獨立於Microsoft Office運行,適合用於伺服器環境和雲端部署。 無論是在Windows、Linux、macOS、Docker容器上還是雲端的Azure或AWS函式中部署,IronXL都能在不更改配置的情況下跨所有平台提供一致的結果。

這種跨平台能力對於微服務架構中的輕量級容器處理資料處理任務來說很有價值。 IronXL功能總覽詳細說明了支持的環境和運行目標的完整列表。

如何獲得IronXL的授權?

在生產環境中使用IronXL需要授權金鑰。 可提供一個免費試用授權供評估使用,並且有商業授權供個別開發者、團隊和組織使用。

在進行任何IronXL調用之前,在您的應用程式中應用授權金鑰:

using IronXL;

// Apply license key at application startup
IronXL.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";

// Verify the license is active
if (IronXL.License.IsValidLicense("YOUR-LICENSE-KEY-HERE"))
{
    Console.WriteLine("IronXL license is active.");
}

// Now use IronXL normally
WorkBook workbook = WorkBook.LoadCSV("data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
Console.WriteLine($"Loaded {sheet.RowCount} rows.");

有關試用和授權選項,請存取IronXL授權頁面

IronXL是CSV資料處理的正確選擇嗎?

IronXL將C# CSV文件閱讀從繁瑣的解析工作轉變為簡單的操作。 該程式庫處理手動解析常犯的邊緣情況——例如嵌入式逗號、引號欄位中的新行、不一致的資訊符、編碼變化以及格式錯誤的行——而無需為每種場景編寫自定義程式碼。 無論您需要一次性快速資料導入還是每天處理數千個文件的生產流水線,都可以使用相同的API。

手動CSV解析方式如StreamReader在引號欄位中包含分隔符資訊字元,或欄位值中出現換行符時馬上就會失效。 IronXL通過預設的方式正確處理這些情況,並遵循CSV規範的引號欄位處理和轉義序列。

在.NET 10中,IronXL成為CSV工作的一些重要優勢:

  • 無Office依賴:伺服器和雲端部署無需安裝Microsoft Office或任何COM互操作
  • 自訂資訊符號:通過list信息符號參數支持任何資訊符號字元或字串
  • 型別安全的單元存取DateTimeValue存取器在遇到壞資料時返回安全預設值而不是拋出異常
  • 範圍操作:無需逐行迭代即可在範圍內聚合和查詢資料
  • 格式轉換:在一個工作流程中匯入CSV並另存為XLSX, XLS, PDF或其他格式
  • 資料集整合:將載入的工作簿轉換為DataSet / Data製表符le在ADO.NET和資料庫操作中使用
  • 跨平台:在Windows、Linux、macOS、Docker和雲端環境中運行無需更改

IronXL文件單元格式指南進一步詳述了格式化、公式支持和進階工作簿操作。

準備好自信地處理CSV文件了嗎? 從一個免費試用開始,探索完整的IronXL功能集

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