博客 / 詳情

返回

使用 C# 導出 Excel 數據並保存多種格式

在現代企業信息化管理中,Excel 已經成為最常用的數據存儲和分析工具。從員工信息表、銷售數據報表到財務分析表,幾乎所有部門都離不開 Excel。然而,在實際業務中,我們往往需要將系統中的數據動態生成 Excel 文件,而不是手動錄入。手動操作不僅效率低,而且容易出錯,對於需要批量生成報表、進行定期統計或對外發布數據的場景尤其不適用。

為了解決這一問題,C# 開發者可以藉助 Free Spire.XLS for .NET,通過代碼快速創建 Excel 文件、填充數據、應用樣式,並將文件導出為多種格式,包括 XLSX、CSV、PDF,甚至直接保存到內存流以便網絡傳輸。本文將通過一個完整示例,詳細演示如何在 C# 中實現 Excel 數據導出,讓你的報表生成工作既高效又專業。

1. 安裝 Spire.XLS

在開始編碼前,需要通過 NuGet 安裝 Spire.XLS:

Install-Package FreeSpire.XLS

安裝完成後,即可在 C# 項目中引用命名空間:

using Spire.Xls;
using System.Data;
using System.IO;

2. 創建工作簿和填充數據

下面示例演示如何創建一個 Excel 文件,並將員工信息填充到工作表中:

// 創建工作簿
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "EmployeeData";

// 創建 DataTable 並添加列
DataTable table = new DataTable();
table.Columns.Add("EmployeeID");
table.Columns.Add("FullName");
table.Columns.Add("Department");
table.Columns.Add("HireDate");
table.Columns.Add("Salary");

// 添加示例數據
table.Rows.Add("E101", "John Miller", "Finance", "2020-02-15", "7500");
table.Rows.Add("E102", "Sarah Brown", "HR", "2019-07-10", "6800");
table.Rows.Add("E103", "Michael Davis", "IT", "2021-01-22", "8200");
table.Rows.Add("E104", "Laura Wilson", "Marketing", "2018-11-18", "7100");
table.Rows.Add("E105", "Daniel Lee", "Sales", "2022-06-12", "6900");

// 將 DataTable 插入工作表,從第一行第一列開始,並保留列名
sheet.InsertDataTable(table, true, 1, 1);

// 應用內置樣式
sheet.AllocatedRange.Rows[0].BuiltInStyle = BuiltInStyles.Heading2; // 標題行
for (int i = 1; i < sheet.AllocatedRange.Rows.Count(); i++)
{
    sheet.AllocatedRange.Rows[i].BuiltInStyle = BuiltInStyles.Accent2; // 數據行
}

// 自動調整列寬和行高
sheet.AllocatedRange.AutoFitColumns();
sheet.AllocatedRange.AutoFitRows();

説明

  • InsertDataTable 可以直接將 DataTable 內容寫入工作表,同時支持保留列名。
  • 內置樣式(BuiltInStyles)可以快速美化表格,例如標題行加粗、數據行配色。
  • AutoFitColumnsAutoFitRows 可自動調整列寬和行高,使表格美觀。

3. 保存為不同格式

Spire.XLS 支持多種保存格式,常見的包括:

  • XLS/XLSX:傳統 Excel 文件
  • CSV:逗號分隔文本文件
  • PDF:用於打印或發佈
  • HTML / SVG:網頁或矢量圖格式
  • XLSB/XLSM:二進制或帶宏 Excel 文件
  • MemoryStream:將文件寫入內存流,用於網絡傳輸或其他二次處理

示例代碼:

// 保存為 Excel 2016 格式
workbook.SaveToFile("EmployeeData.xlsx", FileFormat.Version2016);

// 保存為 CSV
workbook.SaveToFile("EmployeeData.csv", FileFormat.CSV);

// 保存為 PDF
workbook.SaveToFile("EmployeeData.pdf", FileFormat.PDF);

// 保存到 MemoryStream
using (MemoryStream ms = new MemoryStream())
{
    workbook.SaveToStream(ms, FileFormat.Version2016);
    // 這裏可以將 ms 寫入數據庫、發送 HTTP 響應等
}

説明

  • FileFormat 枚舉支持多達 25 種格式,例如 Xlsb2007ODSHTMLMarkdown 等。
  • MemoryStream 保存方式適合 Web 應用場景,可以直接將文件返回給客户端而不寫入磁盤。

4. 效果展示

生成的 Excel 文件:

C#保存Excel

表頭加粗,數據行有配色,並且列寬自適應。


5. 擴展説明

  1. 為什麼要使用代碼導出?
    對於批量生成報表或動態數據,手動操作效率低且易出錯,使用代碼生成可以自動化、可複用。
  2. MemoryStream 場景

    • Web API 返回文件下載
    • 將 Excel 存入數據庫或雲存儲
    • 在內存中生成並進一步處理,例如加密或壓縮
  3. 多格式支持
    Spire.XLS 的 FileFormat 枚舉幾乎覆蓋了主流的 Excel、PDF、網頁、模板等格式,可以滿足多種業務需求。

6. 總結

本文演示瞭如何使用 Spire.XLS for .NET

  • 在 C# 中創建 Excel 文件並填充數據
  • 應用內置樣式和自動調整行列
  • 將文件保存為多種格式(XLSX、CSV、PDF、HTML 等)
  • 使用 MemoryStream 保存用於網絡傳輸或二次處理

通過掌握 WorkbookWorksheetInsertDataTableSaveToFile/SaveToStream,你可以輕鬆實現 Excel 數據導出和格式轉換,提升企業應用開發效率。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.