跳過到頁腳內容
使用 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 工具貢獻改進或提交拉取請求時,也會發現 IronXL 清晰的 API 是一個有價值的參考,尤其是在管理包含重複值、重複條目或在資料匯入過程中需要資料驗證的資料集時。

在.NET生態系統中,有多種軟體套件可用於處理 CSV 檔案操作,包括 EPPlus、NPOI 和 OpenXML 等替代方案,但 IronXL 的多功能性使其成為開發人員的首選,他們希望超越簡單的 CSV 讀取,並在單一 CSV 庫中享受 Excel 互通性,尤其是在企業應用程式中進行 ETL 操作和生成報表任務時。 當然,選擇合適的解析器取決於您的特定需求,我們希望這份全面的指南能夠解答您的疑問,並幫助您做出明智的決定。

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

在為應用程式選擇.NET Core CSV 讀取器時, IronXL相比傳統的 CSV 解析庫具有幾個引人注目的優勢。 IronXL可與.NET Core 的現代架構無縫集成,同時保持與.NET Framework專案的向後相容性。 這款.NET Core CSV 讀取器解決方案消除了開發人員在處理 CSV 檔案時遇到的常見痛點,包括:

  • 自動偵測國際字元集的編碼
  • 無需手動配置即可智慧識別分隔符
  • 對從千位元組到千兆位元組大小的檔案進行記憶體高效處理
  • 內建資料型別推斷和轉換
  • 跨平台的回車與換行處理 即使處理 CSV 數據,也支援 Excel 公式。
  • 在 Windows、Linux 和 macOS 上的跨平台可靠性

與需要大量配置和手動解析邏輯的基本 CSV 讀取器不同, IronXL可以自動處理特殊情況,例如包含分隔符號的引號的欄位、多行單元格值和特殊字元。 該庫的架構是一個.NET Core CSV 讀取器,透過延遲載入和串流功能確保了最佳效能,使其既適用於小型設定文件,也適用於大規模資料處理任務。 請注意, IronXL可以根據需要跳過標題行,並有效率地分割複雜的資料結構。

對於從傳統系統過渡到新系統的開發人員來說, IronXL提供了一個熟悉的 API,降低了學習難度,同時為響應式應用程式提供了現代化的 async/await 模式。 這使其成為正在進行資料處理基礎架構現代化的團隊的理想.NET Core CSV 讀取器選擇。

如何快速上手使用IronXL讀取 CSV 檔案?

無論您建立的是控制台應用程式、 ASP.NET Core Web 應用程式還是 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 Core 的過程中,此 CSV 檔案讀取器可以與現有的.NET Framework專案無縫整合。 您也可以透過.NET CLI 使用命令參數進行安裝,或直接從GitHub引用它。

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

安裝完成後,將命名空間新增到您的程式碼中:

using IronXL;
using 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}");
}
$vbLabelText   $csharpLabel

LoadCSV 方法建立一個 WorkBook 對象,該物件使用最佳化的記憶體流處理在記憶體中表示您的 CSV 資料結構。 fileFormat 參數指定處理的內部格式,而 listDelimiter 定義 CSV 檔案中使用的 CSV 分隔符,支援製表符分隔的檔案和管道符分隔的格式。

輸入

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

輸出

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

當處理從包含 sep= 行(有時稱為"分隔符號"標記)的系統匯出的 CSV 檔案時, 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}");
}
$vbLabelText   $csharpLabel

這裡,欄位 public string city 代表 CSV 檔案中的"城市"欄位。使用IronXL,您可以輕鬆地將工作表中的每一行對應到 Customer 對象,以便進行資料處理、序列化為 JSON、反序列化或匯出為其他格式,並進行適當的異常處理。 這種方法允許使用者從他們的 CSV 資料中建立強類型記錄。

如何處理不同的分隔符號並將其轉換為資料表?

現實世界中的 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"]}");
}
$vbLabelText   $csharpLabel

ToDataTable 方法將工作表資料轉換為.NET DataTable,布林參數指示是否使用第一行作為列標題。 這種轉換對於資料庫操作、 ASP.NET Core應用程式中的資料綁定、GridView 填充,或當您需要利用現有的 DataTable 處理邏輯進行 SQL Server 整合時,尤其有用。 產生的 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: ",");
$vbLabelText   $csharpLabel

這種雙向轉換既能保持資料完整性,又能為各種文件轉換場景提供格式彈性。 SaveAs 方法會自動從檔案副檔名偵測所需的格式,支援 XLSX、XLS 和其他 Excel 格式以及工作表管理。 使用 SaveAsCsv 儲存為 CSV 時,您可以指定自訂分隔符號和文字編碼以滿足您的要求。 當與需要特定文件格式進行資料交換的系統整合時,此功能非常寶貴。 對於從其他程式庫遷移或評估手動解析替代方案的開發人員,請參閱Stack Overflow 上討論的IronXL與流行的替代方案的比較,以及.NET社群中的效能考量

IronXL為企業級 CSV 處理提供了哪些進階功能?

IronXL提供企業級功能,使其區別於基本的 CSV 解析器,包括全面的單元測試支援和調試工具。 該程式庫提供跨平台相容性,可在 Windows、Linux、macOS 和 Docker 容器中無縫運行——這對於現代.NET Core部署和微服務架構至關重要。 根據微軟的文檔,跨平台支援對於雲端原生應用程式和 Azure 部署至關重要。

除了技術能力之外, IronXL 的所有許可證均包含專業支援和定期更新,確保與最新的.NET版本和安全性修補程式相容。 這種商業支援確保了關鍵任務應用程式的可靠性,而開源庫在生產環境中可能無法滿足這些需求。 該程式庫還透過優化的記憶體管理高效地處理大型資料集,支援公式計算、轉換過程中單元格格式保留、多工作表工作簿操作和資料聚合任務等高階場景。

對於需要可擴展性和負載平衡的生產部署,IronXL 的授權模式提供了靈活性,可選擇單一專案、團隊和企業級使用,所有這些都包括原始程式碼存取權限和免版稅再分發權。 部署後,您會發現該程式庫繼續提供可靠的效能。 購買許可證即可解鎖全部功能,且無浮水印。

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

結論

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

我們希望這份全面的指南能夠為您解決 CSV 文件處理方面的問題提供明確的答案。 準備好簡化您的 CSV 檔案處理和資料處理流程了嗎?立即開始免費試用,體驗IronXL如何利用變數讀取器初始化和公開字串聲明,透過專業級的 CSV 解析功能,徹底改變您的資料處理工作流程。 對於生產環境,請探索包含專業支援、文件和持續更新的.NET Core專案許可選項。 請務必檢查路徑配置並查看我們的類別實作範例,以獲得最佳結果。

常見問題解答

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

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文件的性能優化。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担產品测测试,產品開發和研究的责任時,Jordi 為持续的產品改進增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。

鋼鐵支援團隊

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