與其他組件的比較 IronXL 與 CsvHelper 的比較 Jordi Bardia 更新日期:7月 28, 2025 Download IronXL NuGet 下載 DLL 下載 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article 使用 CSV 檔案可能是一項具有挑戰性的任務。 目前有許多庫可以幫助開發人員完成此任務而無需安裝 Microsoft Excel。 本文中,我們將討論和比較如何在 C# .NET 技術中以程式化的方式處理 Microsoft Excel 文件,無論是 CSV 格式還是標準 XLSX 格式,使用兩個最受歡迎的庫:IronXL 和 CsvHelper。 我們先看看這兩個庫能夠提供什麼。 IronXL 函式庫 IronXL 是一個 .NET 庫,可用 C# 輕鬆讀取和編輯 Microsoft Excel 文件。 IronXL.Excel 是一個獨立的 .NET 軟體函式庫,用於讀取一系列電子表格格式。 它不需要安裝 Microsoft Excel,也不依賴於 Interop,並且能夠順利處理 CSV 文件。 IronXL 是一個直觀的 C# API,允許您在 .NET 中以極快的性能讀取、編輯和創建 Excel 試算表文件。 IronXL 完全支持 .NET Core、.NET 框架、Xamarin、行動裝置、Linux、macOS 以及 Azure。 IronXL 是 C# 的領先 .NET core 和 .NET 框架 Excel 電子表格函式庫。 IronXL 功能集 載入、讀取和編輯數據 — 從 XLS/XLSX/CSV/TSV 儲存和導出 — 至 XLS/XLSX/CSV/TSV/JSON 範圍 — 易於使用的 WorkSheet["A1:B10"] 語法。 直觀地組合和創建範圍。 排序 — 排序範圍、列和行。 樣式 — 儲存格視覺樣式、字型大小、背景模式、邊框、對齊和數字格式。 CsvHelper 讀取和寫入 CSV 文件的 .NET 庫。 非常快速、靈活且易於使用。 支持自定義類對象的讀取和寫入。 所有示例代碼均可在 CsvHelper 文檔中找到。 class="hsg-featured-snippet"> 如何在 C# 中使用 CsvHelper 安裝 CsvHelper C# 庫以讀取 CSV 文件 利用 CsvConfiguration 類來設置 CSV 配置 使用 C# 的內置 StreamReader 打開文件 將第 2 步和第 3 步中創建的實例輸入到 CsvReader 類中來讀取 通過繼承 CsvHelper 的 DefaultTypeConverter 類將 CSV 中的數據進行轉換 CsvHelper 功能 快速:即時編譯類以獲得極快的性能 靈活:編寫時保守,讀取時寬鬆 易於使用:讀寫就像 GetRecords<T>() 和 WriteRecords(records) 一樣簡單 高可配置性 Linux 模式 低記憶體使用量 1. 創建控制應用程式 使用以下步驟創建控制應用程式: 啟動 Visual Studio 2022 IDE。 點擊“創建新專案”。 在“創建新專案”頁面中,在語言下拉列表中選擇C#,從平台列表中選擇Windows,並在“專案類型”列表中選擇控制台。 從顯示的專案範本中選擇控制台應用程式(.NET Framework)。 class="content-img-align-center"> class="center-image-wrapper"> 創建專案 - 控制台應用程式 點擊 下一步。 在 附加信息 屏幕中,指定您希望使用的 框架版本。 我們在本例中將使用.NET Framework 4.8。 class="content-img-align-center"> class="center-image-wrapper"> 創建專案 - .NET 框架 點擊 創建 完成過程。 現在專案已創建,我們幾乎準備好測試這些庫了。 然而,我們仍然需要在專案中安裝並集成它們。 讓我們先安裝 IronXL。 2. IronXL C# 函式庫安裝 您可以使用以下方法下載並安裝 IronXL 函式庫: 使用 Visual Studio 與 NuGet 套件 直接下載 NuGet 包 使用 DLL 手動安裝 讓我們看看每一個的詳細資訊。 2.1. 使用 Visual Studio 與 NuGet 套件 Visual Studio 提供 NuGet 包管理器來在專案中安裝 NuGet 套件。 您可以通過專案選單訪問它,或者在方案資源管理器中右鍵單擊您的項目。 class="content-img-align-center"> class="center-image-wrapper"> 選擇-管理-NuGet-package 現在,從瀏覽選項卡 -> 搜索 IronXL.Excel -> 安裝 class="content-img-align-center"> class="center-image-wrapper"> 搜索 IronXL 完成。 2.2. 直接下載 NuGet 套件 可以通過直接訪問 NuGet 網站下載套件。 步驟如下: 前往 https://www.nuget.org/packages/IronXL.Excel 選擇“下載包” 雙擊下載的包 包將被安裝 重新載入您的 Visual Studio 專案並開始使用它 2.3. 使用 DLL 手動安裝 下載並安裝 IronXL C# 函式庫的另一種方法,是使用開發命令提示裡的以下步驟通過開發命令提示符來安裝IronXL NuGet 套件。 開啟 開發人員命令提示符 — 通常位於 Visual Studio 文件夾中。 輸入以下命令:PM> Install-Package IronXL.Excel 按 Enter 這將下載並安裝包 重新載入您的 Visual Studio 專案並開始使用它 2.4. 添加必要的命名空間指令 在 Solution Explorer 中,右鍵點擊 Program.cs 文件,然後點擊查看代碼。 在代碼文件的頂部添加以下命名空間指令: using IronXL; using IronXL; Imports IronXL $vbLabelText $csharpLabel 完成了! IronXL 已經下載並安裝完成,準備就緒。 但在此之前,我們應該安裝 CsvHelper。 3. CsvHelper 安裝 3.1. 使用 NuGet 套件管理器控制台 要下載和安裝 CsvHelper C# 庫,請採用以下步驟通過開發人員命令提示符安裝 NuGet 包。 開啟 開發人員命令提示符 — 通常位於 Visual Studio 文件夾中。 輸入以下命令:PM> Install-Package CsvHelper -Version 27.2.1 按 Enter 這將下載並安裝包 重新載入您的 Visual Studio 專案並開始使用它 3.2. 直接下載 從 NuGet 網站下載:https://www.nuget.org/packages/CsvHelper。 4. 使用 IronXL 處理 CSV 文件 逗號分隔值 (CSV) 文件是一種使用逗號來分隔值的分隔文本文件。 文件的每一行都是一個數據記錄。 操作這些文件以進行計算可能是一項具有挑戰性的任務,而 IronXL 提供了一個非常好的且易用的選擇來完成此任務而不需要 Microsoft Excel。 讓我們首先將一個 CSV 文件轉換為普通的 Excel 文件。 4.1. 將 CSV 文件轉換為 Excel 格式 這個過程相當簡單且容易。 通常一行代碼即可完成。 CSV 到 Excel 格式: // Load the CSV file and convert it to an Excel format WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ","); // Access the default worksheet WorkSheet ws = workbook.DefaultWorkSheet; // Save the workbook as an Excel file workbook.SaveAs("CsvToExcelConversion.xlsx"); // Load the CSV file and convert it to an Excel format WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ","); // Access the default worksheet WorkSheet ws = workbook.DefaultWorkSheet; // Save the workbook as an Excel file workbook.SaveAs("CsvToExcelConversion.xlsx"); ' Load the CSV file and convert it to an Excel format Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",") ' Access the default worksheet Dim ws As WorkSheet = workbook.DefaultWorkSheet ' Save the workbook as an Excel file workbook.SaveAs("CsvToExcelConversion.xlsx") $vbLabelText $csharpLabel 4.2. 使用 IronXL 讀取和操作已轉換的 CSV 文件 IronXL 的 WorkBook 類代表一個 Excel 工作簿。 要使用 C# 打開 Excel 文件,我們使用 WorkBook.Load 並指定 Excel 文件 (.xlsx) 的路徑。 以下一行代碼用於打開文件以供閱讀: // Load WorkBook var workbook = WorkBook.Load(@"Spreadsheets/sample.xlsx"); // Load WorkBook var workbook = WorkBook.Load(@"Spreadsheets/sample.xlsx"); ' Load WorkBook Dim workbook = WorkBook.Load("Spreadsheets/sample.xlsx") $vbLabelText $csharpLabel 每個 WorkBook 可以包含多個 WorkSheet 對象。 這些表示 Excel 文檔中的工作表。 如果工作簿包含工作表,可以按如下方式按名稱檢索它們: // Open the sheet for reading var worksheet = workbook.GetWorkSheet("sheetnamegoeshere"); // Open the sheet for reading var worksheet = workbook.GetWorkSheet("sheetnamegoeshere"); ' Open the sheet for reading Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere") $vbLabelText $csharpLabel 讀取單元格值的代碼: // Read from ranges of cells elegantly foreach (var cell in worksheet["A2:A10"]) { Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text); } // Read from ranges of cells elegantly foreach (var cell in worksheet["A2:A10"]) { Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text); } ' Read from ranges of cells elegantly For Each cell In worksheet("A2:A10") Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text) Next cell $vbLabelText $csharpLabel 在加載和讀取工作簿和工作表後,可以使用以下代碼示例來修改公式或將它們應用於特定的儲存格。 代碼如下: // Set formulas in specific cells worksheet["A1"].Formula = "SUM(B8:C12)"; worksheet["B8"].Formula = "=C9/C11"; worksheet["G30"].Formula = "MAX(C3:C7)"; // Force recalculate all formula values in all sheets workbook.EvaluateAll(); // Set formulas in specific cells worksheet["A1"].Formula = "SUM(B8:C12)"; worksheet["B8"].Formula = "=C9/C11"; worksheet["G30"].Formula = "MAX(C3:C7)"; // Force recalculate all formula values in all sheets workbook.EvaluateAll(); ' Set formulas in specific cells worksheet("A1").Formula = "SUM(B8:C12)" worksheet("B8").Formula = "=C9/C11" worksheet("G30").Formula = "MAX(C3:C7)" ' Force recalculate all formula values in all sheets workbook.EvaluateAll() $vbLabelText $csharpLabel 4.3. 將 Excel 文檔另存為 CSV 文件 用 IronXL 寫入 CSV 文件是一個簡單有趣的過程。 下面的代碼簡單地使用 SaveAsCsv 方法將 Excel 文件儲存在 CSV 格式中。 // Load the Excel Workbook WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx"); // Save the workbook as a CSV file wb.SaveAsCsv("SaveAsCSV.csv", ","); // This will save as "SaveAsCSV.Sheet1.csv" // Load the Excel Workbook WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx"); // Save the workbook as a CSV file wb.SaveAsCsv("SaveAsCSV.csv", ","); // This will save as "SaveAsCSV.Sheet1.csv" ' Load the Excel Workbook Dim wb As WorkBook = WorkBook.Load("Normal_Excel_File.xlsx") ' Save the workbook as a CSV file wb.SaveAsCsv("SaveAsCSV.csv", ",") ' This will save as "SaveAsCSV.Sheet1.csv" $vbLabelText $csharpLabel 5. 使用 CsvHelper 處理 CSV 文件 讀取 CSV 文件是那些看起來比實際上簡單得多的任務之一。 CsvHelper 庫使編寫類型安全、快速且靈活的代碼變得容易。 5.1. 使用 CsvHelper 讀取 CSV 文件 這是示例 CSV 文件,它有三個文本列和一個數字列。 FirstName,LastName,Age,IsActive Ali,Talal,30,Yes Affan,Ahmad,31,No Saad,Bhatti,31,Yes 我們將把每一行映射到一個 Person 類型的對象。 // Define the Person class to map CSV records public class Person { public string FirstName { get; set; } public string LastName { get; set; } public int? Age { get; set; } public string IsActive { get; set; } } // Define the Person class to map CSV records public class Person { public string FirstName { get; set; } public string LastName { get; set; } public int? Age { get; set; } public string IsActive { get; set; } } ' Define the Person class to map CSV records Public Class Person Public Property FirstName() As String Public Property LastName() As String Public Property Age() As Integer? Public Property IsActive() As String End Class $vbLabelText $csharpLabel 以下是我們讀取 CSV 文件的代碼。 // Define the path to the CSV file var fileName = @"<path to our CSV file>"; // Configure CsvHelper var configuration = new CsvConfiguration(CultureInfo.InvariantCulture) { Encoding = Encoding.UTF8, Delimiter = "," }; // Read CSV file using (var fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)) { using (var textReader = new StreamReader(fs, Encoding.UTF8)) using (var csv = new CsvReader(textReader, configuration)) { var data = csv.GetRecords<Person>(); // Iterate over each person record foreach (var person in data) { // Process each Person object } } } // Define the path to the CSV file var fileName = @"<path to our CSV file>"; // Configure CsvHelper var configuration = new CsvConfiguration(CultureInfo.InvariantCulture) { Encoding = Encoding.UTF8, Delimiter = "," }; // Read CSV file using (var fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)) { using (var textReader = new StreamReader(fs, Encoding.UTF8)) using (var csv = new CsvReader(textReader, configuration)) { var data = csv.GetRecords<Person>(); // Iterate over each person record foreach (var person in data) { // Process each Person object } } } ' Define the path to the CSV file Dim fileName = "<path to our CSV file>" ' Configure CsvHelper Dim configuration = New CsvConfiguration(CultureInfo.InvariantCulture) With { .Encoding = Encoding.UTF8, .Delimiter = "," } ' Read CSV file Using fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read) Using textReader = New StreamReader(fs, Encoding.UTF8) Using csv = New CsvReader(textReader, configuration) Dim data = csv.GetRecords(Of Person)() ' Iterate over each person record For Each person In data ' Process each Person object Next person End Using End Using End Using $vbLabelText $csharpLabel data 的類型是 IEnumerable<Person>。 CsvHelper 會自動將每一列映射到擁有相同名稱的屬性。 例如,FirstName 列中的值將被映射到 Person.FirstName。 然後,我們可以遍歷 data 並訪問每一列中的值。 5.2. 將 CSV 文件中的數據從一種類型轉換為另一種 CSV 文件通常包含文本數據。 例如,年齡列是一個整數值,而 CSV 文件只包含文本。 CsvHelper 可以將數據從字串轉換為標準的 .NET 類型 (Boolean, Int32, Int64, Enum)。 在我們的案例中,我們有一個 IsActive 的布林數據類型,只能有 True/False,並且包含非標準值。 可以通過創建一個自定義轉換器來進行轉換。 代碼樣式如下: // Custom Boolean Converter for CsvHelper public class CustomBooleanConverter : DefaultTypeConverter { public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData) { // Convert "Yes" to true and anything else to false return text.Equals("Yes", StringComparison.OrdinalIgnoreCase); } } // Custom Boolean Converter for CsvHelper public class CustomBooleanConverter : DefaultTypeConverter { public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData) { // Convert "Yes" to true and anything else to false return text.Equals("Yes", StringComparison.OrdinalIgnoreCase); } } ' Custom Boolean Converter for CsvHelper Public Class CustomBooleanConverter Inherits DefaultTypeConverter Public Overrides Function ConvertFromString(ByVal text As String, ByVal row As IReaderRow, ByVal memberMapData As MemberMapData) As Object ' Convert "Yes" to true and anything else to false Return text.Equals("Yes", StringComparison.OrdinalIgnoreCase) End Function End Class $vbLabelText $csharpLabel 即使 bool 是一個標準 .NET 類型,默認轉換器也只能處理 True/False 值,而我們的 CSV 文件有 Yes/No。 在這裡,我們需要繼承 DefaultTypeConverter,然後重寫 ConvertFromString 方法。 6. 授權 IronXL is an openly commercial C# Excel library. 它對於開發者是免費的,並且可以始終授權用於商業部署。 Licenses are available for single-project use, single developers, agencies, and global corporations, as well as SaaS and OEM redistribution. 所有授權包括 30 天退款保證,一年的產品支持和更新,適用於開發/測試/生產的有效性,並且也是永久性許可證(一次性購買)。 Lite 套餐從$799開始。 CsvHelper — 讀取和寫入 CSV 文件完全免費用於商業用途。 7. 摘要与結論 總結 IronXL 是一個完整的庫,提供您操作 Excel 文件所需的一切。它易於使用,并提供将各种格式转换为 XLSX 的功能,以及从 XLSX 转换为其他格式,如 CSV。这种相互转换为用户提供了轻松处理各种文件格式的灵活性。 另一方面,CsvHelper 专门设计用于处理 CSV 文件格式,这意味着它只能处理 CSV 文件。 所有代碼示例都可以在 CsvHelper 文檔文件中找到。 文檔為您提供有关如何在您的项目中使用 CsvHelper 的指南。 結論 IronXL 由于支持用户使用多种格式,在 CsvHelper 面前具有明显的优势。 此外,您可以根据需要应用公式和样式,而 CsvHelper 仅允许有限选项的 CSV 文件读取和写入。 此外,您不能向现有的 CSV 文件添加新记录,因为它只会覆盖以前的条目。 [{i:(CsvHelper 是其相应所有者的注册商标。 本网站并未与 CsvHelper 相关联,也未获得其背书或赞助。 所有產品名稱、徽標和品牌均為其各自所有者的財產。 比較僅供參考,反映撰寫時公開可用的信息。 常見問題解答 如何使用 C# 將 Excel 文件轉換為不同格式? 使用 IronXL,您可以將 Excel 文件轉換為多種格式,例如 XLS、XLSX、CSV 和 TSV。這可以通過使用 IronXL 加載文件並通過其多功能的導出選項將其保存為所需格式來完成。 使用 IronXL 進行 Excel 文件操作有什麼好處? IronXL 提供了全面的功能,可以處理包括 XLS、XLSX 和 CSV 在內的多種 Excel 格式。它支持數據操作、樣式設置和公式應用等功能,非常適合需要大量處理 Excel 文件的項目。而 CsvHelper 專門為快速高效的 CSV 文件操作而設計。 如何安裝 IronXL 用於 C# 項目? 您可以通過在 Visual Studio 中使用 NuGet 包管理器搜索 'IronXL' 來安裝 IronXL。或者,您可以直接下載 NuGet 包或通過在項目中引用 DLL 手動安裝它。 可以在沒有安裝 Microsoft Excel 的情況下使用 IronXL 嗎? 可以,IronXL 不要求您的系統安裝 Microsoft Excel。它可以獨立運行,讀取、編輯和創建各種格式的 Excel 文件。 如何使用 CsvHelper 讀寫 CSV 文件? CsvHelper 允許您定義一個類來映射 CSV 記錄,配置 CsvHelper 設置,並使用 CsvReader 和 CsvWriter 輕鬆處理 CSV 文件操作。 CsvHelper 在處理 CSV 文件方面受歡迎的原因是什麼? CsvHelper 以其速度、靈活性和易用性而聞名。它支持自定義類對象和類型轉換,使其成為專注於 CSV 數據處理的項目的首選。 使用 IronXL 有許可證需求嗎? 是的,在商業環境中部署 IronXL 需要付費許可證。這與 CsvHelper 的免費商業使用形成對比。 哪些類型的項目將最能受益於 IronXL? 需要廣泛操作各種 Excel 文件格式的項目,包括樣式設置、數據排序和公式計算等功能,由於 IronXL 的強大功能集,將最能從中受益。 Jordi Bardia 立即與工程團隊聊天 軟體工程師 Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 更新日期 6月 22, 2025 IronXL 使用 C# 開發人員的 Zip 壓縮教程 在本教程中,我們將探索如何在 C# 中使用相對路徑創建 ZIP 文件、從壓縮文件中提取數據及操作 ZIP 文件。 閱讀更多 更新日期 7月 28, 2025 比較三個開放源代碼的 C# Excel 函式庫 本文將探討三個 C# 開源 Excel 程式庫,旨在簡化 .NET 環境中的 Excel 檔案操作 閱讀更多 更新日期 8月 4, 2025 EPPlus 讀取 Excel 到 DataTable C#(IronXL 教程) EPPlus 是一個功能強大的開源庫,用於在 C# 中創建和操作 Excel 文件。它提供了一個簡單直觀的 API,允許開發人員以程式的方式生成、讀取和修改 Excel 試算表。 閱讀更多 IronXL 與 CsvWriter 的比較IronXL 與 NPOI 的比較
更新日期 6月 22, 2025 IronXL 使用 C# 開發人員的 Zip 壓縮教程 在本教程中,我們將探索如何在 C# 中使用相對路徑創建 ZIP 文件、從壓縮文件中提取數據及操作 ZIP 文件。 閱讀更多
更新日期 8月 4, 2025 EPPlus 讀取 Excel 到 DataTable C#(IronXL 教程) EPPlus 是一個功能強大的開源庫,用於在 C# 中創建和操作 Excel 文件。它提供了一個簡單直觀的 API,允許開發人員以程式的方式生成、讀取和修改 Excel 試算表。 閱讀更多