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之间的转化.之前一直都是不考虑格式的导出,今天给出一个格式,让按照格式导出,还真把我这新手为难了一翻,网上给出的资料基本一样.为了一个单元格文字变色纠结 ...
随机推荐
- apache配置文件
httpd-vhost.conf文件中: <VirtualHost *:80> ServerAdmin webmaster@dummy-host2.example.com Do ...
- 10891 - Game of Sum
Problem EGame of SumInput File: e.in Output: Standard Output This is a two player game. Initially th ...
- 一网打尽OkHttp中的缓存问题
看到很多小伙伴对OkHttp的缓存问题并不是十分了解,于是打算来说说这个问题.用好OkHttp中提供的缓存,可以帮助我们更好的使用Retrofit.Picasso等配合OkHttp使用的框架.OK,废 ...
- CentOS(七)--Linux文件类型及目录配置
这篇随笔将会对Linux系统的文件类型以及Linux的目录结构进行详细补充(linux中目录管理和权限非常重要,特别是在linux安装数据库类软件). 一.Linux更改文件权限的两种方式 在之前的一 ...
- linux-统计行数
wc -l ls |wc -l 查看文件夹下的行数 cat/less/more +文件名|wc -l
- CF Fox And Two Dots (DFS)
Fox And Two Dots time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号
一般情况下,windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号,如下图: 这是因为Windows等操作系统用的文本换行符和UNIX/Linux操作系统用的不同,Windows系 ...
- hdu 3635 Dragon Balls
Dragon Balls Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- javascript基础知识--函数定义
函数声明式 function funname( 参数 ){ ...执行的代码 } 声明式的函数并不会马上执行,需要我们调用才会执行:funname(); * 分号是用来分隔可执行JavaScript语 ...
- Font Awesome图标字体库(2015年05月25日)
Font Awesome是一款非常棒的字体图标工具,给个地址,具体的自已慢慢去体会,只能帮你到这儿了...... http://fortawesome.github.io/Font-Awesome/ ...