與其他組件的比較 IronXL 與 CsvHelper 的比較 Jordi Bardia 更新:2025年7月28日 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 LLM副本 LLM副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 使用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 Framework、Xamarin、Mobile、Linux、macOS和Azure。 IronXL是一個領先的.NET Core和.NET Framework Excel電子表格程式庫,用於C#。 IronXL 功能集 加載、讀取和編輯數據 — 從XLS/XLSX/CSV/TSV匯入 保存和匯出 — 到XLS/XLSX/CSV/TSV/JSON 範圍 — 易於使用的WorkSheet["A1:B10"]語法。 直觀地組合和創建範圍。 排序 — 排列範圍、列和行。 造型 — 單元格視覺樣式、字體、大小、背景模式、邊框、對齊和數字格式。 CsvHelper 一個用於讀寫CSV檔案的.NET程式庫。 非常快、靈活且易於使用。 支持讀寫自定義類對象。 所有範例程式碼均可在CsvHelper文檔中找到。 如何在C#中使用CsvHelper 安裝CsvHelper C#程式庫以讀取CSV檔案 利用`CsvConfiguration`類設置CSV的配置 使用C#內建`StreamReader`打開檔案 Input the instances made in steps 2 & 3 to `CsvReader` class to read 通過繼承CsvHelper `DefaultTypeConverter`類轉換CSV中的數據 CsvHelper功能 快速:即時編譯類以獲得極快速的性能 靈活:寫入時保守,閱讀時自由 易於使用:讀寫如同WriteRecords(records)一般簡單 高度可配置 支持Linux模式 低內存使用 1. 創建控制台應用程序 使用以下步驟創建控制台應用程序: 啟動Visual Studio 2022 IDE。 點擊"創建新專案"。 在"創建新專案"頁面中,在語言下拉列表中選擇C#,從平台列表中選擇Windows,從"專案類型"列表中選擇控制台。 從顯示的專案範本中選擇Console App (.NET Framework) 。 *創建專案 - 控制台應用程序* 點擊下一步。 在附加信息畫面中,指定您想要使用的框架版本。 在這個範例中,我們將使用.NET Framework 4.8。 *創建專案 - .NET Framework* 點擊創建以完成此過程。 專案現已創建,我們幾乎準備好測試這些程式庫。 然而,我們仍然需要安裝並整合它們到我們的專案中。 讓我們先安裝IronXL。 2. IronXL C# 程式庫安裝 您可以使用以下方法下載並安裝IronXL程式庫: 使用Visual Studio安裝NuGet套件 直接下載NuGet套件 手動安裝DLL 讓我們來看一下每一種方法。 2.1. 使用Visual Studio安裝NuGet套件 Visual Studio提供了NuGet套件管理器來安裝您專案中的NuGet套件。 您可以通過專案菜單或在方案資源管理器中右擊您的專案來訪問它。 *選擇-管理-NuGet-套件* 現在,從瀏覽選項卡 -> 搜尋IronXl.Excel -> 安裝 *搜尋IronXL* 我們完成了。 2.2. 直接下載NuGet套件 這可以通過直接訪問NuGet網站並下載套件來完成。 步驟如下: 導航到https://www.nuget.org/packages/IronXl.Excel 選擇"下載套件" 雙擊下載的套件 套件將被安裝 重新加載您的Visual Studio專案並開始使用它 2.3. 使用DLL手動安裝 您可以使用以下步驟,通過開發者命令提示符手動下載並安裝IronXL C# 程式庫。 開啟開發者命令提示符 — 通常在Visual Studio資料夾中找到。 鍵入以下命令:PM> Install-Package IronXl.Excel 按Enter鍵 這將下載並安裝包 重新加載您的Visual Studio專案並開始使用它 2.4. 添加必要的using指示符 在方案資源管理器中,右擊Program.cs文件,然後選擇查看代碼。 將以下using指示符添加到代碼文件的頂部: 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 每個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 IEnumerable<Person>。 CsvHelper會自動將每個列映射到具有相同名稱的屬性。 例如,Person.FirstName。 然後我們可以遍歷data,並訪問每行中的值。 5.2. 將CSV文件中的數據從一種類型轉換為另一種 CSV文件主要包含文本數據。 例如,年齡列是一個整數值,而CSV文件僅包含文本。 CsvHelper可以將數據從字符串轉換為標準.NET類型(布爾、Int32、Int64、Enum)。 在我們的情況下,我們有一個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類型,默認轉換器只能處理Yes/No。 這裡,我們需要子類化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文件中,因為它只會覆蓋先前的條目。 請注意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 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 更新2026年2月27日 VB.NET 將Excel文件讀取到陣列:IronXL vs Microsoft Interop 完整指南如何在VB.NET中將Excel文件讀取至陣列。比較IronXL和Microsoft Interop方法,附有工作代碼範例和最佳實踐。 閱讀更多 更新2026年3月1日 ASP.NET匯出至Excel:IronXL vs ClosedXML vs EPPlus比較 探索 ASP.NET Core 的最佳 Excel 匯出函式庫。比較 IronXL、ClosedXML 和 EPPlus 的功能、授權以及 C# 開發人員的程式碼範例。 閱讀更多 更新2026年2月1日 使用 C# 建立 Excel 檔案:IronXL 和其他替代庫的比較 發掘在 C# 中創建電子表格的最佳替代 Excel Interop 的方法。比較頂級 Excel 函式庫的功能、許可協議及程式碼範例。 閱讀更多 IronXL 與 CsvWriter 的比較IronXL 與 NPOI 的比較
更新2026年2月27日 VB.NET 將Excel文件讀取到陣列:IronXL vs Microsoft Interop 完整指南如何在VB.NET中將Excel文件讀取至陣列。比較IronXL和Microsoft Interop方法,附有工作代碼範例和最佳實踐。 閱讀更多
更新2026年3月1日 ASP.NET匯出至Excel:IronXL vs ClosedXML vs EPPlus比較 探索 ASP.NET Core 的最佳 Excel 匯出函式庫。比較 IronXL、ClosedXML 和 EPPlus 的功能、授權以及 C# 開發人員的程式碼範例。 閱讀更多
更新2026年2月1日 使用 C# 建立 Excel 檔案:IronXL 和其他替代庫的比較 發掘在 C# 中創建電子表格的最佳替代 Excel Interop 的方法。比較頂級 Excel 函式庫的功能、許可協議及程式碼範例。 閱讀更多