跳過到頁腳內容
使用 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;
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}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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 - 功能

將 CSV 資料對應到 C# 類別並進行資料驗證

您也可以使用欄位對應和資料驗證功能,將 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}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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"]}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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: ",");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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.Excel 提供 CSV 和 Excel 兩種格式的無縫處理,並針對大規模批次處理進行效能最佳化,是高效率資料匯入和匯出作業的理想選擇。

IronXL 如何處理 CSV 檔案中的不同分隔符?

IronXL 的設計可有效處理各種分隔符,無論 CSV 檔案中使用何種分隔符,都能確保精確的資料解析。

IronXL.Excel 能否在 CSV 解析過程中管理 Excel 的互操作性?

是的,IronXL 提供全面的 Excel 互操作性,對於需要同時處理 CSV 和 Excel 檔案格式的開發人員而言,這是一個強大的解決方案。

IronXL 是否支援 CSV 處理的非同步操作?

IronXL 支援 async 作業,透過允許在 CSV 檔案解析和處理過程中執行非阻塞作業,增強應用程式的回應能力。

為何開發人員會選擇 IronXL 而非其他 CSV 解析函式庫呢?

開發人員可能會因為 IronXL 的優異效能、強大的異常處理功能和清晰的 API 而選擇 IronXL,這對於管理複雜的資料集和貢獻開放原始碼 CSV 工具尤其有利。

IronXL 如何確保 CSV 解析過程中的效能最佳化?

IronXL 已針對效能進行最佳化,尤其是在大規模批次處理的情況下,可確保資料處理的效率與速度。

IronXL 可解決開發人員在 CSV 檔案操作上所面臨的哪些挑戰?

IronXL 可解決不同分隔符、資料類型轉換和效能問題等挑戰,提供高效 CSV 解析的直接解決方案。

IronXL 是否適合處理具有重複值和重複項目的資料集?

是的,IronXL 非常適合管理具有重複值和重複項目的資料集,在匯入過程中提供資料驗證功能。

IronXL 與其他類似 CsvHelper 的函式庫比較如何?

雖然 CsvHelper 之類的函式庫很受歡迎,但 IronXL 以其增強的 Excel 互操作性、強大的異常處理功能,以及針對 CSV 和 Excel 檔案的效能最佳化而脫穎而出。

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