将DataSet对象导出成Excel文档

一、不带格式控制

void btnExport_Click(object sender, EventArgs e)
{
IList<string> fields = new List<string>();
IList<string> headers = new List<string>();
fields.Add("数据库字段名1");
headers.Add("Excel字段名1");
fields.Add("数据库字段名2");
headers.Add("Excel字段名2"); StringBuilder strFlag = new StringBuilder();
foreach (string head in headers)
{
strFlag.Append(head + ",");
if (head == headers[headers.Count - ])
{
strFlag = strFlag.Remove(strFlag.Length - , );
strFlag.Append("\r\n");
}
} DataSet dt = new DataSet();//从数据库获取到数据
if (dt != null && dt.Tables[].Rows.Count > )
{
foreach (DataRow row in dt.Tables[].Rows)
{
foreach (string field in fields)
{
strFlag.Append(row[field]).Append(",");
if (field == fields[headers.Count - ])
{
strFlag = strFlag.Remove(strFlag.Length - , );
strFlag.Append("\r\n");
}
}
} Page.Response.Clear();
Page.Response.Buffer = false;
Page.Response.Charset = "GB2312"; Page.Response.AppendHeader("Content-Disposition", "attachment;filename=Excel文件名.csv");
Page.Response.ContentType = "application/octet-stream"; Page.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Page.EnableViewState = false;
Page.Response.Write(strFlag.ToString());
Page.Response.End();
}
}

简洁版

二、可控制导出格式(是目前.net导出excel最适合的解决方案)

//引用NPOI.dll
//using NPOI.HSSF.UserModel;
//using NPOI.HPSF;
//using NPOI.POIFS.FileSystem;
//using NPOI.SS.UserModel; DataSet dt = new DataSet();//从数据库读取数据; HSSFWorkbook workbook = new HSSFWorkbook(); ISheet sheet1 = workbook.CreateSheet("Sheet1");
workbook.CreateSheet("Sheet2");
workbook.CreateSheet("Sheet3");//一般Excel都有三个Sheet HSSFRow row = (HSSFRow)sheet1.CreateRow();
row.CreateCell().SetCellValue("姓名");
row.CreateCell().SetCellValue("性别");
row.CreateCell().SetCellValue("年龄"); //样式,更多样式见文档
ICellStyle cellStyle_cny = workbook.CreateCellStyle();
IDataFormat format = workbook.CreateDataFormat();
//cellStyle_cny.DataFormat = format.GetFormat("¥#,##0.00;¥-#,##0.00");//价格样式
cellStyle_cny.Alignment = HorizontalAlignment.Center;//左右居中
cellStyle_cny.VerticalAlignment = VerticalAlignment.Center;//上下居中 if (dt != null && dt.Tables[].Rows.Count > )
{
for (int i = ; i < dt.Tables[].Rows.Count; i++)
{
row = (HSSFRow)sheet1.CreateRow(i + ); row.CreateCell().SetCellValue(dt.Tables[].Rows[i]["Name"].ToString());
row.CreateCell().SetCellValue(dt.Tables[].Rows[i]["Sex"].ToString()); row.CreateCell().SetCellValue(Convert.ToInt32(dt.Tables[].Rows[i]["Age"])); row.GetCell().CellStyle = cellStyle_cny;//设置样式
} } //sheet1.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(1,4,2,2)); //合并单元格,将第3列的第二行到第五行合并为一个单元格(下标从0开始) //导出
System.IO.MemoryStream ms = new System.IO.MemoryStream();
workbook.Write(ms);
Page.Response.AddHeader("Content-Disposition", string.Format("attachment; filename=我的消费记录{0}.xls", DateTime.Now.ToString("yyyyMMddHHmmssfff")));
Page.Response.BinaryWrite(ms.ToArray());
workbook = null;
ms.Close();
ms.Dispose();

导出带样式的Excel

注:

1、NPOI.dll可到官网下载,或网上搜索下载。官网:http://npoi.codeplex.com/

2、关于NPOI是什么,以及相关文档,请浏览:http://blog.csdn.net/pan_junbiao/article/details/39717443

3、导出文件名如果是中文的话会出现乱码的解决方法:

//将中文名转码之后再加入文件头
string filename = HttpUtility.UrlEncode(System.Text.UTF8Encoding.UTF8.GetBytes("文件名.xls"));
Page.Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);

补充第二点,设置所导出的文档的详细信息,就是右击文件--属性--详细信息,所看到的信息

//代码为第二点的代码补充(一些变量在第二点中声明)
DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
dsi.Company = "xx公司";
SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
si.Title = "说明标题1";
si.Subject = "主题1";
si.Comments = "备注1";
workbook.DocumentSummaryInformation = dsi;
workbook.SummaryInformation = si;

设置导出的Excel文档的详细信息

【C#】.net 导出Excel功能的更多相关文章

  1. Atitit.导出excel功能的设计 与解决方案

    Atitit.导出excel功能的设计 与解决方案 1.1. 项目起源于背景1 1.2. Js  jquery方案(推荐)jquery.table2excel1 1.3. 服务器方案2 1.4. 详细 ...

  2. 项目笔记:导出Excel功能

    1.前台这块: var ids=""; $.post("${basePath}/assets/unRegDeviceAction_getDeviceIds.do" ...

  3. 项目笔记:导出Excel功能分sheet页插入数据

    导出Excel功能分sheet页处理数据: /*导出EXCEL*/ public void createExcel() { log.info("导出Excel功能已经启动-BEGIN&quo ...

  4. vue项目导出EXCEL功能

    因为一些原因导出EXCEL功能必须前端来做,所以就研究了一下,在网上也找了一些文章来看,有一些不完整,我做完了就记录下来,供大家参考: 1.首先先安装依赖: npm install file-save ...

  5. Vue通过Blob对象实现导出Excel功能

    不同的项目有不同的导出需求,有些只导出当前所显示结果页面的表格进入excel,这个时候就有很多插件,比如vue-json-excel或者是Blob.js+Export2Excel.js来实现导出Exc ...

  6. dataTables的导出Excel功能

    Datatables它是一款基于jQuery表格插件,钟情于它操作dom的灵活.做后台的同学想必使用它能事半功倍,而且交互强.容易扩展. 我也是最近要做公司后台界面,表格涉及的很多,所以考虑使用DT, ...

  7. layui + mvc + ajax 导出Excel功能

    为了更方便,没基础的伙伴更容易理解,我尽量详细简便 省了很多代码,一步一步的试 自己引入文件 1. html 前端视图代码 Layui的数据绑定 全部代码 @{ Layout = null; } &l ...

  8. asp.net core web的导入导出excel功能

    这里主要记录下asp.net core web页面上进行导入导出excel的操作. 主要是导入,因为现在使用的很多前端框架(例如kendo ui)本身就有导出的功能. 这里使用到EPPlus.Core ...

  9. Django Admin中增加导出Excel功能

    参考: https://www.cnblogs.com/yoyo008/p/9232805.html 在使用Django Admin时, 对于列表我们有时需要提供数据导出功能, 如下图: 在Djang ...

  10. laravel-admin 自定义导出excel功能,并导出图片

    https://www.jianshu.com/p/91975f66427d 最近用laravel-admin在做一个小项目,其中用到了excel导出功能. 但是laravel-admin自带的导出功 ...

随机推荐

  1. 使用TextTest来做认定测试——本质是通过diff对比程序的运行log输出,来看测试结果和预期结果是否相同

    Welcome to TextTest.org! TextTest is an open source tool for text-based functional testing. This mea ...

  2. EnumDescription

    using System; using System.Reflection; using System.Collections; using System.Collections.Generic; n ...

  3. 如何配置xmanager

      步骤1:编辑/etc/X11/xdm/Xaccess,将下面的行:  #* # any host can get a login window 改为: * # any host can get a ...

  4. bzoj 4827 [Hnoi2017] 礼物 —— FFT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4827 首先,旋转对应,可以把 b 序列扩展成2倍,则 a 序列对应到的还是一段区间: 再把 ...

  5. 构建一个简单的Angular工程

    1.创建一个空的工程,之后用webstorm打开,添加一个bower.json文件: { "name": "AngularTpl", "depende ...

  6. tabbar

    1 tabbar不显示的问题: 命名在app.json中配置了tabbar但是不显示可能的问题: app.json中的pages中第一个路径没有在tabbar中设置 原因:app.json中配置的pa ...

  7. Docker运行MongoDB及Redis及ssh端口映射远程连接

    Docker运行MongoDB及Redis及ssh端口映射远程连接 本节内容简介 在本实验里我们将通过完成 MongoDB 和 Redis 两个容器来学习Dockerfile及Docker的运行机制. ...

  8. 在windows64位的系统上面操作操作excel程序出现异常

    1.把iis的网站程序引用池启用32位设置 2.把iis的网站程序引用池启用中标识修改为LocalSystem 2.代开cmd 输入mmc -32 添加组件服务在dcom组件中找到excel安全里添加 ...

  9. TCP 错误代码 10013: 试图以其访问权限所禁止的方式访问套接字

    大家遇到的问题可能是登录没反应,这时,大家要充分利用调试工具,调试工具可能会提示下面错误: 未能连接到 net.tcp://swk-pc:4502/chatservice.svc.连接尝试的持续时间为 ...

  10. python_re函数

    1,贪婪和非贪婪模式 重复运算符默认是贪婪的,即会进行尽可能多的匹配 代码示例: >>> import re >>> emphasis_pattern = re.c ...