将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. eclipse代码编辑器中按alt+/提示No Default Proposals 的解决方法

    window-> Preferences-> Java-> Editor-> Content Assist-> Advanced 上面的选项卡Select the pro ...

  2. 怎样安装CentOS 6.6之三:磁盘分区的划分和修改

    安装 CentOS(或Linux)系统,最难的就是磁盘分区.磁盘分区需要根据自己的实际使用需要来规划,以达到最优的效果. 工具/原料   CentOS 6.6 安装包 VMware 虚拟机 一.划分方 ...

  3. nvidia-smi 查看GPU信息字段解读

    第一栏的Fan:N/A是风扇转速,从0到100%之间变动,这个速度是计算机期望的风扇转速,实际情况下如果风扇堵转,可能打不到显示的转速.有的设备不会返回转速,因为它不依赖风扇冷却而是通过其他外设保持低 ...

  4. 微信小程序WXML提供了import和include引用方式

    引入的文件需要放在pages文件下: 例如: 在pages文件下新建template文件夹,新建tem1.wxml模板文件 在其他页面中就可以引入tem1.wxml文件../template/tem1 ...

  5. 【216】◀▶ IDL 字符串操作说明

    参考:String Processing Routines —— 字符串处理函数 01   STRING 返回字符串. 02   STRCMP 比较字符串,一样返回1,不一样返回0,默认大小写敏感. ...

  6. elmo驱动器使用EAS II配置教程

    一.驱动器接线 1.1驱动器接口: 驱动器接线,需要连接两个接口,一个是反馈接口,一个是STO接口. 反馈接口,我这里使用了elmo驱动器的Port A.这个接口提供5v电源.并且可以输入旋转编码器和 ...

  7. FTP服务基础

    网络文件共享 本章内容 FTP服务 NFS服务 SAMBA服务 DAS.NAS.SAN(文件) DAS:开放系统的直连式存储(Direct-Attached Storage) 磁盘连接到本机的电脑上, ...

  8. [工具分享]wingide 6 算号代码keygen

    import string import random import sha BASE16 = '0123456789ABCDEF' BASE30 = '123456789ABCDEFGHJKLMNP ...

  9. Xcode10更新报错:library not found for -lstdc++.6.0.9

    转载链接!:https://blog.csdn.net/timtian008/article/details/82792629 由于iPhone X Max 及iOS12系统的到来,必须升级xcode ...

  10. windows7激活及office2013激活

    步骤 1.安装KMSpico 密码:dzit 2.安装.NET Framework 4 密码:vnus 3.解压KMSpico,运行文件,等待语音结束即可激活windows7及office2013 注 ...