使用 IRONXL 如何使用IronXL在C#中創建Excel樞紐分析表。 Jordi Bardia 更新:2026年2月27日 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 LLM副本 LLM副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 在 Excel 中以程式設計方式產生資料透視表需要使用 C# 互通 及其 Office 依賴項,或使用像IronXL這樣可以獨立工作的現代函式庫——本教學示範了這兩種方法,並向您展示了為什麼現代方法才是更好的選擇。 歷史上,在伺服器端或跨平台.NET程式碼中建立透視表一直是一件很痛苦的事情。 傳統的 COM 互通方式會將您綁定到安裝了完整 Office 的 Windows 機器上,如果您錯過一次 COM 清理調用,就會產生內存洩漏,並且一旦嘗試部署到 Linux 或 Docker 容器,就會崩潰。 現代的替代方案——使用IronXL和 LINQ 編寫聚合邏輯——可以在任何.NET運行的地方運行,不需要 Office 許可證,並且可以提供簡潔、易讀的程式碼。 本指南將詳細介紹這兩種技術。 您將看到原始的互通方法,了解它究竟脆弱在哪裡,然後使用IronXL在 C# 中建立相同的透視式匯總表。 您還將看到如何使用 Excel 公式實現即時、自動更新的匯總,其行為類似於真正的資料透視表刷新。 什麼是Excel資料透視表? 資料透視表是電子表格軟體中最強大的分析工具之一。 它透過對行進行分組、聚合值並將結果投影到交叉表佈局中來匯總大型資料集——所有這些都不需要您手動編寫任何公式。 微軟官方的透視表文件對 Excel 內部的透視表功能進行了全面的概述。 資料透視表出現在 Microsoft Excel、Google Sheets、Apple Numbers 和大多數其他電子表格工具中。 核心概念始終相同:您定義行字段、列字段和值字段,該工具將為您建立匯總矩陣。 當基礎資料變更時,刷新透視表,匯總資訊會自動更新。 在 C# 伺服器端程式碼中,您主要有兩種選擇: C# 互通-- 透過 COM 自動執行正在執行的 Excel 進程,從而在 XLSX 檔案中建立真正的原生資料透視表對象 IronXL與 LINQ 聚合-將工作簿讀入內存,在託管的.NET程式碼中計算相同的摘要,並將結果寫入新的工作表。 兩種方法都能產生有用的結果。 但只有其中一種能在現代部署環境中可靠運作。 如何使用 C# 互通 建立資料透視表? C# Excel Interop 可讓您透過 COM 自動化直接存取 Excel 的原生資料透視表功能。 您建立一個 Excel.Application 對象,開啟一個工作簿,定義一個指向資料範圍的透視緩存,然後配置行欄位、列欄位和資料欄位。 如何設定互通透視表程式碼 using Excel = Microsoft.Office.Interop.Excel; using System.Runtime.InteropServices; // Create Excel application instance Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"C:\Data\SalesData.xlsx"); Excel.Worksheet xlSheet = (Excel.Worksheet)xlWorkbook.Sheets[1]; Excel.Worksheet xlPivotSheet = (Excel.Worksheet)xlWorkbook.Sheets.Add(); // Define data range for pivot table Excel.Range dataRange = xlSheet.UsedRange; // Create pivot cache and pivot table Excel.PivotCache pivotCache = xlWorkbook.PivotCaches().Create( Excel.XlPivotTableSourceType.xlDatabase, dataRange, Type.Missing); Excel.PivotTable pivotTable = pivotCache.CreatePivotTable( xlPivotSheet.Cells[3, 1], "SalesPivot", Type.Missing, Type.Missing); // Configure pivot table fields Excel.PivotField productField = (Excel.PivotField)pivotTable.PivotFields("Product"); productField.Orientation = Excel.XlPivotFieldOrientation.xlRowField; productField.Position = 1; Excel.PivotField regionField = (Excel.PivotField)pivotTable.PivotFields("Region"); regionField.Orientation = Excel.XlPivotFieldOrientation.xlColumnField; regionField.Position = 1; Excel.PivotField salesField = (Excel.PivotField)pivotTable.PivotFields("Sales"); pivotTable.AddDataField(salesField, "Sum of Sales", Excel.XlConsolidationFunction.xlSum); // Save and cleanup xlWorkbook.SaveAs(@"C:\Data\PivotReport.xlsx"); xlWorkbook.Close(); xlApp.Quit(); // Release COM objects to prevent memory leaks Marshal.ReleaseComObject(pivotTable); Marshal.ReleaseComObject(pivotCache); Marshal.ReleaseComObject(xlPivotSheet); Marshal.ReleaseComObject(xlSheet); Marshal.ReleaseComObject(xlWorkbook); Marshal.ReleaseComObject(xlApp); using Excel = Microsoft.Office.Interop.Excel; using System.Runtime.InteropServices; // Create Excel application instance Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"C:\Data\SalesData.xlsx"); Excel.Worksheet xlSheet = (Excel.Worksheet)xlWorkbook.Sheets[1]; Excel.Worksheet xlPivotSheet = (Excel.Worksheet)xlWorkbook.Sheets.Add(); // Define data range for pivot table Excel.Range dataRange = xlSheet.UsedRange; // Create pivot cache and pivot table Excel.PivotCache pivotCache = xlWorkbook.PivotCaches().Create( Excel.XlPivotTableSourceType.xlDatabase, dataRange, Type.Missing); Excel.PivotTable pivotTable = pivotCache.CreatePivotTable( xlPivotSheet.Cells[3, 1], "SalesPivot", Type.Missing, Type.Missing); // Configure pivot table fields Excel.PivotField productField = (Excel.PivotField)pivotTable.PivotFields("Product"); productField.Orientation = Excel.XlPivotFieldOrientation.xlRowField; productField.Position = 1; Excel.PivotField regionField = (Excel.PivotField)pivotTable.PivotFields("Region"); regionField.Orientation = Excel.XlPivotFieldOrientation.xlColumnField; regionField.Position = 1; Excel.PivotField salesField = (Excel.PivotField)pivotTable.PivotFields("Sales"); pivotTable.AddDataField(salesField, "Sum of Sales", Excel.XlConsolidationFunction.xlSum); // Save and cleanup xlWorkbook.SaveAs(@"C:\Data\PivotReport.xlsx"); xlWorkbook.Close(); xlApp.Quit(); // Release COM objects to prevent memory leaks Marshal.ReleaseComObject(pivotTable); Marshal.ReleaseComObject(pivotCache); Marshal.ReleaseComObject(xlPivotSheet); Marshal.ReleaseComObject(xlSheet); Marshal.ReleaseComObject(xlWorkbook); Marshal.ReleaseComObject(xlApp); $vbLabelText $csharpLabel 此 Interop 範例建立了一個原生 Excel 資料透視表,其中產品為行,地區為列,銷售額匯總在資料區中。 雖然它確實在 XLSX 檔案中產生了一個真正的透視表對象,但這需要安裝 Microsoft Office,並且需要仔細管理 COM 對象。 錯過一次 Marshal.ReleaseComObject 調用,您會發現任務管理器中累積了大量過期的 Excel 進程。 如何在編寫任何程式碼之前安裝IronXL 在採用IronXL方法之前,請先透過NuGet套件管理器安裝該程式庫: Install-Package IronXl.Excel dotnet add package IronXl.Excel Install-Package IronXl.Excel dotnet add package IronXl.Excel SHELL 伺服器、容器或開發機器上無需安裝 Office。 IronXL 完全在託管的.NET記憶體中讀取和寫入IronXL 、XLS 和 CSV 檔案。 C# 互通會帶來哪些問題? 互通性方法存在一些重大挑戰,這些挑戰在實際部署中會迅速加劇。 Stack Overflow 和其他程式設計資源仍然推薦它,因為許多貼文寫於 2000 年代初期,並且後來被鎖定——所以這些建議已經停滯不前。 部署相依性-執行您的程式碼的每台機器都必須安裝已授權的 Microsoft Office 副本,包括生產伺服器和 CI/CD 建置代理程式。 這既增加了許可成本,也增加了部署複雜性,而這些問題完全可以透過現代替代方案來避免。 記憶體管理負擔-- COM 物件必須使用 Marshal.ReleaseComObject() 明確釋放。 即使缺少一個物件也會導致 Excel 進程無限期地在記憶體中掛起, Stack Overflow 上對此有大量記錄。 對於長時間運行的服務或ASP.NET Web 應用程式而言,這會造成嚴重的資源洩漏。 平台限制-互通功能僅適用於安裝了 Office 的 Windows 系統。 它無法在 Linux、macOS、Docker 容器或 Azure Functions 或 AWS Lambda 等無伺服器平台上運作。 這會完全阻礙你使用現代雲端原生架構。 效能瓶頸-啟動 Excel 應用程式實例速度慢且資源消耗大。對於需要產生數十甚至數百份報表的伺服器端批次處理,這種啟動開銷會成為嚴重的吞吐量瓶頸。 版本相容性脆弱性-不同的 Office 版本提供的 COM 介面略有不同。 適用於 Office 2019 的程式碼在 Office 2016 或 Microsoft 365 中可能表現不同,而且您無法在部署中固定版本。 微軟關於 Office Interop 組件的文檔指出,這些版本控制限制是一個已知的限制。 CI/CD 不相容-大多數持續整合環境都沒有安裝 Office。 測試資料透視表產生程式碼需要模擬整個 COM 層,或維護一個具有已授權 Office 安裝的特殊 Windows 代理程式。 對於任何面向.NET 6 或更高版本(包括.NET 10)的新.NET應用程序,這些限制使得互通成為一種不切實際的選擇。 IronXL如何在不使用互通的情況下建立資料透視表? IronXL建立資料透視表的方法有所不同。 IronXL不是透過 COM 控制外部 Excel 進程,而是將工作簿讀入託管的.NET內存,使您可以直接存取單元格值、公式和工作表結構。 然後,您可以使用標準 LINQ 查詢建立透視表式聚合,並將結果寫回新的工作表。 如何使用IronXL和 LINQ 建立交叉表匯總 以下範例載入銷售資料工作簿,計算按地區劃分的產品交叉表,並將匯總結果寫入新工作表——所有這些都無需任何 Office 依賴項: using IronXL; using System.Linq; using System.Data; // Load Excel file -- no Office installation required WorkBook workbook = WorkBook.Load("SalesData.xlsx"); WorkSheet dataSheet = workbook.WorkSheets[0]; // Convert to DataTable for flexible LINQ manipulation var dataTable = dataSheet.ToDataTable(true); // true = first row as column headers // Build pivot-style aggregation using LINQ grouping var pivotData = dataTable.AsEnumerable() .GroupBy(row => new { Product = row["Product"].ToString(), Region = row["Region"].ToString() }) .Select(g => new { Product = g.Key.Product, Region = g.Key.Region, TotalSales = g.Sum(row => Convert.ToDecimal(row["Sales"])), AverageSale = g.Average(row => Convert.ToDecimal(row["Sales"])), Count = g.Count() }); // Create the pivot report worksheet WorkSheet pivotSheet = workbook.CreateWorkSheet("PivotReport"); // Get distinct row and column values var products = pivotData.Select(p => p.Product).Distinct().OrderBy(p => p).ToList(); var regions = pivotData.Select(p => p.Region).Distinct().OrderBy(r => r).ToList(); // Write column headers pivotSheet["A1"].Value = "Product / Region"; for (int c = 0; c < regions.Count; c++) { pivotSheet[$"{(char)('B' + c)}1"].Value = regions[c]; } // Populate data rows for (int r = 0; r < products.Count; r++) { pivotSheet[$"A{r + 2}"].Value = products[r]; for (int c = 0; c < regions.Count; c++) { var sales = pivotData .Where(p => p.Product == products[r] && p.Region == regions[c]) .Select(p => p.TotalSales) .FirstOrDefault(); pivotSheet[$"{(char)('B' + c)}{r + 2}"].Value = sales; } } // Add a totals row using Excel SUM formulas int totalRow = products.Count + 2; pivotSheet[$"A{totalRow}"].Value = "Total"; for (int c = 0; c < regions.Count; c++) { char col = (char)('B' + c); pivotSheet[$"{col}{totalRow}"].Formula = $"=SUM({col}2:{col}{totalRow - 1})"; } // Apply currency formatting to the data range var dataRange = pivotSheet[$"B2:{(char)('B' + regions.Count - 1)}{totalRow}"]; dataRange.FormatString = "$#,##0.00"; workbook.SaveAs("PivotReport.xlsx"); using IronXL; using System.Linq; using System.Data; // Load Excel file -- no Office installation required WorkBook workbook = WorkBook.Load("SalesData.xlsx"); WorkSheet dataSheet = workbook.WorkSheets[0]; // Convert to DataTable for flexible LINQ manipulation var dataTable = dataSheet.ToDataTable(true); // true = first row as column headers // Build pivot-style aggregation using LINQ grouping var pivotData = dataTable.AsEnumerable() .GroupBy(row => new { Product = row["Product"].ToString(), Region = row["Region"].ToString() }) .Select(g => new { Product = g.Key.Product, Region = g.Key.Region, TotalSales = g.Sum(row => Convert.ToDecimal(row["Sales"])), AverageSale = g.Average(row => Convert.ToDecimal(row["Sales"])), Count = g.Count() }); // Create the pivot report worksheet WorkSheet pivotSheet = workbook.CreateWorkSheet("PivotReport"); // Get distinct row and column values var products = pivotData.Select(p => p.Product).Distinct().OrderBy(p => p).ToList(); var regions = pivotData.Select(p => p.Region).Distinct().OrderBy(r => r).ToList(); // Write column headers pivotSheet["A1"].Value = "Product / Region"; for (int c = 0; c < regions.Count; c++) { pivotSheet[$"{(char)('B' + c)}1"].Value = regions[c]; } // Populate data rows for (int r = 0; r < products.Count; r++) { pivotSheet[$"A{r + 2}"].Value = products[r]; for (int c = 0; c < regions.Count; c++) { var sales = pivotData .Where(p => p.Product == products[r] && p.Region == regions[c]) .Select(p => p.TotalSales) .FirstOrDefault(); pivotSheet[$"{(char)('B' + c)}{r + 2}"].Value = sales; } } // Add a totals row using Excel SUM formulas int totalRow = products.Count + 2; pivotSheet[$"A{totalRow}"].Value = "Total"; for (int c = 0; c < regions.Count; c++) { char col = (char)('B' + c); pivotSheet[$"{col}{totalRow}"].Formula = $"=SUM({col}2:{col}{totalRow - 1})"; } // Apply currency formatting to the data range var dataRange = pivotSheet[$"B2:{(char)('B' + regions.Count - 1)}{totalRow}"]; dataRange.FormatString = "$#,##0.00"; workbook.SaveAs("PivotReport.xlsx"); $vbLabelText $csharpLabel 這樣就能產生與 Excel 原生資料透視表相同的交叉匯總表。 您可以完全透過程式控制每個儲存格、公式和格式字串,而無需清理 COM 物件。 立即開始在您的項目中使用 IronXL 並免費試用。 第一步: 免費啟動 如何使用Excel公式建立動態匯總? 如果您希望匯總表保持即時更新(即來源資料變更時自動重新計算), IronXL可讓您直接在儲存格中寫入 Excel 公式字串。 這樣就能實現類似透視表自動刷新的功能,而無需任何 Interop 依賴。 這裡的關鍵功能是 SUMIFS 和 COUNTIFS。 SUMIFS 根據多個條件列對範圍求和; COUNTIFS 統計匹配的行數。 兩者都接受已命名工作表的引用,因此您可以按名稱將總計表直接指向來源資料表。 如何使用IronXL編寫基於公式的聚合 using IronXL; using System.Data; string inputPath = "SalesData.xlsx"; string outputPath = "DynamicSummary.xlsx"; WorkBook workbook = WorkBook.Load(inputPath); WorkSheet dataSheet = workbook.WorkSheets[0]; // Name the data sheet so formula references are stable dataSheet.Name = "DataSheet"; // Convert to DataTable to enumerate unique product/region combinations DataTable dataTable = dataSheet.ToDataTable(true); WorkSheet summarySheet = workbook.CreateWorkSheet("DynamicSummary"); // Get unique product-region pairs var uniqueCombos = dataTable.AsEnumerable() .Select(row => new { Product = row["Product"].ToString(), Region = row["Region"].ToString() }) .Distinct() .OrderBy(x => x.Product) .ThenBy(x => x.Region) .ToList(); // Header row summarySheet["A1"].Value = "Product"; summarySheet["B1"].Value = "Region"; summarySheet["C1"].Value = "Total Sales"; summarySheet["D1"].Value = "Count"; // Populate rows with live SUMIFS / COUNTIFS formulas for (int i = 0; i < uniqueCombos.Count; i++) { int rowIndex = i + 2; var combo = uniqueCombos[i]; summarySheet[$"A{rowIndex}"].Value = combo.Product; summarySheet[$"B{rowIndex}"].Value = combo.Region; summarySheet[$"C{rowIndex}"].Formula = $"=SUMIFS(DataSheet!C:C,DataSheet!A:A,\"{combo.Product}\",DataSheet!B:B,\"{combo.Region}\")"; summarySheet[$"D{rowIndex}"].Formula = $"=COUNTIFS(DataSheet!A:A,\"{combo.Product}\",DataSheet!B:B,\"{combo.Region}\")"; } // Grand total row int totalRow = uniqueCombos.Count + 2; summarySheet[$"A{totalRow}"].Value = "Total"; summarySheet[$"C{totalRow}"].Formula = $"=SUM(C2:C{totalRow - 1})"; summarySheet[$"D{totalRow}"].Formula = $"=SUM(D2:D{totalRow - 1})"; workbook.SaveAs(outputPath); using IronXL; using System.Data; string inputPath = "SalesData.xlsx"; string outputPath = "DynamicSummary.xlsx"; WorkBook workbook = WorkBook.Load(inputPath); WorkSheet dataSheet = workbook.WorkSheets[0]; // Name the data sheet so formula references are stable dataSheet.Name = "DataSheet"; // Convert to DataTable to enumerate unique product/region combinations DataTable dataTable = dataSheet.ToDataTable(true); WorkSheet summarySheet = workbook.CreateWorkSheet("DynamicSummary"); // Get unique product-region pairs var uniqueCombos = dataTable.AsEnumerable() .Select(row => new { Product = row["Product"].ToString(), Region = row["Region"].ToString() }) .Distinct() .OrderBy(x => x.Product) .ThenBy(x => x.Region) .ToList(); // Header row summarySheet["A1"].Value = "Product"; summarySheet["B1"].Value = "Region"; summarySheet["C1"].Value = "Total Sales"; summarySheet["D1"].Value = "Count"; // Populate rows with live SUMIFS / COUNTIFS formulas for (int i = 0; i < uniqueCombos.Count; i++) { int rowIndex = i + 2; var combo = uniqueCombos[i]; summarySheet[$"A{rowIndex}"].Value = combo.Product; summarySheet[$"B{rowIndex}"].Value = combo.Region; summarySheet[$"C{rowIndex}"].Formula = $"=SUMIFS(DataSheet!C:C,DataSheet!A:A,\"{combo.Product}\",DataSheet!B:B,\"{combo.Region}\")"; summarySheet[$"D{rowIndex}"].Formula = $"=COUNTIFS(DataSheet!A:A,\"{combo.Product}\",DataSheet!B:B,\"{combo.Region}\")"; } // Grand total row int totalRow = uniqueCombos.Count + 2; summarySheet[$"A{totalRow}"].Value = "Total"; summarySheet[$"C{totalRow}"].Formula = $"=SUM(C2:C{totalRow - 1})"; summarySheet[$"D{totalRow}"].Formula = $"=SUM(D2:D{totalRow - 1})"; workbook.SaveAs(outputPath); $vbLabelText $csharpLabel 這些公式與來源資料保持即時連接。 當有人更新 DataSheet 中的值時,Excel 會在下次開啟或刷新時自動重新計算匯總資訊——這為您提供了與原生資料透視表刷新週期相同的行為,而無需 COM 自動化。 將此方法應用於上例中使用的相同銷售資料工作簿時,輸出結果如下所示: 這種基於公式的方法還允許您使用IronXL 的單元格格式 API向匯總單元格添加條件格式、資料條或圖示集,從而使您的報告在視覺上清晰明了,而無需在 Excel 使用者介面中進行任何手動操作。 這兩種方法有何異同? 在選擇方法之前,權衡利弊很有幫助。下表涵蓋了生產環境.NET開發中最重要的幾個面向: C# 互通 與IronXL在資料透視表產生的比較 方面 C# 互通 IronXL 辦公室要求 是的——每台機器都要完整安裝。 否——獨立的NuGet包 平台支援 僅限 Windows 系統 Windows、Linux、macOS、Docker 記憶體管理 需要手動清理 COM 對象 自動.NET垃圾回收 部署複雜性 高價 -- 辦公室軟體許可 + 安裝 低——單一 DLL 引用 表現 速度慢-Excel進程啟動開銷 快速——記憶體內計算 雲端相容 否-在 Azure Functions 和 AWS Lambda 上均已封鎖 是的——可在任何雲端平台上運行 原生透視表對象 是的-完整的Excel資料透視表 否——基於聚合的等效項 發展速度 速度慢——COM 複雜性 快速流暢的託管 API 支援.NET 10 有限的 COM 綁定問題 完整版-面向現代.NET Interop 唯一具有明顯優勢的情況是,當您特別需要將原生 Excel 資料透視表物件嵌入到 XLSX 檔案中時—例如,如果下游使用者必須使用 Excel 內建的資料透視表 UI 與之互動(向下鑽取、篩選、互動式地更改聚合函數)。 在其他所有情況下,IronXL 的方法編寫速度更快、部署更容易、可移植性也更強。 你該選擇哪一種方法? 正確的選擇取決於您的部署環境和使用者需求。 僅在以下情況選擇C# 互通: 您的使用者需要能夠在 Excel 使用者介面中互動式操作的原生 Excel 資料透視表物件。 您的目標是一個封閉的 Windows 桌面環境,其中每台機器都保證安裝了 Office。 您維護的舊版.NET Framework程式碼已經依賴 Interop,目前重寫並不合理。 選擇IronXL 的情況: 你要部署到伺服器、容器或任何雲端環境(Azure、AWS、GCP) 您需要對 Linux、macOS 或基於 Docker 的建置提供跨平台支援。 您想要簡潔、易於維護的程式碼,而無需 COM 生命週期管理。 您面對的是.NET 5、6、7、8、9 或 10。 您希望避免在伺服器基礎架構上支付 Microsoft Office 授權費用 您需要快速批次處理多個工作簿,而無需逐一啟動 Excel 進程。 對於絕大多數現代.NET應用程式而言, IronXL是切實可行的選擇。它基於聚合的輸出能夠滿足所有實際的報表需求,並且還能帶來完全的可移植性。 您可以在IronXL文件和IronXL範例庫中探索更多功能,包括單元格格式設定、公式計算、資料驗證和圖表生成。 如何立即開始使用IronXL ? IronXL庫可在NuGet上獲取,只需不到一分鐘即可添加到任何.NET項目中: Install-Package IronXl.Excel dotnet add package IronXl.Excel Install-Package IronXl.Excel dotnet add package IronXl.Excel SHELL 安裝完成後,您可以使用簡潔、文件齊全的 API 載入現有工作簿或建立新工作簿,讀取和寫入儲存格值,套用公式,設定格式字串,並儲存為 XLSX。 它不依賴 COM,不依賴 Office,也不需要特殊的伺服器設定。 有關完整的 API 文檔,請參閱IronXL入門指南、 C# Excel 互通遷移指南和IronXL程式碼範例。 您也可以透過IronXL比較文章將IronXL與其他 Excel 庫進行比較。 免費試用許可證可讓您在正式提交之前,在自己的專案中測試所有功能。 當您準備部署到生產環境時,商業版IronXL授權將移除試用浮水印並包含優先支援。 首先體驗免費試用版,看看跨平台 Excel 自動化可以變得多麼簡單。 常見問題解答 如何在不使用 Interop 的情況下,透過 C# 在 Excel 中建立樞紐分析表? 您可透過 IronXl.Excel 在 Excel 中使用 C# 建立樞紐分析表,無需依賴 Interop。IronXL 提供強大的資料處理功能,且不受 Office 依賴項的限制。 使用 IronXL 生成樞紐分析表有哪些優勢? IronXL 讓開發人員無需依賴 Excel Interop 即可建立樞紐分析表,省去了安裝 Office 的需求,並降低了部署的複雜度。 IronXL 與 .NET 應用程式相容嗎? 是的,IronXL 與 .NET 應用程式完全相容,並提供易於使用的 API 來執行 Excel 操作,包括建立樞紐分析表。 IronXL 是否需要在伺服器上安裝 Excel? 不,IronXL 無需在伺服器上安裝 Excel。它可獨立運作,並能無縫整合至伺服器端應用程式中。 我可以使用 IronXL 在 Excel 中處理資料嗎? 是的,IronXL 提供強大的資料處理功能,讓開發人員能夠建立、修改及分析 Excel 資料,包括建立樞紐分析表。 開發人員為何會偏好 IronXL 而非傳統的 Interop 方法? 開發人員可能會偏好 IronXL 而非傳統的 Interop 方法,因為它不依賴 Office、部署更簡單,且具備全面的 Excel 操作功能。 IronXL 針對 Excel 資料處理提供了哪些功能? IronXL 提供讀寫 Excel 檔案、建立與編輯試算表,以及產生樞紐分析表等功能,且完全無需使用 Excel Interop。 Jordi Bardia 立即與工程團隊聊天 軟體工程師 Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担產品测测试,產品開發和研究的责任時,Jordi 為持续的產品改進增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 更新2026年3月1日 在ASP.NET C#中下載Excel文件:將數據匯出到XLSX,CSV和更多格式 使用C#和IronXL在ASP.NET Core中下載Excel文件。從MVC控制器中匯出數據到XLSX, CSV和XML,附有MemoryStream和File()返回。包括代碼範例。 閱讀更多 更新2026年3月1日 如何在Blazor中使用IronXL匯出Excel文件 學習如何在Blazor伺服器應用程式中使用IronXL将數據匯出到Excel。此指南涵蓋專案設置、服務設計、條件格式化、多表報告和錯誤處理,附有完整的C#代碼範例。 閱讀更多 更新2026年2月27日 如何在C#中而不是使用StreamReader來讀取Excel文件 了解StreamReader為何無法讀取Excel文件,並學習如何使用IronXL加載來自磁盤或內存流的XLSX和XLS工作簿。 閱讀更多 如何在.NET中使用IronXL寫入CSV檔案。如何使用IronXL在C#中將GridVi...
更新2026年3月1日 在ASP.NET C#中下載Excel文件:將數據匯出到XLSX,CSV和更多格式 使用C#和IronXL在ASP.NET Core中下載Excel文件。從MVC控制器中匯出數據到XLSX, CSV和XML,附有MemoryStream和File()返回。包括代碼範例。 閱讀更多
更新2026年3月1日 如何在Blazor中使用IronXL匯出Excel文件 學習如何在Blazor伺服器應用程式中使用IronXL将數據匯出到Excel。此指南涵蓋專案設置、服務設計、條件格式化、多表報告和錯誤處理,附有完整的C#代碼範例。 閱讀更多
更新2026年2月27日 如何在C#中而不是使用StreamReader來讀取Excel文件 了解StreamReader為何無法讀取Excel文件,並學習如何使用IronXL加載來自磁盤或內存流的XLSX和XLS工作簿。 閱讀更多