原创|行业资讯|编辑:吉炜炜|2025-09-18 09:53:59.450|阅读 54 次
概述:在 C# 开发中,DataSet 常用于管理内存中的数据,通常来源于数据库查询或系统集成过程。本文将介绍如何使用 Spire.XLS for .NET 在 C# 中导出 DataSet 到 Excel,包括创建 Excel 文件、将多个 DataTable 分别写入不同工作表、应用格式化,以及处理大数据量导出等场景。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
在 C# 开发中,DataSet 常用于管理内存中的数据,通常来源于数据库查询或系统集成过程。在很多情况下,你可能需要将 DataSet 导出为 Excel 文件——例如生成报表、与非开发人员共享结构化数据,或将记录归档以便后续参考。
E-iceblue旗下Spire系列产品是国产文档处理领域的优秀产品,支持国产化,帮助企业高效构建文档处理的应用程序。本文将介绍如何使用 Spire.XLS for .NET 在 C# 中导出 DataSet 到 Excel,包括创建 Excel 文件、将多个 DataTable 分别写入不同工作表、应用格式化,以及处理大数据量导出等场景。
欢迎加入Spire技术交流Q群(125237868),与更多小伙伴一起提升文档开发技能~
什么是 DataSet?
C# 中的 DataSet 是内存中对结构化数据的表示,可以包含多个 DataTable,并保存其行、列和关系。这使得开发者在无需直接连接数据库的情况下,也能方便地处理关系型数据。
为什么要将 DataSet 导出到 Excel?
相比纯文本或 CSV,Excel 具备丰富的格式化功能、多工作表支持以及更佳的可读性。
本文使用 Spire.XLS for .NET 来导出 DataSet 到 Excel。通过 NuGet 安装:
Install-Package Spire.XLS引用命名空间:
using Spire.Xls; using System.Data; using System.Drawing; // 用于颜色
将 DataSet 导出为 Excel 包含两个关键步骤:准备数据和写入工作簿。实际应用中,DataSet 通常来自数据库或 API 查询。为了演示清晰,这里我们先构建一个内存中的 DataSet,再将其导出为 Excel 文件,每个 DataTable 对应一个工作表。
下面的代码示例构建了一个包含多个业务表的 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; } }
有了 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 方法的起始行列参数,将多个表写入同一个工作表。
效果预览
下图展示了从 DataSet 导出的 Excel 文件,其中包含 Employees、Departments、Projects 三个工作表。
原始数据往往不够直观,格式化可以提升可读性,使报表更专业。通过 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();
格式化功能说明
格式化效果预览
下图展示了蓝色背景的加粗表头、带边框的区域,以及日期和货币列的正确格式。
当 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,便于与应用或数据库集成。
遍历 ds.Tables,为每个 DataTable 调用 InsertDataTable,并新建工作表即可。
可以。使用 Workbook.LoadFromFile() 打开文件,再选择目标工作表并调用 InsertDataTable。
数据类型会被保留。你还可以在导出后对列应用日期、货币、对齐等格式。
可拆分到多个工作表,分批写入,并减少复杂格式,以提升性能。
欢迎下载|体验更多E-iceblue产品
获取更多信息请咨询 ;技术交流Q群(125237868)
————————————————————————————————————————
关于慧都科技:
慧都科技是一家行业数字化解决方案公司,长期专注于软件、油气与制造行业。公司基于深入的业务理解与管理洞察,以系统化的业务建模驱动技术落地,帮助企业实现智能化运营与长期竞争优势。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。慧都科技E-iceblue的官方授权代理商,提供E-iceblue系列产品免费试用,咨询,正版销售等于一体的专业化服务。E-iceblue旗下Spire系列产品是国产文档处理领域的优秀产品,支持国产化,帮助企业高效构建文档处理的应用程序。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ke049m.cn
文章转载自:慧都网