使用 IRONXL Blazor匯出到Excel:使用C#中的IronXL的完整指南 Jordi Bardia 更新:2026年1月5日 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 LLM副本 LLM副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 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); } } } $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。 輸出 運行程式碼後,我們將看到頁面載入完畢,頁面上會顯示一個按鈕,用於處理匯出過程。 點擊按鈕後,資料將會儲存到新的 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(); } } } $vbLabelText $csharpLabel IronXL可以輕鬆處理多個工作表,根據業務規則套用條件格式,並在需要時支援進階 Excel 功能,例如資料透視表和圖表。 如需詳細的 API 文檔,請造訪我們的綜合參考指南。 結論 IronXL將Blazor Server 應用程式中 Excel 檔案的產生從一項複雜的挑戰變成了一項簡單的任務。 它直覺的 API 無需安裝 Microsoft Office,即可存取進階 Excel 功能。 從簡單的數據匯出到包含公式和格式的複雜多工作表報告, IronXL都能以卓越的效能和可靠性輕鬆應對。 準備好利用專業的 Excel 匯出功能來增強您的Blazor應用程式了嗎? 立即開始IronXL免費試用,或了解我們的生產部署授權選項。 常見問題解答 如何在 Blazor 伺服器應用程式中匯出 Excel 檔案? 您可以使用 IronXL 在 Blazor Server 應用程式中匯出 Excel 檔案,方法是直接從伺服器建立、格式化和下載 XLSX 檔案,而不需要 Microsoft Office。 在 Blazor 中使用 IronXL 需要安裝 Microsoft Office 嗎? 不,IronXL 不需要在您的伺服器上安裝 Microsoft Office,即可在 Blazor 應用程式中建立、格式化和匯出 Excel 檔案。 IronXL 可以與 Blazor 應用程式整合嗎? 是的,IronXL 可與 Blazor 應用程式無縫整合,讓您輕鬆新增 Excel 匯出功能。 在 Web 應用程式中匯出 Excel 檔案有哪些常見用途? 常見用途包括產生報表、建立庫存清單,以及以 Excel 格式產生客戶發票。 是否有使用 IronXl.Excel 匯出 Excel 檔案的程式碼範例? 是的,本指南提供程式碼範例,協助您在 Blazor Server 應用程式中使用 IronXl.Excel 實作 Excel 匯出功能。 是否可以使用 IronXl.Excel 在 Blazor 中格式化 Excel 檔案? 是的,IronXl.Excel 可讓您直接在 Blazor 應用程式中格式化 Excel 檔案,包括設定樣式、新增公式等。 IronXl.Excel 可以建立哪些類型的 Excel 檔案? 您可以使用 IronXL 建立 XLSX 檔案,這是一種廣泛使用的 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工作簿。 閱讀更多 如何使用 C# 讀取資料中含有逗號的 CSV 檔案如何在不依賴 Office 的情況...
更新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工作簿。 閱讀更多