國產化Excel開發組件Spire.XLS教程:C# 輕松將 DataSet 導出到 Excel

在 C# 開發中,DataSet 常用于管理內存中的數據,通常來源于數據庫查詢或系統集成過程。在很多情況下,你可能需要將 DataSet 導出為 Excel 文件——例如生成報表、與非開發人員共享結構化數據,或將記錄歸檔以便后續參考。
E-iceblue旗下Spire系列產品是國產文檔處理領域的優秀產品,支持國產化,幫助企業高效構建文檔處理的應用程序。本文將介紹如何使用 Spire.XLS for .NET 在 C# 中導出 DataSet 到 Excel,包括創建 Excel 文件、將多個 DataTable 分別寫入不同工作表、應用格式化,以及處理大數據量導出等場景。
Spire.XLS for .NET試用下載,請聯系E-iceblue Spire官方授權代理商慧都科技
歡迎加入Spire技術交流Q群(125237868),與更多小伙伴一起提升文檔開發技能~
1. DataSet 基礎與 Excel 導出環境搭建
什么是 DataSet?
C# 中的 DataSet 是內存中對結構化數據的表示,可以包含多個 DataTable,并保存其行、列和關系。這使得開發者在無需直接連接數據庫的情況下,也能方便地處理關系型數據。
為什么要將 DataSet 導出到 Excel?
- 數據共享 —— Excel 文件易于團隊間傳遞和查看。
- 數據分析 —— 分析人員可在 Excel 中直接使用公式、數據透視表和圖表進行處理。
- 歸檔保存 —— 將查詢結果或處理過的數據存儲為可讀性強的便攜格式。
相比純文本或 CSV,Excel 具備豐富的格式化功能、多工作表支持以及更佳的可讀性。
環境搭建
本文使用 Spire.XLS for .NET 來導出 DataSet 到 Excel。通過 NuGet 安裝:
Install-Package Spire.XLS
引用命名空間:
using Spire.Xls;
using System.Data;
using System.Drawing; // 用于顏色
Spire.XLS for .NET試用下載,請聯系E-iceblue Spire官方授權代理商慧都科技
歡迎加入Spire技術交流Q群(125237868),與更多小伙伴一起提升文檔開發技能~
2. 在 C# 中用 DataSet 數據創建 Excel 文件
將 DataSet 導出為 Excel 包含兩個關鍵步驟:準備數據和寫入工作簿。實際應用中,DataSet 通常來自數據庫或 API 查詢。為了演示清晰,這里我們先構建一個內存中的 DataSet,再將其導出為 Excel 文件,每個 DataTable 對應一個工作表。
2.1 使用示例數據初始化 DataSet
下面的代碼示例構建了一個包含多個業務表的 DataSet,表中包含多種常見數據類型(int、string、DateTime、decimal)。
using System;
using System.Data;
class Program
{
static DataSet CreateSampleDataSet()
{
DataSet ds = new DataSet("公司數據");
// 員工表
DataTable employees = new DataTable("員工");
employees.Columns.Add("編號", typeof(int));
employees.Columns.Add("姓名", typeof(string));
employees.Columns.Add("部門編號", typeof(int));
employees.Columns.Add("入職日期", typeof(DateTime));
employees.Columns.Add("薪資", typeof(decimal));
employees.Rows.Add(1, "張偉", 101, new DateTime(2020, 5, 12), 5500.00m);
employees.Rows.Add(2, "李娜", 102, new DateTime(2019, 3, 8), 7200.50m);
employees.Rows.Add(3, "王強", 103, new DateTime(2021, 11, 2), 4800.75m);
// 部門表
DataTable departments = new DataTable("部門");
departments.Columns.Add("部門編號", typeof(int));
departments.Columns.Add("部門名稱", typeof(string));
departments.Rows.Add(101, "人事部");
departments.Rows.Add(102, "信息技術部");
departments.Rows.Add(103, "財務部");
// 項目表
DataTable projects = new DataTable("項目");
projects.Columns.Add("項目編號", typeof(int));
projects.Columns.Add("項目名稱", typeof(string));
projects.Columns.Add("負責人編號", typeof(int));
projects.Columns.Add("開始日期", typeof(DateTime));
projects.Rows.Add(1001, "招聘系統", 1, new DateTime(2023, 1, 15));
projects.Rows.Add(1002, "ERP升級", 2, new DateTime(2023, 4, 10));
projects.Rows.Add(1003, "預算規劃", 3, new DateTime(2023, 7, 5));
ds.Tables.Add(employees);
ds.Tables.Add(departments);
ds.Tables.Add(projects);
return ds;
}
}
2.2 將 DataSet 導出為 Excel 文件
有了 DataSet 后,接下來創建 Excel 文件:實例化 Workbook,遍歷 DataTable,將其插入到工作表中,最后保存文件。
using Spire.Xls;
using System.Data;
class Program
{
static void Main()
{
DataSet ds = CreateSampleDataSet();
Workbook workbook = new Workbook();
workbook.Worksheets.Clear();
// 每個 DataTable 導出為一個單獨的工作表
for (int i = 0; i < ds.Tables.Count; i++)
{
Worksheet sheet = workbook.Worksheets.Add(ds.Tables[i].TableName);
sheet.InsertDataTable(ds.Tables[i], true, 1, 1);
sheet.Name = ds.Tables[i].TableName;
}
workbook.SaveToFile("DatasetToExcel.xlsx", ExcelVersion.Version2016);
}
}
導出要點說明
- 每個 DataTable 會被寫入單獨的工作表。
- InsertDataTable(DataTable, bool, int, int) 可指定數據插入的起始單元格。
- SaveToFile() 將工作簿保存為指定格式的文件。
除了將 DataTable 導出到不同工作表,你也可以通過調整 InsertDataTable 方法的起始行列參數,將多個表寫入同一個工作表。
效果預覽
下圖展示了從 DataSet 導出的 Excel 文件,其中包含 Employees、Departments、Projects 三個工作表。

3. 使用 C# 為 Excel 工作表添加格式
原始數據往往不夠直觀,格式化可以提升可讀性,使報表更專業。通過 Spire.XLS,可以設置字體、背景色、邊框,并對數字和日期應用格式。
using System.Drawing;
using Spire.Xls;
// 獲取第一個工作表
Worksheet sheet1 = workbook.Worksheets["員工"];
// 1) 表頭樣式 (A1:E1)
CellRange header = sheet1.AllocatedRange.Rows[0];
header.Style.Font.IsBold = true;
header.Style.Font.Size = 12;
header.Style.Font.Color = Color.White;
header.Style.Color = Color.SteelBlue;
header.BorderAround(LineStyleType.Thin);
// 2) 設置列的數字格式 (D: HireDate, E: Salary)
sheet1.AllocatedRange.Columns[3].Style.NumberFormat = "yyyy-mm-dd";
sheet1.AllocatedRange.Columns[4].Style.NumberFormat = "$#,##0.00";
// 3) 數據區域設置淺色背景 (A2:E4 示例)
CellRange data = sheet1.Range["A2:E4"];
data.Style.Color = Color.FromArgb(245, 247, 250);
data.BorderAround(LineStyleType.Thin);
// 設置字體名
sheet1.AllocatedRange.Style.Font.FontName = "微軟雅黑";
// 自動調整行高列寬
sheet1.AllocatedRange.AutoFitColumns();
sheet1.AllocatedRange.AutoFitRows();
格式化功能說明
- Style.Font —— 設置字體屬性(加粗、大小、顏色)。
- Style.Color —— 設置單元格背景色。
- Borders/BorderAround —— 為范圍繪制邊框。
- NumberFormat —— 應用 Excel 內置格式(日期、貨幣、百分比等)。
- AutoFitColumns/Rows —— 根據內容自動調整列寬和行高。
格式化效果預覽
下圖展示了藍色背景的加粗表頭、帶邊框的區域,以及日期和貨幣列的正確格式。

4. 處理大型 DataSet 導出
當 DataSet 數據量較大時,性能與內存消耗尤為關鍵。常見優化方式包括:
- 拆分到多個工作表 —— 避免超過 Excel 行數限制,同時方便分類。
- 分批寫入 —— 按表或按范圍逐步插入數據。
- 輕量化格式 —— 減少復雜格式以降低文件大小和處理時間。
- 流式處理 —— 避免一次性加載全部數據。
5. 在 C# 中讀取 Excel 數據到 DataSet
除了導出,很多場景下還需要將 Excel 文件讀取到 DataSet 中,用于數據處理或遷移。這在導入外部報表、系統集成或數據庫預處理時非常實用。
using System.Data;
using Spire.Xls;
class Program
{
static DataSet ReadExcelIntoDataSet(string filePath)
{
DataSet ds = new DataSet();
Workbook workbook = new Workbook();
workbook.LoadFromFile(filePath);
foreach (Worksheet sheet in workbook.Worksheets)
{
DataTable dt = sheet.ExportDataTable();
dt.TableName = sheet.Name;
ds.Tables.Add(dt);
}
return ds;
}
}
ExportDataTable 方法可以將每個工作表轉換為 DataTable,保留其結構和單元格數據。通過設置 TableName 并添加到 DataSet,即可將多個工作表整合為一個內存數據容器,便于進一步處理。
總結
在 C# 中將 DataSet 導出到 Excel,可以方便地生成報表、共享數據,并提升數據的可分析性與展示效果。通過 Spire.XLS for .NET,你不僅能直接從 DataSet 創建 Excel 文件,還能進行格式化、管理多工作表,并高效處理大數據量。同時也支持將 Excel 數據導入 DataSet,便于與應用或數據庫集成。
常見問題:C# DataSet 與 Excel 集成
Q1: 如何將 DataSet 中的多個 DataTable 分別導出到不同工作表?
遍歷 ds.Tables,為每個 DataTable 調用 InsertDataTable,并新建工作表即可。
Q2: 可以將 DataSet 導出到已存在 Excel 文件的指定工作表嗎?
可以。使用 Workbook.LoadFromFile() 打開文件,再選擇目標工作表并調用 InsertDataTable。
Q3: 導出 DataSet 到 Excel 時能保留列格式和數據類型嗎?
數據類型會被保留。你還可以在導出后對列應用日期、貨幣、對齊等格式。
Q4: 如果 DataSet 超過 10 萬行,如何優化導出性能?
可拆分到多個工作表,分批寫入,并減少復雜格式,以提升性能。
Spire.XLS for .NET試用下載,請聯系E-iceblue Spire官方授權代理商慧都科技
歡迎加入Spire技術交流Q群(125237868),與更多小伙伴一起提升文檔開發技能~
在 C# 開發中,DataSet 常用于管理內存中的數據,通常來源于數據庫查詢或系統集成過程。本文將介紹如何使用 Spire.XLS for .NET 在 C# 中導出 DataSet 到 Excel,包括創建 Excel 文件、將多個 DataTable 分別寫入不同工作表、應用格式化,以及處理大數據量導出等場景。
浙公網安備 33010602011771號