翻譯|使用教程|編輯:吉煒煒|2025-07-15 10:53:22.953|閱讀 108 次
概述:在 C# 中生成 Excel 文件是一項常見任務,廣泛應用于報表系統構建、結構化數據導出及 Excel 自動化流程開發。本文將介紹如何使用 Spire.XLS for .NET(一款獨立的 Excel 操作庫)在各類 .NET 項目中生成 Excel 文件,包括 .NET 桌面程序、ASP.NET Web 服務以及后臺自動化任務。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
在 C# 中生成 Excel 文件是一項常見任務,廣泛應用于報表系統構建、結構化數據導出及 Excel 自動化流程開發。無論你是在構建桌面工具、Web API,還是跨平臺應用,通過代碼生成 .xlsx 文件,都能顯著提升數據處理和交互效率。
本文將介紹如何使用 Spire.XLS for .NET(一款獨立的 Excel 操作庫,支持國產化信創)在各類 .NET 項目中生成 Excel 文件,包括 .NET 桌面程序、ASP.NET Web 服務以及后臺自動化任務。內容涵蓋從零新建 Excel 工作簿、導出 DataTable、服務器端生成文件、設置格式與公式等常見功能,并配有詳細的代碼示例。
歡迎加入Spire技術交流Q群(125237868),與更多小伙伴一起提升文檔開發技能~
Spire.XLS for .NET 是一款輕量級 Excel 操作庫,可完全通過代碼創建和操作 .xls 或 .xlsx 文件,無需安裝 Office,也不依賴 COM 組件,非常適合部署于 Web 服務器、微服務或云平臺應用。
你可以通過 NuGet 安裝該庫:
Install-Package Spire.XLS
在處理配置數據、小規模內容或生成模板時,直接通過 C# 新建 Excel 文件能帶來極高的控制力與靈活性。
以下示例展示了如何新建一個包含文本與數值的工作表,并設置列寬和樣式:
using Spire.Xls; // 創建一個新的工作簿和工作表 Workbook workbook = new Workbook(); Worksheet sheet = workbook.Worksheets[0]; sheet.Name = "匯總"; // 設置工作表名稱為“匯總” // 填充表頭和數據 // 通過單元格名稱訪問 sheet.Range["A1"].Text = "員工"; sheet.Range["B1"].Text = "部門"; sheet.Range["C1"].Text = "薪資"; // 通過行列索引訪問單元格 sheet.Range[2, 1].Text = "小麗"; sheet.Range[2, 2].Text = "人事部"; sheet.Range[2, 3].NumberValue = 6500; sheet.Range[3, 1].Text = "小明"; sheet.Range[3, 2].Text = "信息部"; sheet.Range[3, 3].NumberValue = 7200; // 應用樣式 CellStyle headerStyle = workbook.Styles.Add("Header"); headerStyle.Font.IsBold = true; // 設置加粗字體 sheet.Range["A1:C1"].Style = headerStyle; // 自動調整列寬 sheet.AllocatedRange.AutoFitColumns(); // 保存文件 workbook.SaveToFile("BasicExcel.xlsx", FileFormat.Version2016); workbook.Dispose();
生成的 Excel 文件:
該方法無需安裝 Office 即可直接新建 Excel 文件,適用于數據導出或配置生成任務。
在處理數據庫結果或 API 返回數據時,將 DataTable 導出為 Excel 文件是一項常見需求。Spire.XLS 支持快速加載結構化數據并自動生成列頭,無需手動遍歷行列。
以下示例展示如何將 DataTable 寫入工作表并導出為 Excel 文件:
using System.Data; using Spire.Xls; // 創建一個模擬的數據表 DataTable dt = new DataTable("產品清單"); dt.Columns.Add("產品名稱", typeof(string)); dt.Columns.Add("價格", typeof(double)); dt.Columns.Add("庫存", typeof(int)); // 添加數據行(中文) dt.Rows.Add("筆記本電腦", 1299.99, 20); dt.Rows.Add("顯示器", 199.5, 50); dt.Rows.Add("鼠標", 25.75, 150); // 導入到 Excel Workbook workbook = new Workbook(); Worksheet sheet = workbook.Worksheets[0]; sheet.Name = "庫存報告"; sheet.InsertDataTable(dt, true, 1, 1); // 從第1行第1列插入,并包含表頭 // 自動調整列寬 sheet.AllocatedRange.AutoFitColumns(); // 保存文件 workbook.SaveToFile("庫存報表.xlsx", FileFormat.Version2016); workbook.Dispose();
導出的 Excel 文件:
這種方式適合生成庫存清單、業務報表和數據分析結果,無需使用 Excel 或 COM 自動化。
為了提升 Excel 報表的可讀性與專業性,除了寫入原始數據,還可以通過 C# 設置單元格樣式、邊框、字體顏色、數字格式,以及插入 Excel 原生公式。
以下示例展示如何使用 Spire.XLS 設置標題樣式、貨幣格式、計算公式及交替行顏色:
using Spire.Xls; using System.Drawing; Workbook workbook = new Workbook(); Worksheet sheet = workbook.Worksheets[0]; sheet.Name = "銷售報表"; // 設置工作表名稱 // 設置表頭 sheet.Range["A1"].Text = "商品"; sheet.Range["B1"].Text = "單價"; sheet.Range["C1"].Text = "數量"; sheet.Range["D1"].Text = "總價"; // 添加示例數據(中文) string[,] items = { { "圓珠筆", "1.5", "10" }, { "筆記本", "3.75", "5" }, { "橡皮擦", "0.99", "20" } }; for (int i = 0; i < items.GetLength(0); i++) { int row = i + 2; sheet.Range[$"A{row}"].Text = items[i, 0]; // 商品名稱 sheet.Range[$"B{row}"].NumberValue = double.Parse(items[i, 1]); // 單價 sheet.Range[$"C{row}"].NumberValue = double.Parse(items[i, 2]); // 數量 sheet.Range[$"D{row}"].Formula = $"=B{row}*C{row}"; // 總價(公式計算) } // 樣式:表頭行 CellStyle headerStyle = workbook.Styles.Add("HeaderStyle"); headerStyle.Font.IsBold = true; headerStyle.Font.Color = Color.White; headerStyle.Font.Size = 12; headerStyle.KnownColor = ExcelColors.DarkBlue; headerStyle.HorizontalAlignment = HorizontalAlignType.Center; headerStyle.VerticalAlignment = VerticalAlignType.Center; headerStyle.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thick; headerStyle.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thick; sheet.Range["A1:D1"].Style = headerStyle; sheet.Range["A1:D1"].RowHeight = 22; // 樣式:數據單元格 CellStyle dataStyle = workbook.Styles.Add("DataStyle"); dataStyle.NumberFormat = "\"¥\"#,##0.00"; // 顯示人民幣符號 dataStyle.HorizontalAlignment = HorizontalAlignType.Right; dataStyle.VerticalAlignment = VerticalAlignType.Center; dataStyle.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin; dataStyle.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin; // 應用數據樣式到單價、數量、總價列 sheet.Range["B2:D4"].Style = dataStyle; // 可選:交替行底色增強可讀性 for (int r = 2; r <= 4; r++) { if (r % 2 == 0) sheet.Range[$"A{r}:D{r}"].Style.KnownColor = ExcelColors.LightYellow; } // 設置列寬和行高 sheet.AllocatedRange.ColumnWidth = 10; sheet.AllocatedRange.RowHeight = 20; // 保存文件 workbook.SaveToFile("樣式化報表.xlsx", FileFormat.Version2016); workbook.Dispose();
生成的 Excel 文件:
這種方法適合生成銷售報表、財務記錄、采購清單等需要格式與計算支持的 Excel 文檔。
你還可以進一步應用百分比、自定義數字格式等樣式。
在 ASP.NET Core 應用中(例如 .NET 6/7/8),動態導出 Excel 報表是后臺管理系統和數據平臺中的常見需求。
以下示例展示了如何在 Razor Pages 頁面中生成 Excel 文件并通過瀏覽器下載,無需將文件保存到磁盤:
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Spire.Xls; using System.Data; public class ExportModel : PageModel { public IActionResult OnGet() { // 模擬專業數據:項目進度報告 DataTable dt = new DataTable("項目進度"); dt.Columns.Add("項目編號", typeof(string)); dt.Columns.Add("項目名稱", typeof(string)); dt.Columns.Add("負責人", typeof(string)); dt.Columns.Add("開始日期", typeof(DateTime)); dt.Columns.Add("計劃完成", typeof(DateTime)); dt.Columns.Add("當前進度", typeof(string)); dt.Columns.Add("狀態", typeof(string)); dt.Rows.Add("PRJ001", "智能倉儲系統", "張強", new DateTime(2024, 3, 1), new DateTime(2024, 9, 30), "65%", "進行中"); dt.Rows.Add("PRJ002", "企業門戶網站升級", "李華", new DateTime(2024, 5, 10), new DateTime(2024, 7, 15), "100%", "已完成"); dt.Rows.Add("PRJ003", "數據治理平臺建設", "王敏", new DateTime(2024, 6, 1), new DateTime(2024, 12, 31), "30%", "延遲"); // 創建 Excel 工作簿和工作表 Workbook workbook = new Workbook(); Worksheet sheet = workbook.Worksheets[0]; sheet.Name = "項目進度報告"; // 插入數據表(包含表頭) sheet.InsertDataTable(dt, true, 1, 1); // 表頭樣式 CellStyle headerStyle = workbook.Styles.Add("HeaderStyle"); headerStyle.Font.IsBold = true; headerStyle.HorizontalAlignment = HorizontalAlignType.Center; headerStyle.VerticalAlignment = VerticalAlignType.Center; sheet.Rows[0].Style = headerStyle; // 自動調整列寬 sheet.AllocatedRange.AutoFitColumns(); // 保存為內存流 using var stream = new MemoryStream(); workbook.SaveToStream(stream, FileFormat.Version2016); stream.Position = 0; // 返回文件 return File(stream.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "項目進度報告.xlsx"); } }
導出的 Excel 文件:
該方法適用于需要服務端生成并下載 Excel 文件的 Web 場景,支持:
對于使用經典 ASP.NET Web Forms 的項目,也可以通過 Spire.XLS 實現在瀏覽器中即時下載 Excel 文件,而無需中間文件或 Office 安裝。
以下示例展示了如何在 Web Forms 頁面中使用內存流創建并返回 Excel 文件:
using Spire.Xls; using System; using System.IO; namespace YourNamespace { public partial class Default : System.Web.UI.Page { protected void btnExport_Click(object sender, EventArgs e) { // 創建 Excel 文件并準備導出下載 Workbook workbook = new Workbook(); Worksheet sheet = workbook.Worksheets[0]; sheet.Name = "用戶信息"; // 表頭 string[] headers = { "編號", "姓名", "部門", "入職日期" }; for (int i = 0; i < headers.Length; i++) { sheet.Range[1, i + 1].Text = headers[i]; sheet.Range[1, i + 1].Style.Font.IsBold = true; } // 示例數據(中文) string[,] data = { { "U001", "張美", "人事部", "2023-01-15" }, { "U002", "李強", "信息部", "2022-11-03" } }; // 填充數據 for (int r = 0; r < data.GetLength(0); r++) for (int c = 0; c < data.GetLength(1); c++) sheet.Range[r + 2, c + 1].Text = data[r, c]; // 自動調整列寬 sheet.AllocatedRange.AutoFitColumns(); // 導出并觸發瀏覽器下載 using (MemoryStream ms = new MemoryStream()) { workbook.SaveToStream(ms, FileFormat.Version2016); byte[] bytes = ms.ToArray(); Response.Clear(); Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("Content-Disposition", "attachment; filename=用戶信息.xlsx"); Response.BinaryWrite(bytes); Response.End(); } } } }
導出的 Excel 文件:
該方式適合用于后臺管理系統、內部工具或企業內部門戶,實現便捷的數據導出功能。
使用 Spire.XLS for .NET,你可以輕松地在 C# 中生成 Excel 文件,覆蓋桌面、Web 和后臺任務等多種使用場景。不論是導出 DataTable、創建格式化報表,還是自動生成計算內容,本指南均提供了完整的示例與操作步驟。
————————————————————————————————————————
關于慧都科技:
慧都科技是一家行業數字化解決方案公司,長期專注于軟件、油氣與制造行業。公司基于深入的業務理解與管理洞察,以系統化的業務建模驅動技術落地,幫助企業實現智能化運營與長期競爭優勢。在軟件工程領域,我們提供開發控件、研發管理、代碼開發、部署運維等軟件開發全鏈路所需的產品,提供正版授權采購、技術選型、個性化維保等服務,幫助客戶實現技術合規、降本增效與風險可控。慧都科技E-iceblue的官方授權代理商,提供E-iceblue系列產品免費試用,咨詢,正版銷售等于一體的專業化服務。E-iceblue旗下Spire系列產品是國產文檔處理領域的優秀產品,支持國產化,幫助企業高效構建文檔處理的應用程序。
歡迎下載|體驗更多E-iceblue產品
獲取更多信息請咨詢 ;技術交流Q群(125237868)
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網