翻譯|使用教程|編輯:吉煒煒|2025-07-15 10:53:22.953|閱讀 123 次
概述:在 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@ke049m.cn
文章轉載自:慧都網