当前位置: 代码网 > it编程>编程语言>Asp.net > 使用C#将DataTable导出为Excel文件的实现教程

使用C#将DataTable导出为Excel文件的实现教程

2025年08月08日 Asp.net 我要评论
在 c# 中将 datatable 导出为 excel 文件,是 .net 开发中常见的任务,广泛应用于报表生成、日志导出、系统间数据共享等场景。通过使用独立的组件库,开发者可以轻松将 datatab

在 c# 中将 datatable 导出为 excel 文件,是 .net 开发中常见的任务,广泛应用于报表生成、日志导出、系统间数据共享等场景。通过使用独立的组件库,开发者可以轻松将 datatable 数据写入 excel 文件,并应用格式设置,生成专业、可直接使用的文档,无需复杂配置或依赖第三方办公软件。

本文将介绍如何使用 spire.xls for .net 将 datatable 导出为 excel(.xlsx/.xls)文件,包含数据创建、导出保存、格式设置等实用步骤。

spire.xls for .net试用下载

安装和配置 spire.xls

开始之前,请确保你的项目中已添加 spire.xls for .net

通过 nuget 安装 spire.xls:

copyinstall-package spire.xls

spire.xls 支持 .net framework、.net core、.net 6/7+ 以及 asp.net 项目,且无需安装 microsoft office

分步操作:c# 将 datatable 导出为 excel 文件

下面的步骤将演示如何使用 spire.xls 将 datatable 导出为 excel 文件,包含数据准备、文件保存、网页流导出以及格式设置等内容。

第一步:创建示例 datatable

先创建一个包含多列的 datatable

// 创建数据表
datatable dt = new datatable("员工信息");

// 添加列
dt.columns.add("员工编号", typeof(int));
dt.columns.add("姓名", typeof(string));
dt.columns.add("部门", typeof(string));
dt.columns.add("入职日期", typeof(datetime));
dt.columns.add("工资", typeof(double));
dt.columns.add("是否全职", typeof(bool));
dt.columns.add("奖金系数", typeof(decimal));

// 添加数据行
dt.rows.add(1001, "张伟", "人事部", new datetime(2021, 5, 10), 55000.5, true, 0.05m);
dt.rows.add(1002, "李娜", "技术部", new datetime(2020, 11, 23), 72000.0, false, 0.03m);
dt.rows.add(1003, "王强", "财务部", new datetime(2019, 8, 15), 63000.75, true, 0.07m);
dt.rows.add(1004, "赵敏", "市场部", new datetime(2022, 3, 8), 48800.0, true, 0.06m);

此处为演示用示例数据,实际使用中可绑定任意业务生成的 datatable。

第二步:导入 datatable 并保存为 excel 文件

将 datatable 导入到工作表中,并保存为 excel 文件:

workbook workbook = new workbook();
workbook.worksheets.clear();
worksheet sheet = workbook.worksheets.add(dt.tablename);

// 从 a1 单元格开始插入数据表
sheet.insertdatatable(dt, true, 1, 1);

// 保存为 .xlsx 文件(推荐)
workbook.savetofile("员工信息.xlsx", fileformat.version2016);

// 保存为 .xls 文件(旧格式)
workbook.savetofile("员工信息.xls", fileformat.version97to2003);

说明:

  • workbook 表示整个 excel 文件。
  • insertdatatable 方法将 datatable 内容映射到 excel 表格中。
  • savetofile 方法用于保存文件,支持多种 excel 格式。

导出效果示意图:

第三步:在 asp.net 中以流形式导出

在 web 项目中,通常需要将 excel 文件直接以下载流的方式返回:

memorystream stream = new memorystream();
workbook.savetostream(stream, fileformat.version2013);
stream.position = 0;

将此 memorystream 返回到 asp.net 控制器中,即可触发浏览器下载。

设置导出文件的格式与样式

若希望导出的 excel 文件更具可读性和专业感,可以对内容进行格式化:

// 设置表头样式
cellrange header = sheet.rows[0];
header.style.font.isbold = true;
header.style.font.fontname = "微软雅黑";
header.style.font.size = 13;
header.style.color = color.lightgray;
header.style.borders[borderslinetype.edgebottom].linestyle = linestyletype.thick;

// 设置数据行样式
for (int i =  1; i < sheet.rows.length; i++)
{
    cellrange datarow = sheet.rows[i];
    datarow.style.font.fontname = "黑体";
    datarow.style.font.size = 11;
    datarow.borderinside();
}

// 设置日期列的显示格式
cellrange datecolumn = sheet.range[2, 4, sheet.rows.length + 1, 4];
datecolumn.style.numberformat = "yyyy-mm-dd";

// 自动调整列宽
sheet.allocatedrange.autofitcolumns();

关键方法说明:

  • style: 控制字体、颜色、边框、数字格式等;
  • autofitcolumns(): 自动调整列宽以适应内容;
  • numberformat: 格式化日期、货币等数据类型;
  • borderinside(): 添加内边框,增强表格可读性。

格式化效果示意图:

常见问题及解决方案

问题描述解决方法
文件无法打开或提示损坏检查是否正确关闭流,且文件后缀与格式匹配
特殊字符或中文乱码确保字符串为 utf-8 编码,字体设置支持目标语言
列宽过窄导致显示不全使用 autofitcolumns() 自动调整,或手动设置 columnwidth

总结

借助 spire.xls,开发者可轻松地将 c# 中的 datatable 导出为 excel 文件,支持 .xls 和 .xlsx 两种格式,且无需依赖 office 环境。无论是桌面应用还是 web 系统,该方法都能快速生成格式良好的 excel 报表。

常见问答(faq)

q1:如何将 datatable 转换为 excel 文件?

使用 sheet.insertdatatable() 将 datatable 写入工作表,然后调用 workbook.savetofile() 保存文件。

q2:能否在 asp.net 中导出 datatable 为 excel?

可以,在 asp.net 控制器中生成工作簿,并以流的方式返回,实现下载功能。

q3:.xlsx 与 .xls 有何区别?

.xlsx 是较新的格式,兼容 excel 2007 及更高版本;.xls 为旧版格式(excel 97-2003),行数限制为 65536 行。

以上就是使用c#将datatable导出为excel文件的实现教程的详细内容,更多关于c# datatable导出为excel的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com