跳至頁尾內容
USING IRONXL

如何使用 IronXL 的 .NET Core CSV 讀取器

在 .NET Core 應用程式中處理 CSV 檔案操作是資料匯入和匯出常見的需求。 然而,開發者在嘗試解析CSV文件內容並有效閱讀CSV時,常常會遇到不同的分隔符號、資料型別轉換和效能問題。 雖然像是CsvHelper套件(由Josh Close建立)和TextFieldParser這樣的程式庫存在於CSV解析中,但並非所有程式庫均提供全面的Excel互操作性和強大的例外處理能力。 IronXL 脫穎而出,成為一個出色的程式庫和經過實戰考驗的CSV解析解決方案,它無縫處理CSV和Excel格式,提供針對大規模批次處理場景的卓越性能優化。 本教程展示如何有效地使用 IronXL 作為您的 .NET Core CSV 讀取器,通過實際且易於遵循的範例來有效率地剖析 CSV 資料,包括使用非同步操作來提高應用程式的回應性。 為開源 CSV 工具貢獻改進或提交 pull request 的開發人員也會發現 IronXL 的清晰 API 是一個有價值的參考,特別是在管理包含重複值、重複條目的資料集或需要在資料匯入過程中進行資料驗證時。

.NET生態系統中,有數個用於處理CSV文件操作的套件,包括EPPlus、NPOI和OpenXML等替代方案,但IronXL的多功能性使其成為開發者的首選,超越了簡單的CSV閱讀,還可享受單一CSV程式庫中的Excel互操作性,特別是在Enterprise應用中進行ETL操作和生成報告任務時。 當然,選擇正確的解析器取決於您特定的需求,我們希望這份全面的指南能回答您的問題並幫助您做出明智的決定。

為什麼選擇 IronXL 作為您的 .NET Core CSV 讀取器?

在為您的應用程式選擇.NET Core CSV讀取器時,IronXL相比傳統CSV解析程式庫提供了幾個吸引人的優勢。 IronXL 提供與.NET Core最新架構的無縫整合,同時保持與.NET Framework專案的向後相容性。 這個.NET Core CSV讀取器解決方案消除了開發者在處理CSV文件操作時面臨的常見痛點,包括:

  • 對國際字元集的自動編碼偵測
  • 無需手動配置的智慧分隔符號識別
  • 從幾 KB 到幾 GB 檔案的記憶體有效處理
  • 內建的資料型別推斷和轉換
  • 在各平台上處理回車和換行符號
  • 即使使用 CSV 資料也支持 Excel 公式
  • 在 Windows、Linux 和 macOS 上具有跨平台可靠性

與需要大量配置和手動解析邏輯的基本CSV讀取器不同,IronXL可自動處理邊界情況,如包含分隔符的引用欄位、多行單元格值和特殊字元。 這個程式庫作為.NET Core CSV讀取器的架構透過惰性載入和流處理能力確保最佳性能,適合小型配置文件和大規模資料處理任務。 請注意,在需要時,IronXL可以跳過標頭行並有效地分割複雜的資料結構。

對於從遺留系統轉移的開發人員,IronXL 提供了一個熟悉的 API,減少學習曲線,同時提供現代的 async/await 模式以提高應用程式的回應性。 這使其成為團隊現代化資料處理基礎設施的理想.NET Core CSV讀取器選擇。

如何快速開始使用IronXL閱讀CSV文件?

無論您是構建控制台應用程式、ASP.NET Core網頁應用程式還是Windows Forms應用程式,在您的.NET Core專案中安裝IronXL只需幾秒鐘。 要在 .NET Core 中高效解析 CSV 檔案並開始讀取 CSV 資料,請在 Visual Studio 中打開套件管理器控制台並運行:

Install-Package IronXL.Excel

如何使用IronXL進行.NET Core CSV讀取器:圖2 - 安裝

或者,使用 NuGet 套件管理器 UI,搜尋 "IronXL.Excel" 並點擊安裝。 在從.NET Framework專案遷移到.NET Core的過程中,這個CSV文件讀取器與現有的.NET Framework專案無縫整合。 您還可以透過.NET CLI使用命令行參數安裝,或直接從GitHub引用安裝。

如何使用IronXL進行.NET Core CSV讀取器:圖3 - IronXL安裝

安裝完成後,將命名空間加入您的程式碼中:

using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

這個簡單的CSV程式庫設置讓您能夠在不需要Microsoft Office或Interop依賴項的情況下存取功能強大的CSV讀取功能,非常適合雲部署和Docker容器。 如需詳細安裝說明和配置設定,請查看IronXL安裝指南文件。

如何使用IronXL進行.NET Core CSV讀取器:圖4 - 跨平台

如何使用IronXL的LoadCSV方法閱讀CSV文件?

IronXL 使用其LoadCSV方法簡化了CSV文件的處理,該方法高效處理CSV標頭、CSV欄位和CSV行,範例如下:

// Load CSV file into a WorkBook object for .NET Core CSV reading
var reader = WorkBook.LoadCSV("Budget.csv", 
    fileFormat: ExcelFileFormat.XLSX, 
    listDelimiter: ",");
// Access the default worksheet containing parsed CSV data
WorkSheet worksheet = reader.DefaultWorkSheet;
// Read specific cell values with type-safe methods
string cellValue = worksheet["A1"].StringValue;
// Iterate through a range for bulk CSV data processing
foreach (var cell in worksheet["A1:C10"])
{
    Console.WriteLine($"Cell {cell.AddressString}: {cell.Text}");
}
// Load CSV file into a WorkBook object for .NET Core CSV reading
var reader = WorkBook.LoadCSV("Budget.csv", 
    fileFormat: ExcelFileFormat.XLSX, 
    listDelimiter: ",");
// Access the default worksheet containing parsed CSV data
WorkSheet worksheet = reader.DefaultWorkSheet;
// Read specific cell values with type-safe methods
string cellValue = worksheet["A1"].StringValue;
// Iterate through a range for bulk CSV data processing
foreach (var cell in worksheet["A1:C10"])
{
    Console.WriteLine($"Cell {cell.AddressString}: {cell.Text}");
}
Imports System

' Load CSV file into a WorkBook object for .NET Core CSV reading
Dim reader = WorkBook.LoadCSV("Budget.csv", 
    fileFormat:=ExcelFileFormat.XLSX, 
    listDelimiter:=",")
' Access the default worksheet containing parsed CSV data
Dim worksheet As WorkSheet = reader.DefaultWorkSheet
' Read specific cell values with type-safe methods
Dim cellValue As String = worksheet("A1").StringValue
' Iterate through a range for bulk CSV data processing
For Each cell In worksheet("A1:C10")
    Console.WriteLine($"Cell {cell.AddressString}: {cell.Text}")
Next
$vbLabelText   $csharpLabel

LoadCSV 方法建立了一個WorkBook物件,使用優化的記憶體流處理將您的CSV資料結構表示在内存中。 fileFormat參數指定處理的內部格式,listDelimiter定義您的CSV文件中使用的CSV分隔符字元,支持製表符分隔文件和管道分隔格式。

輸入

如何使用IronXL進行.NET Core CSV讀取器:圖5 - 範例CSV輸入

輸出

如何使用IronXL進行.NET Core CSV讀取器:圖6 - 控制台輸出

當處理來自系統匯出的CSV文件中包含sep=行(有時也稱為"sep takes"標記)時,IronXL智能地讀取此元資料以自動確定正確的分隔符檢測。 此功能在處理使用分號、製表符或管道而非逗號的區域性CSV格式時節省時間,確保正確的編碼檢測和字元編碼處理。

預設的WorkSheet屬性提供了對已解析CSV資料的即時存取,作為工作表,支持單元逐個或基於範圍的資料提取。 您可以使用StringValue、IntValue或DecimalValue等屬性檢索值,以內建型別轉換進行型別安全的操作。 對於更複雜的資料操作和資料轉換,探討IronXL的單元格格式選項和範圍選擇功能。

如何使用IronXL進行.NET Core CSV讀取器:圖7 - 功能

Mapping CSV Data to C# Classes with Data Validation

您還可以直接將CSV資料映射到C#物件,進行字段映射和資料驗證。 例如,假設您有一個包含名稱、年齡和城市字段的CSV文件。 您可以定義一個具有屬性映射的模型,如下所示:

public class Customer
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; } // Example of using public string city
    // Add validation attributes for data integrity
    public bool IsValid()
    {
        return !string.IsNullOrEmpty(Name) && Age > 0;
    }
}
// Create new list for storing records
public List<Customer> customers = new List<Customer>();
// Parse CSV rows into objects
for (int row = 2; row <= worksheet.RowCount; row++)
{
    var customer = new Customer
    {
        Name = worksheet[$"A{row}"].StringValue,
        Age = worksheet[$"B{row}"].IntValue,
        City = worksheet[$"C{row}"].StringValue
    };
    if (customer.IsValid())
        customers.Add(customer);
}
// Output the records
foreach (var record in customers)
{
    Console.WriteLine($"Customer: {record.Name}");
}
public class Customer
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; } // Example of using public string city
    // Add validation attributes for data integrity
    public bool IsValid()
    {
        return !string.IsNullOrEmpty(Name) && Age > 0;
    }
}
// Create new list for storing records
public List<Customer> customers = new List<Customer>();
// Parse CSV rows into objects
for (int row = 2; row <= worksheet.RowCount; row++)
{
    var customer = new Customer
    {
        Name = worksheet[$"A{row}"].StringValue,
        Age = worksheet[$"B{row}"].IntValue,
        City = worksheet[$"C{row}"].StringValue
    };
    if (customer.IsValid())
        customers.Add(customer);
}
// Output the records
foreach (var record in customers)
{
    Console.WriteLine($"Customer: {record.Name}");
}
Option Strict On



Public Class Customer
    Public Property Name As String
    Public Property Age As Integer
    Public Property City As String ' Example of using public string city
    ' Add validation attributes for data integrity
    Public Function IsValid() As Boolean
        Return Not String.IsNullOrEmpty(Name) AndAlso Age > 0
    End Function
End Class

' Create new list for storing records
Public customers As New List(Of Customer)()

' Parse CSV rows into objects
For row As Integer = 2 To worksheet.RowCount
    Dim customer As New Customer With {
        .Name = worksheet($"A{row}").StringValue,
        .Age = worksheet($"B{row}").IntValue,
        .City = worksheet($"C{row}").StringValue
    }
    If customer.IsValid() Then
        customers.Add(customer)
    End If
Next

' Output the records
For Each record In customers
    Console.WriteLine($"Customer: {record.Name}")
Next
$vbLabelText   $csharpLabel

在這裡,字段public string city代表CSV文件中的City(城市)欄位。使用IronXL,您可以輕鬆地將工作表中的每一行映射為Customer物件進行資料處理、JSON序列化、反序列化,或用適當的異常處理導出回另一種格式。 這種方法允許使用者從其CSV資料中建立強型別紀錄。

如何處理不同的分隔符並轉換為DataTable?

現實世界中的CSV文件格式通常使用逗號以外的其他分隔符,這需要靈活的CSV分隔符處理。 IronXL優雅地處理這一問題,具有自動分隔符檢測功能:

// Load CSV with semicolon delimiter
WorkBook workbook = WorkBook.LoadCSV("products.csv", 
    fileFormat: ExcelFileFormat.XLSX, 
    listDelimiter: ";");
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert to DataTable for database operations
DataTable dataTable = worksheet.ToDataTable(true);
// Process the DataTable
foreach (DataRow row in dataTable.Rows)
{
    Console.WriteLine($"Product: {row["ProductName"]}, Price: {row["Price"]}");
}
// Load CSV with semicolon delimiter
WorkBook workbook = WorkBook.LoadCSV("products.csv", 
    fileFormat: ExcelFileFormat.XLSX, 
    listDelimiter: ";");
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert to DataTable for database operations
DataTable dataTable = worksheet.ToDataTable(true);
// Process the DataTable
foreach (DataRow row in dataTable.Rows)
{
    Console.WriteLine($"Product: {row["ProductName"]}, Price: {row["Price"]}");
}
Imports System
Imports System.Data

' Load CSV with semicolon delimiter
Dim workbook As WorkBook = WorkBook.LoadCSV("products.csv", 
                                            fileFormat:=ExcelFileFormat.XLSX, 
                                            listDelimiter:=";")
Dim worksheet As WorkSheet = workbook.DefaultWorkSheet
' Convert to DataTable for database operations
Dim dataTable As DataTable = worksheet.ToDataTable(True)
' Process the DataTable
For Each row As DataRow In dataTable.Rows
    Console.WriteLine($"Product: {row("ProductName")}, Price: {row("Price")}")
Next
$vbLabelText   $csharpLabel

ToDataTable方法將工作表資料轉換為.NET DataTable,布林參數指示是否將第一行作為欄位標題。 此轉換對於資料庫操作、ASP.NET Core應用程式中的資料繫結、GridView資料填充,或需要利用現有DataTable處理邏輯進行SQL伺服器整合時特別有用。 生成的DataTable保留了資料型別和結構資訊,可直接與SqlBulkCopy一起使用,以進行有效的批量插入操作。 深入了解將CSV導入DataTable資料庫整合在我們的詳細指南中。

輸入

如何使用IronXL進行.NET Core CSV讀取器:圖8 - 用分號分隔符的CSV輸入

輸出

如何使用IronXL進行.NET Core CSV讀取器:圖9 - 使用不同分隔符的控制台輸出

我如何在CSV和Excel格式之間進行轉換?

IronXL的一個突出特點是無縫的CSV到Excel轉換和Excel到CSV轉換,這對於資料遷移項目至關重要。 以下是展示此功能的範例:

// Load CSV and save as Excel
WorkBook csvWorkbook = WorkBook.LoadCSV("report.csv", 
    fileFormat: ExcelFileFormat.XLSX, 
    listDelimiter: ",");
// Save as Excel file
csvWorkbook.SaveAs("report.xlsx");
// Or load Excel and export to CSV
WorkBook excelWorkbook = WorkBook.Load("data.xlsx");
excelWorkbook.SaveAsCsv("exported_data.csv", delimiter: ",");
// Load CSV and save as Excel
WorkBook csvWorkbook = WorkBook.LoadCSV("report.csv", 
    fileFormat: ExcelFileFormat.XLSX, 
    listDelimiter: ",");
// Save as Excel file
csvWorkbook.SaveAs("report.xlsx");
// Or load Excel and export to CSV
WorkBook excelWorkbook = WorkBook.Load("data.xlsx");
excelWorkbook.SaveAsCsv("exported_data.csv", delimiter: ",");
Imports IronXL

' Load CSV and save as Excel
Dim csvWorkbook As WorkBook = WorkBook.LoadCSV("report.csv", fileFormat:=ExcelFileFormat.XLSX, listDelimiter:=",")
' Save as Excel file
csvWorkbook.SaveAs("report.xlsx")
' Or load Excel and export to CSV
Dim excelWorkbook As WorkBook = WorkBook.Load("data.xlsx")
excelWorkbook.SaveAsCsv("exported_data.csv", delimiter:=",")
$vbLabelText   $csharpLabel

此雙向轉換在允許各種文件轉換場景的同時保留資料完整性和格式靈活性。 SaveAs方法根據文件擴展名自動檢測所需格式,支持XLSX、XLS和其他Excel格式,並提供工作表管理。 在使用SaveAsCsv保存為CSV時,您可以指定自定義分隔符和文字編碼,以滿足您的需求。 當與要求特定文件格式進行資料交換的系統整合時,這一功能是非常有價值的。 對於從其他函式庫遷移或評估手動剖析替代方案的開發人員,看看 IronXL 在 Stack Overflow 上討論的熱門替代方案.NET 社區中的效能考量

IronXL 提供哪些針對企業 CSV 處理的高級功能?

IronXL提供的企業級功能使其與基本的CSV解析器區分開來,包括全面的單元測試支持和除錯工具。 該程式庫提供跨平臺相容性,能夠在Windows、Linux、macOS和Docker容器中無縫運行—這對於現代.NET Core部署和微服務架構來說是必不可少的。 根據 微軟的文件 ,跨平臺支持對於雲原生應用和 Azure 部署至關重要。

除了技術能力外,IronXL 包含專業支援和所有授權的定期更新,確保與最新 .NET 版本和安全補丁的相容性。 此商業支援確保了在生產環境中開放原始碼函式庫可能會短欠的關鍵應用的可靠性。 該程式庫也通過優化的記憶體管理有效地處理大型資料集,支持公式計算、單元格格式轉換過程中的保留、多工作表操作以及資料彙整等高級場景。

對於需要擴展性和負載平衡的生產部署,IronXL的授權模式提供單一項目、團隊和企業範圍使用的靈活性選項,所有這些都包括源程式碼存取和免版稅再分發權。 部署後,您會發現該程式庫繼續提供可靠的性能。 購買授權以解鎖無水印的完整功能。

如何使用IronXL進行.NET Core CSV讀取器:圖10 - 授權

結論

IronXL簡化了.NET Core應用程式中的CSV讀取和寫入操作,同時提供處理複雜場景的靈活性,包括資料分析、報告和自動化任務。 其直觀的API結合Excel格式支持及企業功能,使其成為開發者需要可靠的CSV處理能力(有執行緒安全和並發存取支持)的理想選擇。 該程式庫可以無縫地在格式之間轉換,處理各種分隔符,執行資料清理,並整合到現有的.NET資料結構中,顯著減少開發時間,同時保證程式碼的可維護性。

我們希望這份全面的指南為您提供了關於CSV文件處理需求的明確答案。 準備好簡化您的CSV文件處理和資料處理管線了嗎?立即開始您的免費試用,體驗IronXL如何以專業級的CSV解析能力轉變您的資料處理流程,使用var reader初始化和公共字串聲明。 對於生產使用,探索包含專業支援、文件和持續更新的授權選項,以供您的.NET Core項目使用。 記得檢查路徑配置並查看我們的類實現範例,以獲得最佳效果。

常見問題

使用IronXL進行CSV文件操作在.NET Core中的主要優勢是什麼?

IronXL對CSV和Excel格式進行無縫處理,並針對大規模批次處理進行性能優化,使其成為高效資料導入和導出的理想選擇。

IronXL如何處理CSV文件中的不同分隔符?

IronXL設計用於高效處理各種分隔符,確保無論CSV文件中使用何種分隔符,都能準確解析資料。

IronXL能否在CSV解析過程中管理Excel互通性?

是的,IronXL提供了全面的Excel互通性,成為需要同時處理CSV和Excel文件格式的開發人員的一個強大解決方案。

IronXL是否支持CSV處理的異步操作?

IronXL支持異步操作,通過在CSV文件解析和處理期間允許非阻塞執行來增強應用程式響應。

開發人員為什麼可能選擇IronXL而不是其他CSV解析程式庫?

開發人員可能會選擇IronXL是因為其卓越的性能、強大的異常處理和清晰的API,這些特性在管理複雜資料集和為開源CSV工具做出貢獻時特別有益。

IronXL如何保證在CSV解析過程中的性能優化?

IronXL針對性能進行了優化,特別是在大規模批次處理場景中,確保資料處理高效且快速。

開發人員在CSV文件操作中面臨的挑戰IronXL是如何解決的?

IronXL解決了不同分隔符、資料型別轉換和性能問題等挑戰,提供了一個高效的CSV解析的簡單解決方案。

IronXL適合處理具有重複值和重複條目的資料集嗎?

是的,IronXL非常適合管理具有重複值和重複條目的資料集,提供了導入過程中的資料驗證能力。

IronXL與其他程式庫如CsvHelper相比如何?

雖然像CsvHelper這樣的程式庫很受歡迎,但IronXL在增強的Excel互通性、強大的異常處理和對CSV和Excel文件的性能優化上脫穎而出。

Curtis Chau
技術作家

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

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

Iron 支援團隊

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