使用 IRONXL 在ASP.NET C#中下載Excel文件:將數據匯出到XLSX,CSV和更多格式 Jordi Bardia 更新:2026年3月1日 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 LLM副本 LLM副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 對於企業級 Web 應用程式而言,實作電子表格匯出功能是一個常見的需求,然而手動產生和交付這些文件的過程往往會引入相當大的技術複雜性。 開發人員必須經常了解 MemoryStream 管理的細微差別,並配置精確的 HTTP 內容處置標頭,以確保瀏覽器行為的一致性並防止資料損壞。 本文將介紹如何使用IronXL函式庫在.NET C# MVC 控制器中建立和下載 Excel 檔案。 我們將介紹如何將資料匯出為 XLSX 格式的 Excel 檔案、如何串流 CSV 檔案、如何轉換上傳檔案以便重新匯出,以及如何將下載的檔案傳回瀏覽器,所有這些操作都無需安裝 Microsoft Office 或依賴 Excel Interop。安裝IronXL NuGet套件並開始免費試用,即可跟隨原始碼範例學習。 立即開始在您的項目中使用 IronXL 並免費試用。 第一步: 免費啟動 如何從控制器建立和下載 Excel 檔案? 在ASP.NET Core場景中,任何下載 Excel 檔案的核心模式都包含三個步驟:建立工作簿、將其寫入流,並將流程作為檔案回應傳回。 以下程式碼展示了一個完整的 MVC 控制器操作,該操作從頭開始建立 XLSX 檔案並將其推送到瀏覽器。 using IronXL; using Microsoft.AspNetCore.Mvc; public class ReportController : Controller { // Export employee data as a downloadable Excel file public IActionResult DownloadExcel() { // Create a new workbook and worksheet var workbook = WorkBook.Create(ExcelFileFormat.XLSX); var worksheet = workbook.CreateWorkSheet("Employees"); // Add header row with column names worksheet["A1"].Value = "Name"; worksheet["B1"].Value = "Department"; worksheet["C1"].Value = "Salary"; // Populate cells with data values worksheet["A2"].Value = "Alice Torres"; worksheet["B2"].Value = "Engineering"; worksheet["C2"].Value = 95000; worksheet["A3"].Value = "James Park"; worksheet["B3"].Value = "Marketing"; worksheet["C3"].Value = 78000; // Export workbook to a MemoryStream for download var stream = workbook.ToStream(); string filename = "Employees.xlsx"; var content = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; // Return file to the browser with content disposition attachment return File(stream, content, filename); } } using IronXL; using Microsoft.AspNetCore.Mvc; public class ReportController : Controller { // Export employee data as a downloadable Excel file public IActionResult DownloadExcel() { // Create a new workbook and worksheet var workbook = WorkBook.Create(ExcelFileFormat.XLSX); var worksheet = workbook.CreateWorkSheet("Employees"); // Add header row with column names worksheet["A1"].Value = "Name"; worksheet["B1"].Value = "Department"; worksheet["C1"].Value = "Salary"; // Populate cells with data values worksheet["A2"].Value = "Alice Torres"; worksheet["B2"].Value = "Engineering"; worksheet["C2"].Value = 95000; worksheet["A3"].Value = "James Park"; worksheet["B3"].Value = "Marketing"; worksheet["C3"].Value = 78000; // Export workbook to a MemoryStream for download var stream = workbook.ToStream(); string filename = "Employees.xlsx"; var content = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; // Return file to the browser with content disposition attachment return File(stream, content, filename); } } $vbLabelText $csharpLabel 輸出 Excel 文件 WorkBook.Create 方法產生一個新的 Excel 文檔,而 CreateWorkSheet 方法會向其中新增第一個工作表。 在以值填入儲存格後, ToStream方法會將整個工作簿轉換為 MemoryStream,不會在磁碟上建立臨時檔案。 控制器上的 File() 傳回方法會將內容處置標頭設為 attachment,這告訴瀏覽器下載檔案而不是嘗試渲染它。 第三個參數控製檔名在使用者下載對話方塊中的顯示方式。 這種公共 IActionResult 模式在.NET Framework和ASP.NET Core專案中都適用,因此對於需要將資料匯出到 Excel 的Web 應用程式來說,它是首選方法。 如何將資料庫資料匯出為可下載的電子表格? 大多數實際應用場景都涉及從資料庫表中匯出數據,而不是硬編碼的值。 流程相同:查詢資料、填入工作表、返回文件。以下範例模擬從資料庫中提取記錄並將其寫入 Excel 文件。 using IronXL; using Microsoft.AspNetCore.Mvc; public class DataExportController : Controller { // Export database records to an xlsx file for download public IActionResult ExportDatabaseReport() { // Simulate a database query returning order records var orders = new[] { new { OrderId = 1001, Customer = "Acme Corp", Total = 4500.00m }, new { OrderId = 1002, Customer = "Globex Inc", Total = 12300.50m }, new { OrderId = 1003, Customer = "Initech LLC", Total = 890.75m }, }; var workbook = WorkBook.Create(ExcelFileFormat.XLSX); var worksheet = workbook.CreateWorkSheet("Orders"); // Write headers worksheet["A1"].Value = "Order ID"; worksheet["B1"].Value = "Customer"; worksheet["C1"].Value = "Total"; // Write each row of data from the query results for (int i = 0; i < orders.Length; i++) { int row = i + 2; worksheet[$"A{row}"].Value = orders[i].OrderId; worksheet[$"B{row}"].Value = orders[i].Customer; worksheet[$"C{row}"].Value = orders[i].Total; } var stream = workbook.ToStream(); string filename = $"OrderReport-{DateTime.Now:yyyyMMdd}.xlsx"; return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename); } } using IronXL; using Microsoft.AspNetCore.Mvc; public class DataExportController : Controller { // Export database records to an xlsx file for download public IActionResult ExportDatabaseReport() { // Simulate a database query returning order records var orders = new[] { new { OrderId = 1001, Customer = "Acme Corp", Total = 4500.00m }, new { OrderId = 1002, Customer = "Globex Inc", Total = 12300.50m }, new { OrderId = 1003, Customer = "Initech LLC", Total = 890.75m }, }; var workbook = WorkBook.Create(ExcelFileFormat.XLSX); var worksheet = workbook.CreateWorkSheet("Orders"); // Write headers worksheet["A1"].Value = "Order ID"; worksheet["B1"].Value = "Customer"; worksheet["C1"].Value = "Total"; // Write each row of data from the query results for (int i = 0; i < orders.Length; i++) { int row = i + 2; worksheet[$"A{row}"].Value = orders[i].OrderId; worksheet[$"B{row}"].Value = orders[i].Customer; worksheet[$"C{row}"].Value = orders[i].Total; } var stream = workbook.ToStream(); string filename = $"OrderReport-{DateTime.Now:yyyyMMdd}.xlsx"; return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename); } } $vbLabelText $csharpLabel 輸出 在生產環境中,訂單數組將來自 Entity Framework Core 查詢、 Dapper呼叫或任何透過連接字串連接到資料庫的資料存取層。 循環遍歷結果,並將每個值寫入工作表中的正確儲存格。 請注意字串檔案名稱中包含日期戳,這個小細節可以避免用戶重複下載檔案時出現麻煩。 IronXL 的單元格尋址系統(worksheet[$"A{row}"])保持了內容的可讀性,而WorkBook API則在內部處理了構建有效 XLSX 檔案的所有繁重工作。 對於涉及公式、樣式或多工作表工作簿的更複雜場景,同樣的方法也能很好地擴展。 如何將資料下載為 CSV 檔案而不是 XLSX 檔案? 有時,輕量級的 CSV 檔案是更好的選擇,尤其是在將資料匯入其他系統、資料庫或工具時,這些系統、資料庫或工具並不需要 Excel 檔案IronXL豐富的功能。 IronXL 讓格式切換變得輕而易舉。 using IronXL; using Microsoft.AspNetCore.Mvc; public class CsvController : Controller { // Export data as a CSV file download public IActionResult ExportCsv() { var workbook = WorkBook.Create(ExcelFileFormat.XLSX); var worksheet = workbook.CreateWorkSheet("Products"); worksheet["A1"].Value = "SKU"; worksheet["B1"].Value = "Product"; worksheet["C1"].Value = "Price"; worksheet["A2"].Value = "WDG-001"; worksheet["B2"].Value = "Widget Pro"; worksheet["C2"].Value = 29.99; // Convert to CSV stream instead of XLSX var stream = workbook.ToCsvStream(); string filename = "Products.csv"; return File(stream, "text/csv", filename); } } using IronXL; using Microsoft.AspNetCore.Mvc; public class CsvController : Controller { // Export data as a CSV file download public IActionResult ExportCsv() { var workbook = WorkBook.Create(ExcelFileFormat.XLSX); var worksheet = workbook.CreateWorkSheet("Products"); worksheet["A1"].Value = "SKU"; worksheet["B1"].Value = "Product"; worksheet["C1"].Value = "Price"; worksheet["A2"].Value = "WDG-001"; worksheet["B2"].Value = "Widget Pro"; worksheet["C2"].Value = 29.99; // Convert to CSV stream instead of XLSX var stream = workbook.ToCsvStream(); string filename = "Products.csv"; return File(stream, "text/csv", filename); } } $vbLabelText $csharpLabel 輸出 CSV 檔案 ToCsvStream 方法將第一個工作表匯出為 CSV 格式的MemoryStream 。 CSV 檔案非常適合資料交換,但它們會移除所有格式、公式和多工作表結構。 當您需要這些功能時,請使用 XLSX 檔案格式,並透過 ToStream() 或 ToXlsxStream() 進行轉換。 若要深入了解格式轉換,請參閱電子表格轉換指南。 如何將上傳的文件重新匯出為其他格式? 常見的 Web 應用程式場景包括接受使用者上傳的文件並將其匯出為另一種格式,例如將 XLS 上傳文件轉換為 XLSX 文件,或從最初以舊格式儲存的工作簿產生 CSV 檔案。 public IActionResult ConvertUpload(IFormFile upload) { using var memoryStream = new MemoryStream(); upload.CopyTo(memoryStream); memoryStream.Position = 0; // Load uploaded Excel file from the stream var workbook = WorkBook.Load(memoryStream); // Re-export as XLSX regardless of the original file extension or file type var stream = workbook.ToXlsxStream(); string filename = Path.GetFileNameWithoutExtension(upload.FileName) + ".xlsx"; return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename); } public IActionResult ConvertUpload(IFormFile upload) { using var memoryStream = new MemoryStream(); upload.CopyTo(memoryStream); memoryStream.Position = 0; // Load uploaded Excel file from the stream var workbook = WorkBook.Load(memoryStream); // Re-export as XLSX regardless of the original file extension or file type var stream = workbook.ToXlsxStream(); string filename = Path.GetFileNameWithoutExtension(upload.FileName) + ".xlsx"; return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename); } $vbLabelText $csharpLabel 輸出:將 CSV 轉換為 XLSX 格式 WorkBook.Load方法接受 MemoryStream 類型參數,因此無需先將上傳的檔案儲存到磁碟。它會自動偵測來源檔案是 XLS、XLSX 還是 CSV 文件,並進行相應的解析。 從那裡,ToXlsxStream() 產生一個乾淨的新 MemoryStream,採用現代 XLSX 格式,每個位元組都結構正確。 這有助於在進一步處理或儲存之前對用戶提交的內容進行標準化。 支援匯出哪些文件格式? IronXL支援將資料匯出為多種電子表格和資料交換格式。 下表總結了可用的輸出選項及其最佳用途。 格式 檔案副檔名 流方法 最佳用例 XLSX .xlsx ToXlsxStream() 具有格式和公式的現代Excel電子表格 XLS .xls ToXlsStream() 舊系統相容性 CSV .csv ToCsvStream() 資料庫匯入、資料管道、輕量級匯出 XML .xml ToXmlStream() 企業系統集成 JSON .json SaveAsJson() Web API 回應和資料交換 HTML .html ExportToHtml() 網頁上顯示電子表格數據 每個流方法都會傳回一個 MemoryStream,該 MemoryStream 可以直接插入ASP.NET Core 的 File() 傳回輔助函數。 在某些情況下,例如儲存到 blob 資料庫或附加到電子郵件回應流時,byte[] 更方便,也可以使用位元組陣列替代方案 (ToByteArray())。 安裝IronXL NuGet套件後,所有這些方法都可以立即使用。 有關每種匯出格式的完整說明,請參閱匯出至 Excel 文件。 無論目標是為業務分析師下載 XLSX 格式的文件,為資料工程師匯出 CSV 文件,還是為企業整合產生 XML, IronXL都能在.NET Core和.NET Framework應用程式中保持程式碼的簡潔性和輸出的可靠性。 準備好在下一個專案中交付電子表格匯出檔案了嗎? 取得免費試用許可證或了解許可證選項,立即開始使用。 有關逐步設定說明,請參閱IronXL入門指南。 常見問題解答 如何在 .NET Core 中使用 C# 下載 Excel 檔案? 您可以透過 IronXL,使用 C# 在 ASP.NET Core 中下載 Excel 檔案。IronXL 允許您直接從 MVC 控制器將資料匯出為 XLSX、CSV 和 XML 等多種格式。這可透過 MemoryStream 和 File() 方法進行高效管理。 使用 IronXL 匯出 Excel 檔案有哪些好處? IronXL 透過有效管理 MemoryStream 並設定 HTTP content-disposition 標頭,簡化了 Excel 檔案的匯出流程。它能確保瀏覽器行為的一致性並防止資料損毀,因此非常適合用於 Enterprise 網頁應用程式。 IronXL 能匯出資料到哪些文件格式? IronXL 可將資料匯出為多種檔案格式,包括 XLSX、CSV 和 XML。這種多樣性有助於開發人員無縫處理各種資料匯出需求。 在匯出 Excel 檔案時,IronXL 能協助克服哪些技術挑戰? IronXL 有助於克服諸如 MemoryStream 管理以及精確設定 HTTP Content-Disposition 標頭等挑戰。這些功能可確保瀏覽器能正確處理匯出的 Excel 檔案,並防止資料損毀。 IronXL 可用於從 MVC 控制器匯出資料嗎? 是的,IronXL 可用於從 MVC 控制器匯出資料。它提供了一種簡便的方式來輸出 Excel 格式的資料,使其成為 ASP.NET Core 網頁應用的實用選擇。 IronXL 如何改善 Excel 檔案的生成流程? IronXL 透過自動化處理 MemoryStream 和 HTTP 標頭管理等複雜任務來優化流程,讓開發人員能專注於核心功能,而非技術細節。 Jordi Bardia 立即與工程團隊聊天 軟體工程師 Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担產品测测试,產品開發和研究的责任時,Jordi 為持续的產品改進增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 更新2026年3月1日 如何在Blazor中使用IronXL匯出Excel文件 學習如何在Blazor伺服器應用程式中使用IronXL将數據匯出到Excel。此指南涵蓋專案設置、服務設計、條件格式化、多表報告和錯誤處理,附有完整的C#代碼範例。 閱讀更多 更新2026年2月27日 如何在C#中而不是使用StreamReader來讀取Excel文件 了解StreamReader為何無法讀取Excel文件,並學習如何使用IronXL加載來自磁盤或內存流的XLSX和XLS工作簿。 閱讀更多 更新2026年3月1日 如何使用IronXL在C#中生成Excel文件 學習如何使用IronXL在C#中生成Excel文件,涵蓋基本試算表創建、格式化、公式和資料庫整合,無需Office依賴。 閱讀更多 如何不使用Interop在Excel中...
更新2026年3月1日 如何在Blazor中使用IronXL匯出Excel文件 學習如何在Blazor伺服器應用程式中使用IronXL将數據匯出到Excel。此指南涵蓋專案設置、服務設計、條件格式化、多表報告和錯誤處理,附有完整的C#代碼範例。 閱讀更多
更新2026年2月27日 如何在C#中而不是使用StreamReader來讀取Excel文件 了解StreamReader為何無法讀取Excel文件,並學習如何使用IronXL加載來自磁盤或內存流的XLSX和XLS工作簿。 閱讀更多
更新2026年3月1日 如何使用IronXL在C#中生成Excel文件 學習如何使用IronXL在C#中生成Excel文件,涵蓋基本試算表創建、格式化、公式和資料庫整合,無需Office依賴。 閱讀更多