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 按照预定格式,以及解决导出乱码的更多相关文章

  1. 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; ...

  2. [转]tableExport.js 导出excel 如果有负数或是空值 导出前面会自动加上单引号

    原文地址:https://blog.csdn.net/private66/article/details/88718285 tableExport.js  导出excel  如果有负数或是空值 导出前 ...

  3. .net解决数据导出excel时的格式问题

    在项目中一般都需要将报表数据导出到EXCEL中,但经常出现导出长串数据(如身份证)到EXCEL中后显示为科学计数法的格式,或者报表中显示为001的数据导出到Excel后成了1的格式. 下面简单介绍一下 ...

  4. RDLC - 后台代码直接导出Excel/PDF/Word格式

    最近做报表功能,用到了.net的报表组件rdlc. 其中有个功能就是后台代码直接输出Excel/PDF/Word格式的文件,网上看了些资源,做个总结: 参考地址 我直接贴出代码: //自动导出exce ...

  5. 导出excel按照指定格式

    1.项目有个需求,要按照特定格式 导出Excel表格. 正常的都是一行 ,下面是数据.这次有个变动,就是每隔 几列要换行,下面是数据.在下面是数据部分.花了一上午写了下需求,不难但是花时间 //实现特 ...

  6. js导出excel:前端当前数据的导出

    网上找的库文件,同样做了修改.在导出的时候,有时候数据第一列和最后一列可能是复选框和操作按钮,这个是我们不需要的,加了这个的过滤 //table2excel.js /* * jQuery table2 ...

  7. PHP导出excel文件之权限字段筛选导出

    因为导出excel时要过滤掉不是自身权限内的数据,权限有专门的字段,所以导出的数据要具体考量,数据库权限字段是MMId,因为登录的时候MMId已存入SESSION,所以导出的时候只要判断是否在此SES ...

  8. Asp.net导出Excel/Csv文本格式数据

    刚刚开始做Excel相关的项目,所以遇到的问题不管大小都给记录一下 偶然的机会在添加数据的时候全改成了数字,结果输出的时候全自动变成了科学计数法,这是excel的强大功能,能自动识别数字和字符串,太聪 ...

  9. C#导出Excel按照指定格式设置单元格属性值

    最近项目中一直在写XML.Table.Excel之间的转化.之前一直都是不考虑格式的导出,今天给出一个格式,让按照格式导出,还真把我这新手为难了一翻,网上给出的资料基本一样.为了一个单元格文字变色纠结 ...

随机推荐

  1. gulp如何自定义插件

    gulp是基于”流“的构建工具,上层流的输出就是下层流的输入,为了更好的支持链式操作,可以使用through2或者map-stream这两个库来对node stream做一层包装 这里,我们就使用th ...

  2. string 对象及其操作

    标准库类型string 标准库类型string表示可变长的字符序列,使用string类型必须首先包含string头文件.作为标准库的一部分,string定义在命名空间std中.接下来的示例都假定了已包 ...

  3. VBA Excel 单元格操作

    1. 设置单元格边框: .Range("A3:M" & l + 1).SelectWith Selection.Borders() .LineStyle = xlConti ...

  4. [转载]BigPipe技术

    1. 技术背景 FaceBook页面加载技术 试想这样一个场景,一个经常访问的网站,每次打开它的页面都要要花费6 秒:同时另外一个网站提供了相似的服务,但响应时间只需3 秒,那么你会如何选择呢?数据表 ...

  5. TCP/IP协议原理与应用笔记19:IP分组的交付和路由选择

    1. 引言: (1)互联网结构: 信息:IP分组(直接广播地址(Directed Broadcast Address),其指定了在一个特定网络中的"所有主机".) 节点:路由器.主 ...

  6. Emacs 配置 Python 编程环境

    python编程环境设置涉及到:自动完成.语法检查.虚拟环境. 为了不把系统搞乱,在python的虚拟环境中安装相关的插件. 一.安装python虚拟环境 virtualenvwrapper sudo ...

  7. git初步使用总结

    今天时隔大半年之后再一次接触了git,发现在这学期学习过一点linux之后,对git的学习变得感觉一切都是那么理所当然. 下面仅仅是罗列一下我的学习笔记. 1.下载git可以到百度软件库下载,一般都可 ...

  8. [未完成]关于Java网络编程总结

    网络的七层结构: 第一层:物理层,网线. 第二层: 数据链路层,交换机.交换机有IP地址.这一层的数据叫做帧 第三层:网络层,数据包方向的定义,路由器.现在也有具有路由功能的交换机.主要将从下层接收到 ...

  9. git 一个文件还原到某个提交的commit

    git checkout ${commit} /path/to/file 参考文献中1的参考链接中的git-checkout(1) Manual Page 中的Name: git-checkout - ...

  10. 关于IOS的蓝牙(转)

    关于IOS的蓝牙 首先,你要了解你的目的是什么,一般的IOS蓝牙开发有以下三种目的: 1. IOS设备和IOS设备之间交互 好消息是:ios6.0可以把iPhone手机当从设备了,可以两台iPhone ...