使用 IRONXL 如何在 C# 中建立 Excel 樞紐分析表? Jordi Bardia 更新:2026年1月20日 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 LLM副本 LLM副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 在 C# 中建立 Excel 資料透視表既可以使用 Office Interop(需要安裝 Microsoft Office),也可以使用IronXL等獨立運行的現代庫,其中IronXL提供了更優越的部署靈活性和對 DevOps 環境的跨平台支援。 以程式設計方式產生資料透視表需要使用 C# 互通 及其 Office 依賴項,或使用像IronXL這樣可以獨立工作的現代函式庫。 本教學示範了這兩種方法,重點介紹了為什麼開發人員越來越多地選擇IronXL而不是傳統的互通方法,尤其是在部署到Docker 容器或Azure和AWS等雲端環境時。 在本文中,我們將學習如何編輯、建立、設計和計算透視表和分組,並進行自動分析和錯誤處理——所有這些都是為了保持 DevOps 工程師所要求的部署簡易性。 什麼是Excel資料透視表? 資料透視表是Excel最強大的工具之一。 它是一種匯總大型資料集的簡單方法,使其在.NET應用程式的資料分析中具有不可估量的價值。 資料透視表可以幫助您輕鬆顯示、理解和分析數值資料。 它們不僅在 Excel 中可用,而且在其他程式中也可用,例如 Google Sheets、Apple Numbers 和CSV Exports 。 它們提供了一種查看數據概覽的解決方案——充當數據控制台,讓人們能夠以有意義的方式查看自己的資訊。 對於容器化應用程序,以程式設計方式建立資料透視表可以消除在 Docker 映像中安裝 Excel 的需要,從而顯著減少容器大小和部署複雜性。 這種方法與現代 CI/CD 管線和容器部署策略完美契合。 讓我們先來探討一下建立資料透視表的錯誤方法,然後再學習 C# 中的正確方法: 如何使用 C# 互通 在 Excel 表格中建立資料透視表? C# Excel Interop 透過 COM 自動化提供對 Excel 資料透視表功能的直接存取。 以下是許多開發人員在尋找用於在 C# 中產生資料透視表的工具時遇到的傳統方法: 為什麼這種方法在.NET中被認為已經過時? 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; // Row area and column area // 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); // fields by field // 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; // Row area and column area // 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); // fields by field // 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 資料透視表,其中產品為行,地區為列,銷售額匯總在資料區中。 雖然這種方法可行,但需要安裝 Microsoft Office 並進行仔細的 COM 物件管理。 微軟的文檔解釋了為什麼這種方法已經過時。 從 DevOps 的角度來看,這種方法尤其成問題,因為它無法有效地容器化——你無法在Linux Docker 容器中安裝 Microsoft Office,也無法部署到無伺服器環境中。 C# 互通會帶來哪些問題? 互通方法存在一些重大挑戰,使其不適用於現代 DevOps 實踐和雲端原生部署。 不幸的是,Stack Overflow 和其他程式設計網站仍然推薦它,因為它們的思想還停留在 2000 年代初期的討論貼文中。 部署相依性:需要在執行原始碼的每台機器上安裝 Microsoft Office,包括生產伺服器。 這會增加許可成本和部署複雜性。 記憶體管理:必須使用 Marshal.ReleaseComObject() 明確釋放 COM 物件。 即使缺少一個物件也會導致 Excel 進程在記憶體中掛起, Stack Overflow 上對此有大量記錄。 考慮樞軸緩存。 平台限制:此解決方案僅適用於已安裝 Office 的 Windows 系統。 它可能運行速度極慢,並導致記憶體洩漏。 不支援Linux 、 macOS 、Docker 容器或Azure Functions等雲端平台。 這嚴重限制了部署選項,並阻礙了現代容器編排平台的使用。 效能問題:啟動 Excel 應用程式執行個體速度慢且資源消耗大,尤其是伺服器端處理。 版本相容性:不同 Office 版本可能具有不同的 COM 接口,從而導致跨環境的相容性問題。 IronXL如何在不使用互通的情況下以程式設計方式建立資料透視表? IronXL使用託管程式碼建立資料透視表,沒有 COM 依賴項,其建立方式有所不同。 雖然它不能建立原生的 Excel 資料透視表,但它提供了強大的聚合功能,非常適合容器化部署和雲端原生架構。 該庫的效能優化包括速度提升 40 倍,記憶體使用量從 19.5 GB 減少到 1 GB 以下,使其成為資源受限的容器環境的理想選擇。 這種方法對於 XLSX 或 XLS 檔案來說有何現代之處? using IronXL; using System.Linq; using System.Data; // Keep this namespace using static System.Data.DataTableExtensions; // Use 'using static' for DataTableExtensions class Program { static void Main(string[] args) { // Load Excel file - no Office required WorkBook workbook = WorkBook.Load("SalesData.xlsx"); WorkSheet dataSheet = workbook.WorkSheets[0]; // Convert to DataTable for powerful manipulation var dataTable = dataSheet.ToDataTable(true); // true = use first row as column headers // Create pivot-style aggregation using LINQ var pivotData = dataTable.AsEnumerable() .GroupBy(row => new { Product = row["Product"].ToString(), Region = row["Region"].ToString() }) //range .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 pivot report worksheet WorkSheet pivotSheet = workbook.CreateWorkSheet("PivotReport"); // Build cross-tabulation structure var products = pivotData.Select(p => p.Product).Distinct().OrderBy(p => p); var regions = pivotData.Select(p => p.Region).Distinct().OrderBy(r => r); // Create headers pivotSheet["A1"].Value = "Product/Region"; int col = 2; foreach (var region in regions) { pivotSheet[$"{(char)('A' + col - 1)}1"].Value = region; // string col++; } // Populate pivot data int row = 2; foreach (var product in products) { pivotSheet[$"A{row}"].Value = product; col = 2; foreach (var region in regions) { var sales = pivotData .Where(p => p.Product == product && p.Region == region) .Select(p => p.TotalSales) .FirstOrDefault(); pivotSheet[$"{(char)('A' + col - 1)}{row}"].Value = sales; col++; } row++; } // Add totals using Excel formulas pivotSheet[$"A{row}"].Value = "Total"; // grand totals for (int c = 2; c <= regions.Count() + 1; c++) { pivotSheet[$"{(char)('A' + c - 1)}{row}"].Formula = $"=SUM({(char)('A' + c - 1)}2:{(char)('A' + c - 1)}{row - 1})"; } // Proceeding to apply formatting var dataRange = pivotSheet[$"B2:{(char)('A' + regions.Count())}{row}"]; dataRange.FormatString = "$#,##0.00"; workbook.SaveAs("PivotReport.xlsx"); } } using IronXL; using System.Linq; using System.Data; // Keep this namespace using static System.Data.DataTableExtensions; // Use 'using static' for DataTableExtensions class Program { static void Main(string[] args) { // Load Excel file - no Office required WorkBook workbook = WorkBook.Load("SalesData.xlsx"); WorkSheet dataSheet = workbook.WorkSheets[0]; // Convert to DataTable for powerful manipulation var dataTable = dataSheet.ToDataTable(true); // true = use first row as column headers // Create pivot-style aggregation using LINQ var pivotData = dataTable.AsEnumerable() .GroupBy(row => new { Product = row["Product"].ToString(), Region = row["Region"].ToString() }) //range .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 pivot report worksheet WorkSheet pivotSheet = workbook.CreateWorkSheet("PivotReport"); // Build cross-tabulation structure var products = pivotData.Select(p => p.Product).Distinct().OrderBy(p => p); var regions = pivotData.Select(p => p.Region).Distinct().OrderBy(r => r); // Create headers pivotSheet["A1"].Value = "Product/Region"; int col = 2; foreach (var region in regions) { pivotSheet[$"{(char)('A' + col - 1)}1"].Value = region; // string col++; } // Populate pivot data int row = 2; foreach (var product in products) { pivotSheet[$"A{row}"].Value = product; col = 2; foreach (var region in regions) { var sales = pivotData .Where(p => p.Product == product && p.Region == region) .Select(p => p.TotalSales) .FirstOrDefault(); pivotSheet[$"{(char)('A' + col - 1)}{row}"].Value = sales; col++; } row++; } // Add totals using Excel formulas pivotSheet[$"A{row}"].Value = "Total"; // grand totals for (int c = 2; c <= regions.Count() + 1; c++) { pivotSheet[$"{(char)('A' + c - 1)}{row}"].Formula = $"=SUM({(char)('A' + c - 1)}2:{(char)('A' + c - 1)}{row - 1})"; } // Proceeding to apply formatting var dataRange = pivotSheet[$"B2:{(char)('A' + regions.Count())}{row}"]; dataRange.FormatString = "$#,##0.00"; workbook.SaveAs("PivotReport.xlsx"); } } $vbLabelText $csharpLabel 這就是以容器友善方式建立資料透視表的方法。 這種方法可以在 Docker 容器、Kubernetes pod 和無伺服器函數中無縫運行,無需任何外部相依性。 整個應用程式可以打包成一個輕量級容器鏡像,在任何支援.NET 的環境中運行。 資料透視表的輸出結果是什麼樣子的? 輸出結果顯示了IronXL如何將原始銷售資料轉換為結構化的透視報告,而無需安裝 Excel,這使其非常適合 CI/CD 管道中的自動化報告。 如何使用IronXL公式建立動態匯總? 對於需要類似資料透視表刷新功能的動態更新場景, IronXL可以利用Excel 內建的公式。 這種方法更可取——您的數據將以更現代、更優雅的方式處理。 該代碼易於理解和設置,無需聯繫技術支援或閱讀手冊。 這種方法在容器化環境中尤其有價值,因為在容器化環境中,你需要基於公式的計算並自動更新。 如何使基於公式的摘要自動更新? // Load the workbook WorkBook workbook = WorkBook.Load(inputPath); // Rename the first worksheet so formulas reference correctly WorkSheet dataSheet = workbook.WorkSheets[0]; dataSheet.Name = "DataSheet"; // Convert worksheet to DataTable DataTable dataTable = dataSheet.ToDataTable(true); // Create new summary worksheet WorkSheet summarySheet = workbook.CreateWorkSheet("DynamicSummary"); // Get unique product-region combinations var uniqueCombos = dataTable.AsEnumerable() .Select(row => new { Product = row["Product"].ToString(), Region = row["Region"].ToString() }) .Distinct() .OrderBy(x => x.Product) .ThenBy(x => x.Region); // Add header row summarySheet["A1"].Value = "Product"; summarySheet["B1"].Value = "Region"; summarySheet["C1"].Value = "Total Sales"; summarySheet["D1"].Value = "Count"; // Populate rows with formulas int rowIndex = 2; foreach (var combo in uniqueCombos) { summarySheet[$"A{rowIndex}"].Value = combo.Product; summarySheet[$"B{rowIndex}"].Value = combo.Region; // Adjust column references if your Sales column is C (not D) 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}\")"; rowIndex++; } // Optional: add total row summarySheet[$"A{rowIndex}"].Value = "Total"; summarySheet[$"C{rowIndex}"].Formula = $"=SUM(C2:C{rowIndex - 1})"; summarySheet[$"D{rowIndex}"].Formula = $"=SUM(D2:D{rowIndex - 1})"; // Save output file workbook.SaveAs(outputPath); //filename // Load the workbook WorkBook workbook = WorkBook.Load(inputPath); // Rename the first worksheet so formulas reference correctly WorkSheet dataSheet = workbook.WorkSheets[0]; dataSheet.Name = "DataSheet"; // Convert worksheet to DataTable DataTable dataTable = dataSheet.ToDataTable(true); // Create new summary worksheet WorkSheet summarySheet = workbook.CreateWorkSheet("DynamicSummary"); // Get unique product-region combinations var uniqueCombos = dataTable.AsEnumerable() .Select(row => new { Product = row["Product"].ToString(), Region = row["Region"].ToString() }) .Distinct() .OrderBy(x => x.Product) .ThenBy(x => x.Region); // Add header row summarySheet["A1"].Value = "Product"; summarySheet["B1"].Value = "Region"; summarySheet["C1"].Value = "Total Sales"; summarySheet["D1"].Value = "Count"; // Populate rows with formulas int rowIndex = 2; foreach (var combo in uniqueCombos) { summarySheet[$"A{rowIndex}"].Value = combo.Product; summarySheet[$"B{rowIndex}"].Value = combo.Region; // Adjust column references if your Sales column is C (not D) 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}\")"; rowIndex++; } // Optional: add total row summarySheet[$"A{rowIndex}"].Value = "Total"; summarySheet[$"C{rowIndex}"].Formula = $"=SUM(C2:C{rowIndex - 1})"; summarySheet[$"D{rowIndex}"].Formula = $"=SUM(D2:D{rowIndex - 1})"; // Save output file workbook.SaveAs(outputPath); //filename $vbLabelText $csharpLabel 這些公式與來源資料保持即時連接,當資料表變更時自動更新—類似於資料透視表刷新行為,但沒有互通依賴性。 這種方法非常適合需要產生動態報告而無需外部相依性的容器化微服務。 動態摘要能帶來哪些結果? 如果我們將這段程式碼應用到上一個範例中的範例 Excel 文件,我們將得到以下輸出: 動態匯總方法提供即時計算,當來源資料變更時會自動更新,因此非常適合容器化環境中的自動化報告管道。 這樣就無需定期刷新資料透視表,並且可以在.NET MAUI和Blazor應用程式中無縫運行。 如何比較 C# 互通 和IronXL在資料透視表方面的表現? 方面 C# 互通 IronXL 辦公室要求 是的 - 完全安裝 否 - 獨立庫 平台支援 僅限 Windows 系統 Windows、Linux、macOS、Docker 記憶體管理 需要手動清理 COM 對象 自動.NET垃圾回收 部署 複雜 - 辦公室許可 簡單 - 單一 DLL 表現 Excel進程啟動緩慢 快速記憶體計算 雲端相容 否 - Azure 限制 是的 - 支援 Azure Functions 原生透視表 是的 無 - 聚合替代方案 發展速度 速度慢 - COM 複雜性 快速直覺的 API 容器支援 不——無法將辦公室容器化。 是的-已支援 Docker。 健康檢查 困難 - COM 進程監控 簡易型 - 標準.NET監控 從 DevOps 的角度來看,IronXL 的架構為現代部署場景提供了顯著的優勢。 該程式庫能夠在沒有外部相依性的情況下在容器中運行,這意味著您可以建立輕量級的 Docker 映像,從而快速部署並高效擴展。 健康檢查可以使用標準的.NET模式來實現,該庫的安全特性包括 DigiCert 認證和無 COM 接口,從而減少了攻擊途徑。 你該選擇哪一種方法? 何時應該使用 C# 互通? 選擇C# 互通的條件: 必須使用 Excel 原生資料透視表對象 完全在 Windows 系統上運作,所有 Office 服務均已安裝。 僅部署到您管理的桌面系統 現有遺留程式碼依賴互通性 使用舊版.NET Framework 您目前沒有容器化或遷移到雲端的計劃 IronXL在什麼情況下效果更佳? 選擇IronXL 的情況: 部署到伺服器或雲端環境(Azure、AWS) 建立可在容器中運行的跨平台應用程式 需要更高的效能,速度提升 40 倍 避免 Office 授權費用和部署複雜性 需要更簡單的程式碼,並具備自動許可證金鑰管理功能 支援 Mac、iOS、Android 和 Linux 系統 熟悉現代.NET Core和.NET 5-10 的開發。 以程式設計方式配置資料透視表字段 建構可導出為各種格式的微服務 在 CI/CD 管線中實現自動化報告 為容器編排建立健康檢查端點 *不同電子表格格式之間的轉換 我們在使用 C# 建立資料透視表方面學到了什麼? 雖然 C# Excel Interop 可以建立原生透視表,但其部署限制和複雜性使其對於現代應用程式來說越來越不切實際,尤其是在容器化環境中。 IronXL透過資料聚合和基於公式的匯總提供強大的替代方案,消除了對 Office 的依賴,同時保持了分析能力。 對於正在尋找無需互通即可開發透視表的替代方案的開發人員和工程師來說, IronXL提供了一條更優的途徑,避免了 COM 的複雜性,可在所有平台上運行,並簡化部署。 雖然沒有原生透視對象,但更大的靈活性、更好的性能以及無需 Office 許可的要求彌補了這一不足。 對於 DevOps 團隊而言,最重要的是IronXL能夠實現真正的基礎設施即程式碼,包括容器化部署、自動擴展以及與現代 CI/CD 管道的無縫整合。 該程式庫的綜合功能集包括條件格式設定、單元格樣式設定、公式支援和資料驗證,使其成為現代.NET應用程式中 Excel 自動化的完整解決方案。 無論您是處理 CSV 檔案、管理工作表或實施複雜的資料轉換, IronXL都提供了一個一致且易於部署的 API。 立即開始在您的項目中使用 IronXL 並免費試用。 第一步: 免費啟動 準備好升級您的 Excel 自動化流程,並使用現代 C# 建立資料透視表程式碼了嗎? 透過NuGet套件管理器,您可以在幾秒鐘內將IronXL整合到您的 C# 應用程式中。 試用免費試用版,消除生產應用程式中的互通依賴關係,簡化容器部署。 常見問題解答 Excel 中的樞紐分析表是什麼? Excel 中的樞紐分析表是一個用於總結、分析、探索和展示數據的強大工具。它允許用戶將列轉換為行,反之亦然,從而實現動態數據分析。 為什麼使用 IronXL 在 C# 中創建 Excel 樞紐分析表? IronXL 允許開發者在 C# 中創建 Excel 樞紐分析表而不依賴 Office Interop,消除了需要 Excel 安裝和減少了依賴性,使其成為現代和高效的選擇。 IronXL 在 Excel 操作中與 C# Interop 相比如何? IronXL 提供了一種比 C# Interop 更簡化和獨立的方法,C# Interop 需要安裝 Office。 IronXL 無需 Interop 的複雜性即可簡化樞紐分析表和其他 Excel 操作的創建。 我可以在沒有安裝 Excel 的情況下生成樞紐分析表嗎? 可以,使用 IronXL,你可以在 C# 應用中生成樞紐分析表,無需安裝 Excel,因為它獨立於 Microsoft Office 運行。 IronXL 適合處理大型數據集嗎? IronXL 被設計為能有效地處理大型數據集,非常適合需要強大數據操作和樞紐分析表生成的應用。 與傳統方法相比,使用 IronXL 有什麼優勢? IronXL 提供了一種現代且無依賴的替代方案,支持複雜數據操作而無需安裝 Excel,易於使用,靈活性高。 我需要學習 VBA 才能使用 IronXL 進行樞紐分析表嗎? 不需要,IronXL 允許開發者直接在 C# 中創建和管理樞紐分析表,無需學習 VBA 或其他 Excel 特定的編程語言。 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工作簿。 閱讀更多 如何在 VB.NET 中將 `DataGridView` 匯出至 Excel如何使用 IronXL 在 C# 中將...
更新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工作簿。 閱讀更多