asp.net导出Excel 按照预定格式,以及解决导出乱码
protected void ToExcel()
{ //新建一个Gridview,原因:避免当前窗口GridView外层没有直接跟form标签,从而避免“gridview1未包含在run='server'”的错误。
GridView gvOrders = new GridView();
System.IO.StringWriter sw = new System.IO.StringWriter();
//定义页面输出格式。
Response.Write("<meta http-equiv=Content-Type content=\"ms-excel; charset=utf-8\">");
//定义文件名称
string fileName = System.Web.HttpUtility.UrlEncode(DateTime.Now.ToString("_yyyyMMddHHmmss"), Encoding.UTF8);
//取得数据源
DataTable dt = (DataTable)Session["dt"];//在repeater数据绑定的时候,预先将dt赋值给Session
//设置Excel网格(注意XML内容,定义Sheet工作簿名称和网格线)
if (dt != null)
{ sw.WriteLine("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");
sw.WriteLine("<head>");
sw.WriteLine("<!--[if gte mso 9]>");
sw.WriteLine("<xml>");
sw.WriteLine(" <x:ExcelWorkbook>");
sw.WriteLine(" <x:ExcelWorksheets>");
sw.WriteLine(" <x:ExcelWorksheet>");
sw.WriteLine(" <x:Name>" + fileName + "</x:Name>");
sw.WriteLine(" <x:WorksheetOptions>");
sw.WriteLine(" <x:Print>");
sw.WriteLine(" <x:ValidPrinterInfo />");
sw.WriteLine(" </x:Print>");
sw.WriteLine(" </x:WorksheetOptions>");
sw.WriteLine(" </x:ExcelWorksheet>");
sw.WriteLine(" </x:ExcelWorksheets>");
sw.WriteLine("</x:ExcelWorkbook>");
sw.WriteLine("</xml>");
sw.WriteLine("<![endif]-->");
sw.WriteLine("</head>");
sw.WriteLine("<body>");
sw.WriteLine("<table style=font-size:15px>");
sw.WriteLine(" <tr style=font-size:17px;font-weight:bold;font-family:Arial>");
//根据数据库表 生成列标题,注意这里根据需要的列名设置标题和获取数据
for (int i = ; i < dt.Columns.Count; i++)
{
if (i == )sw.WriteLine(" <td>标题</td>");
if (i == ) sw.WriteLine(" <td>发布人</td>");
if (i == ) sw.WriteLine(" <td>添加时间</td>");
if (i == ) sw.WriteLine(" <td>最新状态</td>");
}
sw.WriteLine(" </tr>");
//根据数据库表 生成列数据
for (int i = ; i < dt.Rows.Count; i++)
{ sw.WriteLine(" <tr>"); for (int j = ; j < dt.Columns.Count; j++)
{
if (j == || j == || j == || j == ) //根据数据库表 根据需要的列获取数据
{
if (j == )
{
if (dt.Rows[i][j].ToString().Trim() == "") sw.WriteLine(" <td>未签收</td>");
else sw.WriteLine(" <td style=color:red>已签收:" + dt.Rows[i][j] + "</td>"); }
else sw.WriteLine(" <td>" + dt.Rows[i][j] + "</td>");
}
} sw.WriteLine(" </tr>"); }
sw.WriteLine("</table>");
sw.WriteLine("</body>");
sw.WriteLine("</html>"); Response.Clear();
//应用缓存
Response.Buffer = true; Response.Charset = "utf-8";
//设置 文件的名称
Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");
//设置 内容格式。
Response.ContentType = "application/ms-excel";
//设置 输出编码
Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
this.EnableViewState = false; System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
//不允许翻页
gvOrders.AllowPaging = false;
//不允许排序
gvOrders.AllowSorting = false;
//绑定数据源
gvOrders.DataSource = dt;
gvOrders.DataBind();
//写入HtmlTextWriter
gvOrders.RenderControl(hw);
//Response.Write(sw.ToString());//换成下面这句可以解决乱码
Response.Write("<meta http-equiv=\"content-type\" content=\"application/vnd.ms-excel; charset=utf-8\"/>" + sw.ToString());
Response.End();
}
}
最终效果

asp.net导出Excel 按照预定格式,以及解决导出乱码的更多相关文章
- html table表格导出excel的方法 html5 table导出Excel HTML用JS导出Excel的五种方法 html中table导出Excel 前端开发 将table内容导出到excel HTML table导出到Excel中的解决办法 js实现table导出Excel,保留table样式
先上代码 <script type="text/javascript" language="javascript"> var idTmr; ...
- [转]tableExport.js 导出excel 如果有负数或是空值 导出前面会自动加上单引号
原文地址:https://blog.csdn.net/private66/article/details/88718285 tableExport.js 导出excel 如果有负数或是空值 导出前 ...
- .net解决数据导出excel时的格式问题
在项目中一般都需要将报表数据导出到EXCEL中,但经常出现导出长串数据(如身份证)到EXCEL中后显示为科学计数法的格式,或者报表中显示为001的数据导出到Excel后成了1的格式. 下面简单介绍一下 ...
- RDLC - 后台代码直接导出Excel/PDF/Word格式
最近做报表功能,用到了.net的报表组件rdlc. 其中有个功能就是后台代码直接输出Excel/PDF/Word格式的文件,网上看了些资源,做个总结: 参考地址 我直接贴出代码: //自动导出exce ...
- 导出excel按照指定格式
1.项目有个需求,要按照特定格式 导出Excel表格. 正常的都是一行 ,下面是数据.这次有个变动,就是每隔 几列要换行,下面是数据.在下面是数据部分.花了一上午写了下需求,不难但是花时间 //实现特 ...
- js导出excel:前端当前数据的导出
网上找的库文件,同样做了修改.在导出的时候,有时候数据第一列和最后一列可能是复选框和操作按钮,这个是我们不需要的,加了这个的过滤 //table2excel.js /* * jQuery table2 ...
- PHP导出excel文件之权限字段筛选导出
因为导出excel时要过滤掉不是自身权限内的数据,权限有专门的字段,所以导出的数据要具体考量,数据库权限字段是MMId,因为登录的时候MMId已存入SESSION,所以导出的时候只要判断是否在此SES ...
- Asp.net导出Excel/Csv文本格式数据
刚刚开始做Excel相关的项目,所以遇到的问题不管大小都给记录一下 偶然的机会在添加数据的时候全改成了数字,结果输出的时候全自动变成了科学计数法,这是excel的强大功能,能自动识别数字和字符串,太聪 ...
- C#导出Excel按照指定格式设置单元格属性值
最近项目中一直在写XML.Table.Excel之间的转化.之前一直都是不考虑格式的导出,今天给出一个格式,让按照格式导出,还真把我这新手为难了一翻,网上给出的资料基本一样.为了一个单元格文字变色纠结 ...
随机推荐
- eclipse ctrl+左击不能关联相应文件
<?xml version="1.0" encoding="UTF-8"?><projectDescription> <name& ...
- laraval框架model注意事项
今天创建了一个model,名字叫做Role_Users.php,结果运行的时候死活不识别,后来发现去掉名字中的下划线就可以识别了,虽然解决了,但还是不明白原理,若有大神看到但求解答
- Linux下php安装phpredis
说明:php安装目录:/usr/local/php5php.ini配置文件路径:/usr/local/php5/etc/php.iniNginx安装目录:/usr/local/nginxNginx网站 ...
- 【完结】利用 Composer 完善自己的 PHP 框架(三)——Redis 缓存
本教程示例代码见 https://github.com/johnlui/My-First-Framework-based-on-Composer 回顾 上两篇文章中我们完成了 View 视图加载类和 ...
- vi/vim使用进阶: 剑不离手 – quickfix
转载:http://easwy.com/blog/archives/advanced-vim-skills-quickfix-mode/ 本节所用命令的帮助入口: :help quickfix :he ...
- 网站安全通用防护代码(C#版本源码提供)
每一个开发者都会意识到,网站发布之前,需要进行安全检查. 那么如何拦截攻击者注入恶意代码?如何防御诸如跨站脚本攻击(XSS).SQL注入攻击等恶意攻击行为? 针对目前常见的一些安全问题,结合目前一些常 ...
- android 基础项目及开发出现:error opening trace file: No such file or directory错误解决
本身这个错误不影响运行,但是看着烦啊.解决方案几种如下: 1.xml标签不完整或者未关闭,常有的事.Eclipse并不是所有的xml标记都检查,单双标记什么的. 2.有人说,据说是 android a ...
- PHP -- four arithmetic operation
PHP 生成 简单四则运算. Thanks for Open Source. 本代码基于 jiaych php四则运算计算函数实现. <?php /*基于jiaych php四则运算计算函数 h ...
- 给jdk写注释系列之jdk1.6容器(12)-PriorityQueue源码解析
PriorityQueue是一种什么样的容器呢?看过前面的几个jdk容器分析的话,看到Queue这个单词你一定会,哦~这是一种队列.是的,PriorityQueue是一种队列,但是它又是一种什么样的队 ...
- 20个2014年最优秀的PHP框架
http://www.php100.com/html/it/mobile/2014/0813/7198.htmlhttp://medoo.in/api/select