與其他組件的比較 IronXL 與 Microsoft Office Interop Excel 的比較 Jordi Bardia 更新:2025年9月22日 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 LLM副本 LLM副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 微軟辦公室軟體,如 Word、Excel、PowerPoint 等,非常流行,被各種類型的企業廣泛使用。 以 Excel 檔案格式建立報表檔案是許多使用者在其軟體應用程式中需要的功能,現在可以使用各種可用的程式庫將此功能新增至軟體應用程式中,這是一種確定的方法。 在本文中,我們將討論並比較如何使用兩個最受歡迎的函式庫IronXL和 Microsoft Office Excel Interop 在 C# 中以程式設計方式處理 Microsoft Excel 檔案。 IronXL和 Microsoft Excel Interop 都提供了在.NET框架中建立、編輯和讀取 Excel 文件的方法。 The next question is to decide which C# Excel library is best suited to your project. 本文將協助您確定最適合您套用場景的方案。 我們先來看看這兩個函式庫各自提供的功能,然後再進行比較。 IronXL圖書館 IronXL是一個.NET函式庫,它簡化了在 C# 中讀取和編輯 Microsoft Excel 文件的過程。 IronXl.Excel 是一個獨立的.NET軟體庫,用於讀取各種電子表格格式。 它不需要安裝 Microsoft Excel,也不依賴 Interop。 IronXL是一個直覺的 C# API,它允許您在.NET中以閃電般的速度讀取、編輯和建立 Excel 電子表格檔案。 IronXL完全支援.NET Core、 .NET Framework、Xamarin、行動平台、Linux、macOS 和 Azure。 IronXL是一個領先的.NET Core和.NET Framework Excel 電子表格庫,適用於 C#。 文件與支援 線上 API 參考文檔 Useful get-started snippets and tutorials at ironsoftware.com NuGet套件 GitHub庫中包含更多範例 由 Team Iron 提供支援 IronXL功能集 載入、讀取和編輯資料 — 來自 XLS/XLSX/CSV/TSV 文件 儲存與匯出 — 為 XLS/XLSX/CSV/TSV/JSON System.Data 物件 — 將 Excel 電子表格作為 System.Data.DataSet 和 System.Data.DataTable 物件使用。 公式 — 支援 Excel 公式。 每次編輯工作表時,公式都會重新計算。 範圍 — 易於使用的工作表 ["A1:B10"] 語法。 直觀地組合和創建範圍。 排序 — 對範圍、列和行進行排序。 樣式 — 儲存格視覺樣式、字體、大小、背景圖案、邊框、對齊方式和數字格式。 Microsoft Office Excel 互通對象 Microsoft.Office.Interop.Excel 命名空間提供了在 C# 和 Visual Basic 中與 Microsoft Excel 應用程式互動的方法。 使用此命名空間,我們可以建立新的 Excel 工作簿、Excel 工作表,在現有工作表中顯示數據,修改現有 Excel 工作表的內容等等。 Microsoft.Office.Interop.Excel 中的類別和介面為 Microsoft Excel 檔案的 COM 物件模型和自動執行 xls 或 xlsx 檔案的託管應用程式之間的互通性提供了支援。 C# 程式語言包含一些功能,可以更輕鬆地使用 Microsoft Office Interop API 物件。 新功能包括命名參數和可選參數、名為 dynamic 的新類型,以及將參數傳遞給 COM 方法中的參考參數(就像它們是值參數一樣)的功能。 這使其成為處理 COM 和 Interop 物件的更好選擇。 注意:Microsoft Excel Interop 物件需要在電腦上安裝 Microsoft Excel。 文章其餘部分如下: 建立控制台應用程式 IronXL C# 庫的安裝 Microsoft Office Interop Excel 安裝 建立一個新的 Excel 工作簿和工作表 讀取 Excel 文件 在 Excel 檔案中處理值範圍 使用Excel公式 許可 總結與結論 1. 建立控制台應用程式 請依照下列步驟建立控制台應用程式: 啟動 Visual Studio 2022 IDE。 點選"建立新項目" 。 在"建立新項目"頁面上,從語言下拉清單中選擇C# ,從平台清單中選擇Windows ,從"項目類型"清單中選擇控制台。 從顯示的專案範本中選擇控制台應用程式(.NET Framework) 。 點選"下一步" 。 在"附加資訊"畫面中,指定您要使用的框架版本。 本範例將使用.NET Framework 4.8 。 點擊"建立"完成流程。 現在專案已經創建完成,我們幾乎可以開始測試庫了。 但是,我們仍然需要將它們安裝並整合到我們的專案中。 我們先來安裝IronXL 。 2. IronXL C# 庫的安裝 您可以使用以下方法下載並安裝IronXL庫: 在 Visual Studio 中使用NuGet套件。 直接下載NuGet套件。 使用 DLL 手動安裝。 讓我們仔細看看每一個。 2.1. 在 Visual Studio 中使用NuGet套件 Visual Studio 提供了NuGet套件管理器,用於在專案中安裝NuGet套件。 您可以透過"專案"功能表存取它,或在"解決方案資源管理器"中右鍵單擊您的專案。 現在,從瀏覽標籤中搜尋IronXl.Excel 並安裝 ——我們完成了。 3.2. 使用NuGet套件管理器控制台 下載和安裝 Microsoft.Office.Interop.Excel C# 程式庫的另一種方法是使用下列步驟透過開發人員命令提示字元安裝NuGet套件。 開啟開發者命令提示字元-通常位於 Visual Studio 資料夾中。 輸入以下命令: PM> Install-Package Microsoft.Office.Interop.Excel PM> Install-Package Microsoft.Office.Interop.Excel SHELL 按回車鍵。 這將下載並安裝軟體包。 重新載入 Visual Studio 專案並開始使用。 3.3. 加入必要的 using 指令 在解決方案資源管理器中,右鍵點選 Program.cs 文件,然後按一下"檢視程式碼"。 在程式碼檔案的頂部新增以下 using 指令: using Excel = Microsoft.Office.Interop.Excel; using Excel = Microsoft.Office.Interop.Excel; $vbLabelText $csharpLabel 4. 建立一個新的 Excel 工作簿和工作表 工作簿是一個包含多個工作表(每個工作表都有行和列)的 Excel 檔案。 這兩個圖書館都提供了建立新的 Excel 工作簿和工作表的功能。 讓我們一步一步來看程式碼。 4.1. 使用IronXL建立新的 Excel 工作簿和工作表 使用IronXL建立新的 Excel 工作簿簡直易如反掌! 只需一行程式碼! 是的,真的。 將以下程式碼加入 Program.cs 檔案中的靜態函數 void Main 中: // Create a new workbook in XLSX format WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX); // Create a new workbook in XLSX format WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX); $vbLabelText $csharpLabel IronXL可以建立 XLS(舊版 Excel 檔案)和 XLSX(目前及更新版檔案)兩種檔案格式。 而且,建立預設工作表就更簡單了: // Create a new worksheet var worksheet = workbook.CreateWorkSheet("IronXL Features"); // Create a new worksheet var worksheet = workbook.CreateWorkSheet("IronXL Features"); $vbLabelText $csharpLabel 現在您可以使用工作表變數來設定儲存格值,並執行 Excel 檔案可以執行的幾乎所有操作。 4.2. 使用 Microsoft.Office.Interop.Excel 建立新的 Excel 工作簿和工作表 若要使用 Microsoft.Office.Interop 建立 Excel 文件,需要先安裝 Microsoft Excel。 因此,我們需要檢查主機上是否安裝了 Microsoft Excel——如果沒有,它將傳回一個需要處理的異常。 以下範例程式碼可用於檢查 Excel 應用程式的安裝情況,並建立 Excel 工作簿和工作表: 檢查是否已安裝 Microsoft Excel: // Start Excel and get Application object. Excel.Application xlApp = new Excel.Application(); // Check if Excel is installed if (xlApp == null) { Console.WriteLine("Excel is not installed in the system..."); return; } // Start Excel and get Application object. Excel.Application xlApp = new Excel.Application(); // Check if Excel is installed if (xlApp == null) { Console.WriteLine("Excel is not installed in the system..."); return; } $vbLabelText $csharpLabel 建立工作簿和工作表: // Create Workbook and Worksheet object misValue = System.Reflection.Missing.Value; Excel.Workbook xlWorkBook = xlApp.Workbooks.Add(misValue); Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); // Create Workbook and Worksheet object misValue = System.Reflection.Missing.Value; Excel.Workbook xlWorkBook = xlApp.Workbooks.Add(misValue); Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); $vbLabelText $csharpLabel 目前來看,從兩個程式碼來看, IronXL比 Office Interop Excel 更有優勢。 IronXL只需一行程式碼即可處理 Excel 文件,而無需任何額外的依賴項。 5. 讀取 Excel 文件 這兩個函式庫都可以開啟和讀取現有的Excel文件。 我們來看看範例程式碼。 5.1. 使用IronXL讀取 Excel 文件 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"); $vbLabelText $csharpLabel 每個工作簿可以包含多個工作表物件。 這些代表 Excel 文件中的工作表。 如果工作簿包含工作表,請以下列方式按名稱擷取它們: // Open Sheet for reading var worksheet = workbook.GetWorkSheet("sheetnamegoeshere"); // Open Sheet for reading var 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); } $vbLabelText $csharpLabel 5.2. 使用 Microsoft.Office.Interop.Excel 讀取 Excel 文件 這段程式碼也只需一行即可開啟工作簿和工作表。 程式碼如下: Excel.Application xlApp = new Excel.Application(); // Load WorkBook Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath); // Open Sheet for reading Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); Excel.Application xlApp = new Excel.Application(); // Load WorkBook Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath); // Open Sheet for reading Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); $vbLabelText $csharpLabel 讀取單元格值的程式碼: // Get the entire range of cells Excel.Range xlRange = xlWorkSheet.UsedRange; // Reading first 10 rows with two columns for (int rowCount = 1; rowCount <= 10; rowCount++) { string firstValue = Convert.ToString((xlRange.Cells[rowCount, 1] as Excel.Range).Text); string secondValue = Convert.ToString((xlRange.Cells[rowCount, 2] as Excel.Range).Text); Console.WriteLine(firstValue + "\t" + secondValue); } // Get the entire range of cells Excel.Range xlRange = xlWorkSheet.UsedRange; // Reading first 10 rows with two columns for (int rowCount = 1; rowCount <= 10; rowCount++) { string firstValue = Convert.ToString((xlRange.Cells[rowCount, 1] as Excel.Range).Text); string secondValue = Convert.ToString((xlRange.Cells[rowCount, 2] as Excel.Range).Text); Console.WriteLine(firstValue + "\t" + secondValue); } $vbLabelText $csharpLabel 然而,檢查 Excel 安裝並建立其實例是不可或缺的一部分。 6. 在 Excel 檔案中處理值範圍 6.1. 使用IronXL處理數值範圍 在IronXL中,只需一行程式碼,我們就可以取得特定單元格的值範圍。 然後,使用循環,可以讀取或編輯每個儲存格的值。 程式碼如下: // Load the workbook and get the first worksheet WorkBook workbook = WorkBook.Load("test.xls"); WorkSheet sheet = workbook.WorkSheets.First(); // This is how we get range from Excel worksheet var range = sheet["A2:A8"]; // This is how we can iterate over our range and read or edit any cell foreach (var cell in range) { Console.WriteLine(cell.Value); } // Load the workbook and get the first worksheet WorkBook workbook = WorkBook.Load("test.xls"); WorkSheet sheet = workbook.WorkSheets.First(); // This is how we get range from Excel worksheet var range = sheet["A2:A8"]; // This is how we can iterate over our range and read or edit any cell foreach (var cell in range) { Console.WriteLine(cell.Value); } $vbLabelText $csharpLabel 6.2. 使用 Microsoft.Office.Interop.Excel 處理值範圍 這也只需要一行程式碼即可取得單元格值的範圍。 然後就可以用所需的值更新這些儲存格。 程式碼如下: Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath); Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); // Get range of values and updating their format var range = xlWorkSheet.get_Range("A1", "D1"); range.NumberFormat = "$0.00"; Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath); Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); // Get range of values and updating their format var range = xlWorkSheet.get_Range("A1", "D1"); range.NumberFormat = "$0.00"; $vbLabelText $csharpLabel 7. 使用Excel公式 Excel公式是處理Excel檔案最重要的部分。 這兩個庫都提供了使用公式並將其輕鬆應用於單元格的功能。 7.1. 使用IronXL處理 Excel 公式 載入工作簿和工作表後,可以使用下列程式碼範例來變更公式或將其套用至特定儲存格。 程式碼如下: // 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 您也可以檢索公式及其值。 // Get Formulas // Get the formula's calculated value. e.g. "52" string formulaValue = worksheet["G30"].Value; // Get the formula as a string. e.g. "Max(C3:C7)" string formulaString = worksheet["G30"].Formula; // Save your changes with updated formulas and calculated values. workbook.Save(); // Get Formulas // Get the formula's calculated value. e.g. "52" string formulaValue = worksheet["G30"].Value; // Get the formula as a string. e.g. "Max(C3:C7)" string formulaString = worksheet["G30"].Formula; // Save your changes with updated formulas and calculated values. workbook.Save(); $vbLabelText $csharpLabel 7.2. 使用 Microsoft.Office.Interop.Excel 處理 Excel 公式 同樣,載入工作簿和工作表後,可以使用以下程式碼來處理 Excel 公式。 程式碼範例如下: // Get range of values and updating their format var range1 = xlWorkSheet.get_Range("A1", "D1"); var range2 = xlWorkSheet.get_Range("C2", "C6"); // Set Formula range1.Formula = "=RAND()*100000"; range2.Formula = "=A2 & \" \" & B2"; // Get range of values and updating their format var range1 = xlWorkSheet.get_Range("A1", "D1"); var range2 = xlWorkSheet.get_Range("C2", "C6"); // Set Formula range1.Formula = "=RAND()*100000"; range2.Formula = "=A2 & \" \" & B2"; $vbLabelText $csharpLabel 8. 許可 IronXL是一個開源的商業 C# Excel 函式庫。 它可免費用於開發,並可隨時獲得商業部署許可。 Licenses are available for single-project use, single developers, agencies, and global corporations, as well as SaaS and OEM redistribution. 所有許可證均包含 30 天退款保證、一年產品支援和更新、適用於開發/測試/生產環境,以及永久許可證(一次性購買)。 Lite 軟體包從 $799 開始。 對於 Microsoft Office Interop Excel,使用此 DLL 檔案的應用程式無論是單次使用還是商業用途,都不需要單獨的授權。 為了使任何解決方案能夠與 Office 應用程式配合使用,必須在執行該解決方案的電腦上安裝並取得 Microsoft Office 應用程式的授權。 DLL 檔案將始終存在於安裝了 Office 應用程式的電腦上,並且會在該電腦上註冊。 同時,使用"互通"的.NET解決方案所需的主要互通組件 (PIA) 也將安裝在 GAC 中。 9. 總結與結論 概括 使用Iron Software的IronXL軟體庫,在 C# 和所有其他.NET語言中讀取和建立 Excel (XLS、XLSX 和 CSV) 檔案非常容易。 IronXL不需要在您的伺服器上安裝 Excel 或 Interop。 IronXL 提供比 Microsoft.Office.Interop.ExcelIronXL、更直覺的 API。 IronXL可在.NET Core 2、Framework 4.5、Azure、Mono、Mobile 和 Xamarin 上運作。 當從 C# 或 VB .NET應用程式建立/讀取 Excel 檔案(XLS、XLSX、CSV)時,可以使用 Microsoft Office Interop(Excel 自動化)。 它要求所有用戶端電腦都安裝相同版本的 Microsoft Excel,並且僅適用於 Windows 作業系統。 結論 在這方面, IronXL比 Microsoft.Office.Interop.Excel 具有明顯的優勢,因為它不需要在本機或伺服器電腦上安裝 Microsoft Office Excel 應用程式即可運作。 此外,使用 Excel Automation 時,Microsoft Excel 會在背景加載,與IronXL相比,會佔用大量 MB 空間並載入大量檔案和 DLL。 IronXL 的API 比Microsoft.Office.Interop.Excel的 API 更快、更直覺。 微軟辦公室軟體(包括 Excel)被設計成使用者介面應用程序,因此其 API 速度非常慢。 微軟不建議在伺服器上使用 Excel Automation(或任何 Office Interop)。 在這種情況下,憑藉其所有強大的功能, IronXL是整合到軟體應用程式中的最佳選擇。 請注意Microsoft Office 為其各自所有者的註冊商標。 本網站與微軟Office無任何關聯,亦未獲得其認可或贊助。所有產品名稱、標誌和品牌均為其各自所有者的財產。 比較僅供參考,反映的是撰寫本文時可公開取得的資訊。 常見問題解答 如何在未安装 Microsoft Excel 的情况下在 C# 中创建和编辑 Excel 文件? 您可以使用 IronXL 在 C# 中创建和编辑 Excel 文件,而無需在计算机上安装 Microsoft Excel。IronXL 提供一個独立的庫,可与各种 Excel 文件格式一起使用,并支持多個平台。 使用 IronXL 代替 Microsoft Office Interop 進行 Excel 操作的好處是什么? IronXL 比 Microsoft Office Interop 具有多項优势,例如不需要安装 Excel,支持包括 .NET Core 和 Azure 在內的多個平台,同時提供更快捷和直观的 API。 我可以使用 IronXL 读取和写入不同的 Excel 文件格式嗎? 可以,IronXL 支持读取和写入各种 Excel 文件格式,包括 XLS、XLSX、CSV 和 TSV,这讓它在不同應用需求中表現多样化。 IronXL 能否兼容 .NET Core 和其他环境? IronXL 完全兼容 .NET Core、.NET Framework、Xamarin、Mobile、Linux、macOS 和 Azure,提供了不同開發环境的灵活性。 IronXL 如何處理 Excel 公式? IronXL 允許用戶轻松設置和獲取 Excel 公式。它在工作表被修改時自動重新计算公式,并支持保存已更新的公式及其计算值。 在項目中使用 IronXL 時有什么支持? IronXL 提供廣泛的支持,包括在线 API 文檔、入门代碼片段、教程、GitHub 示例和来自 Team Iron 的專业支持。 在服务器上使用 Microsoft Office Interop for Excel 的限制是什么? 由于性能問题及需要安装 Microsoft Excel,微軟不推荐在服务器上使用 Excel 自動化或任何 Office Interop,这可能造成维护挑战。 IronXL 如何改進性能,较傳统的 Excel interop 庫更优? IronXL 提供比 Microsoft Office Interop Excel 更快和更高效的 API,而後者是作為 UI 應用程序設计的,往往更慢且资源占用更大。 IronXL 適合于商业軟件應用程序使用嗎? 可以,IronXL 可授權用于商业用途,并提供多种許可選項,包括单項目、開發人员和全球許可,所有这些都包括 30 天退款保證。 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 和 Epplus 的比較IronXL 與 Aspose Cells 的比較
更新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 函式庫的功能、許可協議及程式碼範例。 閱讀更多