使用 IRONXL 如何在 Blazor 中使用 IronXL 導出到 Excel Jordi Bardia 發表日期:10月 19, 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 幾乎每個網絡應用都需要將數據導出到 Excel,無論是用於生成報告、庫存清單還是客戶發票。 在 Blazor Server 應用中,可靠地完成這項工作而無需 Microsoft Office 可能具有挑戰性。 這就是 IronXL 發揮作用的地方。 它允許您直接從服務器創建、格式化和下載 Excel 文件,無需安裝 Office,並與 Blazor 無縫集成。 在本指南中,您將看到為應用添加專業的 Excel 導出功能是多麼簡單。讓我們開始吧。 開始使用 IronXL 將數據導出到 Excel 在 Blazor Server 應用中設置 IronXL 需要的配置極少。 首先在 Visual Studio 2022 或更高版本中創建一個新的 Blazor Server 項目,目標為 .NET 6 或更高。 通過 NuGet 包管理器控制台安裝 IronXL(請參閱我們的完整安裝指南了解替代方法): Install-Package IronXL.Excel 接下來,為文件下載創建一個 JavaScript 輔助函數。 在您的 wwwroot 文件夾中,添加一個名為 excelExport.js 的新的 JavaScript 文件: window.downloadFileFromStream = async (fileName, contentStreamReference) => { const arrayBuffer = await contentStreamReference.arrayBuffer(); const blob = new Blob([arrayBuffer]); const url = URL.createObjectURL(blob); const anchorElement = document.createElement('a'); anchorElement.href = url; anchorElement.download = fileName ?? 'export.xlsx'; anchorElement.click(); anchorElement.remove(); URL.revokeObjectURL(url); } window.downloadFileFromStream = async (fileName, contentStreamReference) => { const arrayBuffer = await contentStreamReference.arrayBuffer(); const blob = new Blob([arrayBuffer]); const url = URL.createObjectURL(blob); const anchorElement = document.createElement('a'); anchorElement.href = url; anchorElement.download = fileName ?? 'export.xlsx'; anchorElement.click(); anchorElement.remove(); URL.revokeObjectURL(url); } JAVASCRIPT 在您的 _Host.cshtml 文件中包含此腳本: <script src="~/excelExport.js"></script> <script src="~/excelExport.js"></script> HTML 此 JavaScript 函數處理瀏覽器端的下載機制,將您的 Blazor Server 應用的字節流轉換為可下載文件。該函數創建一個臨時的 blob URL,觸發下載並清理資源以防止內存泄漏。 如何使用 IronXL 將數據源導出為 Excel 文件? 創建一個 Excel 導出服務來處理您的業務邏輯。 此服務封裝了 IronXL 的功能,並為 Blazor Excel 導出實現中的不同導出場景提供可重用的方法: using IronXL; using System.IO; using ExportExcel.Models; public class ExcelExportService { public byte[] GenerateSalesReport(List<SalesData> salesData) { try { var workbook = WorkBook.Create(ExcelFileFormat.XLSX); workbook.Metadata.Author = "Sales Department"; var worksheet = workbook.CreateWorkSheet("Monthly Sales"); worksheet["A1"].Value = "Date"; worksheet["B1"].Value = "Product"; worksheet["C1"].Value = "Quantity"; worksheet["D1"].Value = "Revenue"; worksheet["E1"].Value = "Profit Margin"; var headerRange = worksheet["A1:E1"]; headerRange.Style.Font.Bold = true; headerRange.Style.BackgroundColor = "#4472C4"; headerRange.Style.Font.Color = "#FFFFFF"; int row = 2; foreach (var sale in salesData) { worksheet[$"A{row}"].Value = sale.Date.ToString("yyyy-MM-dd"); worksheet[$"B{row}"].Value = sale.Product ?? "Unknown"; worksheet[$"C{row}"].Value = sale.Quantity; worksheet[$"D{row}"].Value = sale.Revenue; worksheet[$"E{row}"].Value = $"=D{row}*0.15"; row++; } worksheet.AutoSizeColumn(0, true); using var ms = workbook.ToStream(); return ms.ToArray(); } catch (Exception ex) { // If the program fails to return file throw new InvalidOperationException("Failed to generate sales report", ex); } } } using IronXL; using System.IO; using ExportExcel.Models; public class ExcelExportService { public byte[] GenerateSalesReport(List<SalesData> salesData) { try { var workbook = WorkBook.Create(ExcelFileFormat.XLSX); workbook.Metadata.Author = "Sales Department"; var worksheet = workbook.CreateWorkSheet("Monthly Sales"); worksheet["A1"].Value = "Date"; worksheet["B1"].Value = "Product"; worksheet["C1"].Value = "Quantity"; worksheet["D1"].Value = "Revenue"; worksheet["E1"].Value = "Profit Margin"; var headerRange = worksheet["A1:E1"]; headerRange.Style.Font.Bold = true; headerRange.Style.BackgroundColor = "#4472C4"; headerRange.Style.Font.Color = "#FFFFFF"; int row = 2; foreach (var sale in salesData) { worksheet[$"A{row}"].Value = sale.Date.ToString("yyyy-MM-dd"); worksheet[$"B{row}"].Value = sale.Product ?? "Unknown"; worksheet[$"C{row}"].Value = sale.Quantity; worksheet[$"D{row}"].Value = sale.Revenue; worksheet[$"E{row}"].Value = $"=D{row}*0.15"; row++; } worksheet.AutoSizeColumn(0, true); using var ms = workbook.ToStream(); return ms.ToArray(); } catch (Exception ex) { // If the program fails to return file throw new InvalidOperationException("Failed to generate sales report", ex); } } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel This service demonstrates key IronXL features, including creating new workbooks and worksheets, adding formatted headers, populating data rows with imported data from your data source, applying formulas, and handling potential errors. AutoSizeColumn 方法確保列顯示正確,不受內容長度影響。 想要了解更多高級格式選項,請查看我們的 單元格樣式指南。 如何在Blazor中實現文件下載? 創建一個使用導出服務並處理用戶交互的Razor組件: @page "/excel-export" @using ExportExcel.Models @inject ExcelExportService ExcelService @inject IJSRuntime JS <h3>Excel Export Dashboard</h3> <div class="export-section"> <button class="btn btn-primary" @onclick="ExportSalesReport" disabled="@isExporting"> @if (isExporting) { <span>Generating...</span> } else { <span>Export Sales Report</span> } </button> @if (!string.IsNullOrEmpty(errorMessage)) { <div class="alert alert-danger mt-2">@errorMessage</div> } </div> @code { private bool isExporting = false; private string errorMessage = ""; private async Task ExportSalesReport() { try { isExporting = true; errorMessage = ""; // Generate sample data - replace with actual data source var salesData = GetSalesData(); // Generate Excel file var fileBytes = ExcelService.GenerateSalesReport(salesData); // Trigger download using a memory stream to handle the file using var stream = new MemoryStream(fileBytes); using var streamRef = new DotNetStreamReference(stream); await JS.InvokeVoidAsync("downloadFileFromStream", $"SalesReport_{DateTime.Now:yyyyMMdd}.xlsx", streamRef); } catch (Exception ex) { errorMessage = "Export failed. Please try again."; // Log exception details for debugging } finally { isExporting = false; } } private List<SalesData> GetSalesData() { // Return your actual data here return new List<SalesData> { new() { Date = DateTime.Now, Product = "Widget A", Quantity = 100, Revenue = 5000 }, new() { Date = DateTime.Now.AddDays(-1), Product = "Widget B", Quantity = 75, Revenue = 3750 } }; } } @page "/excel-export" @using ExportExcel.Models @inject ExcelExportService ExcelService @inject IJSRuntime JS <h3>Excel Export Dashboard</h3> <div class="export-section"> <button class="btn btn-primary" @onclick="ExportSalesReport" disabled="@isExporting"> @if (isExporting) { <span>Generating...</span> } else { <span>Export Sales Report</span> } </button> @if (!string.IsNullOrEmpty(errorMessage)) { <div class="alert alert-danger mt-2">@errorMessage</div> } </div> @code { private bool isExporting = false; private string errorMessage = ""; private async Task ExportSalesReport() { try { isExporting = true; errorMessage = ""; // Generate sample data - replace with actual data source var salesData = GetSalesData(); // Generate Excel file var fileBytes = ExcelService.GenerateSalesReport(salesData); // Trigger download using a memory stream to handle the file using var stream = new MemoryStream(fileBytes); using var streamRef = new DotNetStreamReference(stream); await JS.InvokeVoidAsync("downloadFileFromStream", $"SalesReport_{DateTime.Now:yyyyMMdd}.xlsx", streamRef); } catch (Exception ex) { errorMessage = "Export failed. Please try again."; // Log exception details for debugging } finally { isExporting = false; } } private List<SalesData> GetSalesData() { // Return your actual data here return new List<SalesData> { new() { Date = DateTime.Now, Product = "Widget A", Quantity = 100, Revenue = 5000 }, new() { Date = DateTime.Now.AddDays(-1), Product = "Widget B", Quantity = 75, Revenue = 3750 } }; } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 此組件在導出期間提供用戶反饋,優雅地處理錯誤,並生成帶有時間戳的文件名。 DotNetStreamReference 包裝器允許將二進制數據高效地流式傳輸到 JavaScript。 輸出 當我們運行代碼時,我們將看到一個頁面,其中顯示可用於處理導出過程的按鈕。 當我們單擊該按鈕時,數據將被保存到一個新的 Excel 文檔中,並下載導出的文件。 IronXL 可以為您的 Excel 導出添加哪些高级功能? IronXL 支持複雜的 Excel 功能以提供專業水準的導出。 For an inventory management scenario, you might add conditional formatting and multiple worksheets: using IronXL; using ExportExcel.Models; using System.IO; namespace ExportExcel.Services { public class InventoryExportService { public byte[] GenerateInventoryReport(List<InventoryItem> items) { var workbook = WorkBook.Create(); var details = workbook.CreateWorkSheet("Inventory Details"); // Add headers details["A1"].Value = "SKU"; details["B1"].Value = "Name"; details["C1"].Value = "Quantity"; // Apply bold font for headers var headerRange = details["A1:C1"]; headerRange.Style.Font.Bold = true; for (int i = 0; i < items.Count; i++) { var row = i + 2; // start from row 2 var item = items[i]; details[$"A{row}"].Value = item.SKU; details[$"B{row}"].Value = item.Name; details[$"C{row}"].Value = item.Quantity; // Highlight low stock items if (item.Quantity < item.ReorderLevel) { details[$"C{row}"].Style.BackgroundColor = "#FFB6B6"; } } using var stream = workbook.ToStream(); return stream.ToArray(); } } } using IronXL; using ExportExcel.Models; using System.IO; namespace ExportExcel.Services { public class InventoryExportService { public byte[] GenerateInventoryReport(List<InventoryItem> items) { var workbook = WorkBook.Create(); var details = workbook.CreateWorkSheet("Inventory Details"); // Add headers details["A1"].Value = "SKU"; details["B1"].Value = "Name"; details["C1"].Value = "Quantity"; // Apply bold font for headers var headerRange = details["A1:C1"]; headerRange.Style.Font.Bold = true; for (int i = 0; i < items.Count; i++) { var row = i + 2; // start from row 2 var item = items[i]; details[$"A{row}"].Value = item.SKU; details[$"B{row}"].Value = item.Name; details[$"C{row}"].Value = item.Quantity; // Highlight low stock items if (item.Quantity < item.ReorderLevel) { details[$"C{row}"].Style.BackgroundColor = "#FFB6B6"; } } using var stream = workbook.ToStream(); return stream.ToArray(); } } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel IronXL 可輕鬆處理多個工作表,根據業務規則應用條件格式,並在需要時支持高級 Excel 功能,例如樞紐分析表和圖表。 如需詳細的 API 文檔,請訪問我們的 全面參考指南。 結論 IronXL 將在 Blazor Server 應用中生成 Excel 文件的複雜挑戰轉變為簡單的任務。 其直觀的 API 消除對 Microsoft Office 安裝的需求,同時提供訪問高階的 Excel 功能。 從簡單的數據導出到含公式和格式的複雜多工作表報告,IronXL 以出色的性能和可靠性處理一切。 準備好增強您的 Blazor 應用,使其具有專業的 Excel 導出功能了嗎? 開始您的免費試用用於生產部署。 常見問題解答 如何在 Blazor Server 應用程式中匯出 Excel 檔案? 您可以使用 IronXL 在 Blazor Server 應用程式中匯出 Excel 檔案。IronXL 允許您直接從伺服器創建、格式化和下載 Excel 檔案,而無需 Microsoft Office。 我需要 Microsoft Office 來處理 Blazor 中的 Excel 檔案嗎? 不需要,IronXL 使您可以在不需要 Microsoft Office 的情況下處理 Excel 檔案。它提供了在您的 Blazor 應用程式中直接創建和操作 Excel 檔案的功能。 在 Blazor 中使用 IronXL 進行 Excel 匯出的好處是什麼? IronXL 與 Blazor 無縫整合,讓您輕鬆地創建、格式化和匯出 Excel 文件。它簡化了過程,消除了對 Microsoft Office 的需求,並支持各種 Excel 格式。 IronXL 可以與其他 Blazor 元件整合嗎? 可以,IronXL 與 Blazor 元件無縫整合,使您能夠輕鬆地為應用程式添加 Excel 匯出功能。 是否可以使用 IronXL 在 Blazor 中格式化 Excel 文件? 可以,IronXL 提供了全面的功能來格式化 Excel 文件,包括樣式單元格、調整列寬和設置複雜公式,全部在您的 Blazor Server 應用程序內完成。 在 Blazor 中匯出到 Excel 時,如何處理大型資料集? IronXL 設計用於有效處理大型數據集,確保在 Blazor Server 環境中匯出大量數據到 Excel 文件時的流暢性能。 IronXL 支持哪些 Excel 文件格式? IronXL 支援多種 Excel 文件格式,包括 XLS、XLSX 和 CSV,提供了靈活性來匯出和處理 Blazor 應用程式中的 Excel 數據。 IronXL 可以用於在 Blazor 中生成報告嗎? 絕對可以,IronXL 非常適合用於在 Blazor 應用程式中生成詳細報告。它提供了強大的功能來編譯、格式化和匯出數據到專業的 Excel 報告中。 IronXL 如何在匯出 Excel 文件時確保數據完整性? IronXL 通過在匯出過程中準確保留數據的結構和格式來確保數據完整性,這使其成為 Blazor 應用程式中可靠的解決方案。 是否有方法可以使用 IronXL 自動化 Blazor Server 應用程式的 Excel 文件創建? 是的,IronXL 可以用於自動化 Blazor Server 應用程式中的 Excel 文件創建和匯出,讓您優化工作流程,提高效率。 Jordi Bardia 立即與工程團隊聊天 軟體工程師 Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 發表日期 10月 27, 2025 如何在 C# 中創建 Excel 樞紐分析表 學習使用 C# Interop 和 IronXL 創建 Excel 中的樞紐分析表,這是一個清晰的分步指南。 閱讀更多 發表日期 10月 27, 2025 如何在 C# 中將 DataGridView 匯出為 Excel 並保留列標題 學習如何在 C# 教程中使用 IronXL library 將 DataGridView 資料匯出為 Excel 同時保留列標題。分步教學。 閱讀更多 發表日期 10月 27, 2025 如何使用 IronXL 的 .NET Core CSV 讀取器 學習使用 IronXL 作為 .NET Core CSV 讀取器的有效方法,提供實用範例。 閱讀更多 如何在 C# 中創建 Excel 文件:Interop vs IronXL如何在 C# 中使用 IronXL 開...
發表日期 10月 27, 2025 如何在 C# 中將 DataGridView 匯出為 Excel 並保留列標題 學習如何在 C# 教程中使用 IronXL library 將 DataGridView 資料匯出為 Excel 同時保留列標題。分步教學。 閱讀更多