與其他組件的比較 IronXL 與 CsvHelper 的比較 Jordi Bardia 更新:7月 28, 2025 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在雙子座打開 請向 Gemini 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 處理 CSV 檔案可能是一項具有挑戰性的任務。 如今有許多函式庫可以幫助開發人員完成這項任務,而無需安裝 Microsoft Excel。 在本文中,我們將討論並比較如何使用兩個最受歡迎的函式庫 IronXL 和 CsvHelper,在 C# .NET 技術中以程式設計方式處理 Microsoft Excel 文件(無論是 CSV 格式還是標準 XLSX 格式)。 我們先來看看這兩個圖書館分別提供了哪些功能。 IronXL圖書館 IronXL 是一個 .NET 函式庫,它能夠使用 C# 讀取和編輯 Microsoft Excel 文件。 IronXL.Excel 是一個獨立的 .NET 軟體庫,用於讀取各種電子表格格式。 它無需安裝 Microsoft Excel,也不依賴 Interop。它能非常流暢地處理 CSV 檔案。 IronXL 是一個直覺的 C# API,它允許您在 .NET 中以閃電般的速度讀取、編輯和建立 Excel 電子表格檔案。 IronXL 完全支援 .NET Core、.NET Framework、Xamarin、行動平台、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 功能 速度快:即時編譯類,效能極快 靈活:寫作時保守,閱讀時開放 易於使用:讀寫操作與GetRecords<T> ()一樣簡單GetRecords<T> ()和WriteRecords(records) 高度可配置 Linux 模式 記憶體佔用低 1. 建立控制台應用程式 請依照下列步驟建立控制台應用程式: 啟動 Visual Studio 2022 IDE。 點選"建立新項目"。 在"建立新項目"頁面中,從語言下拉清單中選擇C# ,從平台清單中選擇Windows ,從"項目類型"清單中選擇控制台。 從顯示的專案範本中選擇控制台應用程式 (.NET Framework) 。 建立專案 - 控制台應用程式 點選"下一步" 。 在"附加資訊"畫面中,指定您要使用的框架版本。 本範例將使用.NET Framework 4.8 。 建立專案 - .NET Framework 點擊"創建"完成該過程。 專案已經創建完成,我們幾乎可以開始測試庫了。 但是,我們仍然需要將它們安裝並整合到我們的專案中。 我們先來安裝IronXL。 2. IronXL C# 庫的安裝 您可以使用以下方法下載並安裝 IronXL 庫: 在 Visual Studio 中使用 NuGet 套件 2.直接下載 NuGet 套件 使用 DLL 檔案手動安裝 讓我們仔細看看每一個。 2.1. 在 Visual Studio 中使用 NuGet 套件 Visual Studio 提供 NuGet Package Manager,可在專案中安裝 NuGet 套件。 您可以透過專案功能表,或在解決方案總管中右鍵按一下專案來存取。 選擇-管理-NuGet-套件 現在,從瀏覽標籤中搜尋 IronXL.Excel 並安裝 搜尋 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 按回車鍵 這將下載並安裝該軟體包。 重新載入您的 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 按回車鍵 這將下載並安裝該軟體包。 重新載入您的 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 bool 資料類型,它只能有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 檔案中新增記錄,因為這會直接覆蓋先前的條目。 請注意CsvHelper 是其各自所有者的註冊商標。 本網站與 CsvHelper 無任何關聯,也未獲得 CsvHelper 的認可或贊助。 所有產品名稱、標誌和品牌均為其各自擁有者的財產。 比較資料僅供參考,並反映撰寫時的公開資訊。 常見問題解答 如何使用 C# 將 Excel 檔案轉換為不同格式? 使用 IronXL.Excel,您可以將 Excel 檔案轉換為各種格式,例如 XLS、XLSX、CSV 和 TSV。只要將檔案載入 IronXL,並使用其多功能的匯出選項將檔案儲存為所需格式,即可達成此目的。 與 CsvHelper 相比,使用 IronXL 進行 Excel 檔案操作有哪些優點? IronXL.Excel 提供處理多種 Excel 格式(包括 XLS、XLSX 和 CSV)的全面功能。它支援資料處理、樣式設定和公式應用等功能,非常適合需要大量 Excel 檔案處理的專案。相比之下,CsvHelper 則是專為快速、有效率的 CSV 檔案作業而設計。 如何為 C# 專案安裝 IronXL? 您可以在 Visual Studio 中透過 NuGet Package Manager 搜尋「IronXL」來安裝 IronXL。另外,您也可以直接下載 NuGet 套件,或在專案中參考 DLL 來手動安裝。 IronXL 是否可以在未安裝 Microsoft Excel 的情況下使用? 是的,IronXL 不需要在您的系統上安裝 Microsoft Excel。它可以獨立讀取、編輯和建立各種格式的 Excel 檔案。 如何使用 CsvHelper 讀寫 CSV 檔案? CsvHelper 可讓您定義類別來映射 CSV 記錄、配置 CsvHelper 設定,以及使用 CsvReader 和 CsvWriter 來輕鬆處理 CSV 檔案作業。 是什麼讓 CsvHelper 成為處理 CSV 檔案的熱門選擇? CsvHelper 以其速度、靈活性和易用性而聞名。它支援自訂類別物件和類型轉換,使其成為專注於 CSV 資料處理專案的首選。 使用 IronXL 是否需要授權? 是的,在商業環境中部署 IronXL 需要付費授權。這與 CsvHelper 不同,CsvHelper 可免費用於商業用途。 哪些類型的專案最能從 IronXL 中獲益? 由於 IronXL.Excel 強大的功能集,需要大量操作各種 Excel 檔案格式(包括樣式設計、資料排序和公式計算等功能)的專案將會從使用 IronXL.Excel 中獲益最多。 Jordi Bardia 立即與工程團隊聊天 軟體工程師 Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 發表日期 12月 18, 2025 使用 C# 建立 Excel 檔案:IronXL 和其他替代庫的比較 發掘在 C# 中創建電子表格的最佳替代 Excel Interop 的方法。比較頂級 Excel 函式庫的功能、許可協議及程式碼範例。 閱讀更多 更新6月 22, 2025 IronXL 使用 C# 開發人員的 Zip 壓縮教程 在本教程中,我們將探索如何在 C# 中使用相對路徑創建 ZIP 文件、從壓縮文件中提取數據及操作 ZIP 文件。 閱讀更多 更新7月 28, 2025 比較三個開放源代碼的 C# Excel 函式庫 本文將探討三個 C# 開源 Excel 程式庫,旨在簡化 .NET 環境中的 Excel 檔案操作 閱讀更多 IronXL 與 CsvWriter 的比較IronXL 與 NPOI 的比較
發表日期 12月 18, 2025 使用 C# 建立 Excel 檔案:IronXL 和其他替代庫的比較 發掘在 C# 中創建電子表格的最佳替代 Excel Interop 的方法。比較頂級 Excel 函式庫的功能、許可協議及程式碼範例。 閱讀更多
更新6月 22, 2025 IronXL 使用 C# 開發人員的 Zip 壓縮教程 在本教程中,我們將探索如何在 C# 中使用相對路徑創建 ZIP 文件、從壓縮文件中提取數據及操作 ZIP 文件。 閱讀更多