使用 IRONXL Blazor匯出到Excel:使用C#中的IronXL的完整指南 Jordi Bardia 發表日期:12月 18, 2025 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在雙子座打開 請向 Gemini 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 幾乎所有 Web 應用程式都需要將資料匯出到 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 Install-Package IronXL SHELL 接下來,建立一個用於檔案下載的 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) { 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) { throw new InvalidOperationException("Failed to generate sales report", ex); } } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 該服務展示了 IronXL 的關鍵功能,包括建立新的工作簿和工作表、新增格式化標題、使用從資料來源匯入的資料填充資料行、應用公式以及處理潛在錯誤。 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 = ""; var salesData = GetSalesData(); var fileBytes = ExcelService.GenerateSalesReport(salesData); 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."; } finally { isExporting = false; } } private List<SalesData> GetSalesData() { 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 } }; } } 該元件在匯出過程中提供使用者回饋,優雅地處理錯誤,並產生帶有時間戳記的檔案名稱。 DotNetStreamReference封裝器能夠有效率地將二進位資料串流傳輸到 JavaScript。 輸出 運行程式碼後,我們將看到頁面載入完畢,頁面上會顯示一個按鈕,用於處理匯出過程。 Blazor 匯出到 Excel:使用 IronXL 在 C# 中實作完整指南:圖 1 - Blazor 範例頁面 點擊按鈕後,資料將會儲存到新的 Excel 文件中,而匯出的檔案將會下載。 Blazor匯出到Excel:使用C#中的IronXL的完整指南:圖2 - 資料匯出到Excel文件 IronXL 可以為您的 Excel 匯出新增哪些進階功能? IronXL 支援進階 Excel 功能,可匯出專業外觀的檔案。 在庫存管理場景中,您可以新增條件格式和多個工作表: 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"); details["A1"].Value = "SKU"; details["B1"].Value = "Name"; details["C1"].Value = "Quantity"; var headerRange = details["A1:C1"]; headerRange.Style.Font.Bold = true; for (int i = 0; i < items.Count; i++) { var row = i + 2; var item = items[i]; details[$"A{row}"].Value = item.SKU; details[$"B{row}"].Value = item.Name; details[$"C{row}"].Value = item.Quantity; 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"); details["A1"].Value = "SKU"; details["B1"].Value = "Name"; details["C1"].Value = "Quantity"; var headerRange = details["A1:C1"]; headerRange.Style.Font.Bold = true; for (int i = 0; i < items.Count; i++) { var row = i + 2; var item = items[i]; details[$"A{row}"].Value = item.SKU; details[$"B{row}"].Value = item.Name; details[$"C{row}"].Value = item.Quantity; 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 文檔,請造訪我們的綜合參考指南。 Blazor匯出到Excel:使用C#中的IronXL的完整指南:圖3 - 進階功能範例輸出 結論 IronXL 將 Blazor Server 應用程式中 Excel 檔案的產生從一項複雜的挑戰變成了一項簡單的任務。 它直覺的 API 無需安裝 Microsoft Office,即可存取進階 Excel 功能。 從簡單的數據匯出到包含公式和格式的複雜多工作表報告,IronXL 都能以卓越的效能和可靠性輕鬆應對。 準備好利用專業的 Excel 匯出功能來增強您的 Blazor 應用程式了嗎? 立即開始 IronXL免費試用,或了解我們的生產部署授權選項。 Jordi Bardia 立即與工程團隊聊天 軟體工程師 Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 發表日期 12月 19, 2025 如何使用 C# Interop 與 IronXL 在 Excel 中建立資料透視表 在無需 Office 依賴的情況下在 C# 中構建 Excel 樞紐分析表。IronXL 對無需 Excel Interop 的樞紐型報告創建提供了強大的數據操作功能。 閱讀更多 發表日期 12月 18, 2025 使用 IronXL 將 C# DataGridView 匯出到 Excel,並帶有列標題 學習如何在 C# 教程中使用 IronXL library 將 DataGridView 資料匯出為 Excel 同時保留列標題。分步教學。 閱讀更多 發表日期 12月 18, 2025 如何在 C# 中使用 IronXL 創建 Excel 生成報告 使用 IronXL 在 C# 中創建 Excel 報告生成。學習構建擁有格式化公式和數據庫集成的專業報告。 閱讀更多 使用 IronXL 讀取帶有逗號的 CSV 數據如何使用 C# Interop 與 IronXL ...
發表日期 12月 19, 2025 如何使用 C# Interop 與 IronXL 在 Excel 中建立資料透視表 在無需 Office 依賴的情況下在 C# 中構建 Excel 樞紐分析表。IronXL 對無需 Excel Interop 的樞紐型報告創建提供了強大的數據操作功能。 閱讀更多
發表日期 12月 18, 2025 使用 IronXL 將 C# DataGridView 匯出到 Excel,並帶有列標題 學習如何在 C# 教程中使用 IronXL library 將 DataGridView 資料匯出為 Excel 同時保留列標題。分步教學。 閱讀更多
發表日期 12月 18, 2025 如何在 C# 中使用 IronXL 創建 Excel 生成報告 使用 IronXL 在 C# 中創建 Excel 報告生成。學習構建擁有格式化公式和數據庫集成的專業報告。 閱讀更多