與其他組件的比較 IronXL 與 CsvWriter 的比較 Jordi Bardia 更新日期:8月 20, 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 格式還是標準 Excel 格式,使用兩個最受歡迎的函式庫,IronXL 和 CSVWriter。 我們先看看這兩個庫能夠提供什麼。 IronXL 函式庫 IronXL 是一個 .NET 庫,可用 C# 輕鬆讀取和編輯 Microsoft Excel 文件。 IronXL.Excel 是一個獨立的 .NET 軟體函式庫,用於讀取一系列電子表格格式。 它不需要安裝 Microsoft Excel,也不依賴於 Interop。 IronXL 是一個直觀的 C# API,允許您在 .NET 中以極快的效能讀取、編輯和創建 Excel 試算表文件。 IronXL 完全支持 .NET Core、.NET 框架、Xamarin、行動裝置、Linux、macOS 以及 Azure。 IronXL 是一個領先的 .NET 核心和 .net 框架的 C# Excel 試算表函式庫。 IronXL 功能集 載入、讀取和編輯數據 — 從 XLS/XLSX/CSV/TSV 儲存和導出 — 至 XLS/XLSX/CSV/TSV/JSON 範圍 — 簡單易用的 WorkSheet ["A1:B10"] 語法。 直觀地組合和創建範圍。 排序 — 排序範圍、列和行。 樣式 — 單元格視覺樣式、字體、大小、背景樣式、邊框、對齊方式和數字格式。 CSVWriter 一個用於寫入 CSV 文件的 .NET 函式庫。 非常快速、靈活且易於使用。 支持寫入自定義類對象。 CsvWriter 特性 快速:即時編譯類以獲得極快的性能 靈活:編寫時保守,讀取時寬鬆 易於使用:讀寫就像 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 網站下載套件。 步驟如下: Navigate tohttps://www.nuget.org/packages/IronXL.Excel 選擇“下載包” 雙擊下載的包 包將被安裝 重新載入您的 Visual Studio 專案並開始使用它 2.3. 使用 DLL 手動安裝 下載並安裝 IronXL C# 函式庫的另一種方法是使用以下步驟通過開發者命令提示安裝IronXL NuGet 程式包。 開啟開發者命令提示 —— 通常位於 Visual Studio 資料夾中。 輸入以下命令: Install-Package IronXL.Excel 按 Enter 這將下載並安裝包 重新載入您的 Visual Studio 專案並開始使用它 2.4. 添加必要的命名空間指令 在解決方案資源管理器中,右鍵單擊 Program.cs 文件,然後點選查看程式碼。 將以下 using 指令添加到代碼文件的頂部: using IronXL; using IronXL; Imports IronXL $vbLabelText $csharpLabel 完成了! IronXL 已經下載並安裝完成,準備就緒。 但在此之前,我們應該安裝 CsvHelper。 3. CSVWriter 安裝 3.1. 使用 NuGet 套件管理器控制台 要使用 CSVWriter,您需要下載並安裝 CsvHelper C# 函式庫。 為此,請使用以下步驟通過開發者命令提示安裝NuGet 程式包。 開啟開發者命令提示 —— 通常位於 Visual Studio 資料夾中。 輸入以下命令: Install-Package CsvHelper -Version 27.2.1 按 Enter 這將下載並安裝包 重新載入您的 Visual Studio 專案並開始使用它 檢查 CsvHelper.CsvWriter 方法詳細信息以進行實施 3.2. 直接下載 Download from the NuGet website: 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 specify the format and delimiter WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ","); // Get the default worksheet WorkSheet ws = workbook.DefaultWorkSheet; // Save the workbook as an Excel file workbook.SaveAs("CsvToExcelConversion.xlsx"); // Load the CSV file and specify the format and delimiter WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ","); // Get the default worksheet WorkSheet ws = workbook.DefaultWorkSheet; // Save the workbook as an Excel file workbook.SaveAs("CsvToExcelConversion.xlsx"); ' Load the CSV file and specify the format and delimiter Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",") ' Get 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 文件 IronXLWorkBook 類代表一個 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 Sheet for reading var worksheet = workbook.GetWorkSheet("sheetnamegoeshere"); // Open Sheet for reading var worksheet = workbook.GetWorkSheet("sheetnamegoeshere"); ' Open 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 加載和讀取 WorkBook 和 WorkSheet 後,可以使用以下代碼示例來更改公式或對特定單元格應用公式。 代碼如下: // Set Formulas 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 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 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 workbook WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx"); // Save as .csv file wb.SaveAsCsv("SaveAsCSV.csv", ","); // Saved as : SaveAsCSV.Sheet1.csv // Load the workbook WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx"); // Save as .csv file wb.SaveAsCsv("SaveAsCSV.csv", ","); // Saved as : SaveAsCSV.Sheet1.csv ' Load the workbook Dim wb As WorkBook = WorkBook.Load("Normal_Excel_File.xlsx") ' Save as .csv file wb.SaveAsCsv("SaveAsCSV.csv", ",") ' Saved as : SaveAsCSV.Sheet1.csv $vbLabelText $csharpLabel 5. 使用 CSVWriter 處理 CSV 數據 將數據寫入 CSV 文件是一種常見的操作。 CSVHelper 方法 CSVWriter 使用提供的分隔符非常簡單處理所有字符和換行字符的 CSV 編寫器已釋出給 C#。 在這裡,我們將了解如何使用 CSVWriter 寫入數據。 5.1. 創建一個簡單的控制台應用程序 使用 Visual Studio 創建一個簡單的 CSVWriter,配合提供的分隔符控制台應用程序。 項目創建之後,下一步是創建一個 Person 類: public class Person { public int Id { get; set; } public string Name { get; set; } public bool IsLiving { get; set; } } public class Person { public int Id { get; set; } public string Name { get; set; } public bool IsLiving { get; set; } } Public Class Person Public Property Id() As Integer Public Property Name() As String Public Property IsLiving() As Boolean End Class $vbLabelText $csharpLabel 在 Main 方法內,現在讓我們創建一個 Person 對象列表,我們將其寫入 CSV 文件: var myPersonObjects = new List<Person>() { new Person { Id = 1, IsLiving = true, Name = "John" }, new Person { Id = 2, IsLiving = true, Name = "Steve" }, new Person { Id = 3, IsLiving = true, Name = "James" } }; var myPersonObjects = new List<Person>() { new Person { Id = 1, IsLiving = true, Name = "John" }, new Person { Id = 2, IsLiving = true, Name = "Steve" }, new Person { Id = 3, IsLiving = true, Name = "James" } }; Dim myPersonObjects = New List(Of Person)() From { New Person With { .Id = 1, .IsLiving = True, .Name = "John" }, New Person With { .Id = 2, .IsLiving = True, .Name = "Steve" }, New Person With { .Id = 3, .IsLiving = True, .Name = "James" } } $vbLabelText $csharpLabel 5.2. 使用默認設置在 C# 中寫入 CSV 文件 CsvHelper 已經成為使用 CSVWriter 方法在 C# 中寫入 CSV 的標準方式,並且非常易於使用: using (var writer = new StreamWriter("filePersons.csv")) using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) { csv.WriteRecords(myPersonObjects); } using (var writer = new StreamWriter("filePersons.csv")) using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) { csv.WriteRecords(myPersonObjects); } Using writer = New StreamWriter("filePersons.csv") Using csv = New CsvWriter(writer, CultureInfo.InvariantCulture) csv.WriteRecords(myPersonObjects) End Using End Using $vbLabelText $csharpLabel 5.3. 附加數據 我們需要記住,每次運行我們的程序時,舊的 CSV 文件將被覆蓋。 有時我們希望將數據附加到文件的末尾,而不是覆蓋現有數據。 CSVWriter 不提供這種方法,因為使用提供的分隔符打開/寫入文件不是 CSVWriter 的職責。 我們可以通過使用 FileStream 來實現,然後使用該 FileStream 構造 StreamWriter。 儘管這不在本文的範疇內,但我會向您展示如何做到這一點,因為這是任何應用程式的重要組成部分。 var configPersons = new CsvConfiguration(CultureInfo.InvariantCulture) { HasHeaderRecord = false }; using (var stream = File.Open("filePersons.csv", FileMode.Append)) using (var writer = new StreamWriter(stream)) using (var csv = new CsvWriter(writer, configPersons)) { csv.WriteRecords(myPersonObjects); } var configPersons = new CsvConfiguration(CultureInfo.InvariantCulture) { HasHeaderRecord = false }; using (var stream = File.Open("filePersons.csv", FileMode.Append)) using (var writer = new StreamWriter(stream)) using (var csv = new CsvWriter(writer, configPersons)) { csv.WriteRecords(myPersonObjects); } Dim configPersons = New CsvConfiguration(CultureInfo.InvariantCulture) With {.HasHeaderRecord = False} Using stream = File.Open("filePersons.csv", FileMode.Append) Using writer = New StreamWriter(stream) Using csv = New CsvWriter(writer, configPersons) csv.WriteRecords(myPersonObjects) End Using End Using End Using $vbLabelText $csharpLabel 向現有文件追加內容的搶奪,因為當我們追加內容時,順序可能會更改,或者我們可能新增了新的屬性。 我們應該確保在追加時考慮到這一點。 6. 授權 IronXL is an openly commercial C# Excel library. It is free for development and can always be licensed for commercial deployment.Licenses are availablefor single-project use, single developers, agencies, and global corporations, as well as SaaS and OEM redistribution. 所有授權包括 30 天退款保證,一年的產品支持和更新,適用於開發/測試/生產的有效性,並且也是永久性許可證(一次性購買)。 Lite 套餐從$799開始。 提供分隔符的 CSVWriter 是一種逗號分隔元素,商業友好使用完全免費。 7. 摘要与結論 總結 IronXL 是一個完整的函式庫,提供您所需的一切來處理 Excel 文件。它提供了將各種格式轉換為 XLSX 以及將 XLSX 轉換為其他格式(如 CSV)的功能。這種互相轉換提供了用戶靈活地處理其他文件格式的便捷性。 另一方面,CSVWriter 僅處理 CSV 文件格式,選項非常有限。 用戶無法在不同文件格式之間切換,而 IronXL 則可以。 所有代碼示例都可以在 CsvHelper 文檔文件中找到。 本文檔提供了在您的項目中使用 CSVWriter 的指南。 結論 IronXL 在支持多種格式使用方面比 CsvHelper.CSVWriter 具有明顯的優勢。 此外,您可以根據自己的選擇應用公式和樣式,而 CsvHelper 只允許讀取和寫入 CSV 文件,選項有限。 此外,您無法將新記錄附加到現有的 CSV 文件,因為它只會覆蓋先前的條目。 常見問題解答 CSVWriter 處理 C# 中 Excel 文檔的替代方案有哪些? IronXL 是處理 C# 中 Excel 文檔的 CSVWriter 的絕佳替代方案。它允許您讀取、編輯和導出各種 Excel 格式,例如 XLS、XLSX、CSV 和 TSV,而無需安裝 Microsoft Excel。 如何使用 .NET 庫將 CSV 文件轉換為 Excel 格式? 使用 IronXL,您可以輕鬆地將 CSV 文件轉換為 Excel 格式,方法是將 CSV 加載到工作簿中,然後將其保存為 XLSX 文件。這一過程涉及簡單的代碼命令來操作和保存文件。 IronXL 與 CSVWriter 相比有哪些優勢? IronXL 與 CSVWriter 相比提供了多種優勢,包括支持多種文件格式、應用 Excel 公式的功能以及數據排序和樣式設置等高級功能。相反,CSVWriter 僅限於處理 CSV 文件。 如何在我的 C# 項目中安裝 IronXL? 您可以通過 Visual Studio 中的 NuGet 包管理器在您的 C# 項目中安裝 IronXL。或者,您可以下載 NuGet 包或通過開發者命令提示符手動安裝 DLL。 IronXL 可以在 .NET Core 和 Azure 環境中使用嗎? 是的,IronXL 支持多個平台,包括 .NET Core 和 Azure,使其成為開發需要跨不同環境操作 Excel 文件的應用程序的多功能選擇。 使用 CSVWriter 可以將自定義類對象寫入 CSV 文件嗎? 是的,CSVWriter 支持將自定義類對象寫入 CSV 文件。它提供了一種靈活且易於使用的方法來高效地寫入數據,同時處理 CSV 文件。 在商業應用中使用 IronXL 的許可要求是什麼? IronXL 需要商業使用許可。開發過程中是免費的,但根據部署需求(無論是單個項目還是企業級應用)提供不同的許可。 IronXL 如何處理 Excel 公式? IronXL 允許您在電子表格中應用和操作 Excel 公式,為在 C# 應用中提供動態數據計算和分析的強大功能。 使用 IronXL 的一些常見故障排除問題是什麼? 使用 IronXL 的常見故障排除問題可能包括文件格式兼容性、數據類型不匹配或安裝錯誤。確保項目引用設置正確並驗證數據格式可以幫助解決這些問題。 IronXL 可以將數據附加到現有的 Excel 文件嗎? 是的,IronXL 可以將數據附加到現有的 Excel 文件中。它允許您打開一個現有的工作簿,通過添加新數據進行修改,然後保存更改而不覆蓋現有內容。 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 與 Spire XLS 的比較IronXL 與 CsvHelper 的比較
更新日期 6月 22, 2025 IronXL 使用 C# 開發人員的 Zip 壓縮教程 在本教程中,我們將探索如何在 C# 中使用相對路徑創建 ZIP 文件、從壓縮文件中提取數據及操作 ZIP 文件。 閱讀更多
更新日期 8月 4, 2025 EPPlus 讀取 Excel 到 DataTable C#(IronXL 教程) EPPlus 是一個功能強大的開源庫,用於在 C# 中創建和操作 Excel 文件。它提供了一個簡單直觀的 API,允許開發人員以程式的方式生成、讀取和修改 Excel 試算表。 閱讀更多