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. Qt 学习第一步 做计划和确定目标

    接下来開始一步步深入学习Qt. 学习的第一步是整理资料,也就是找书和sample. 逛了一些论坛,推荐以下3本书 1> C++ GUI programming with Qt 4(2nd Edi ...

  2. 新一代 PHP 加速插件 Zend Opcache

    参考:http://www.laogui.com/Zend-Opcache 大家知道目前PHP的缓存插件一般有三个:APC.eAccelerator.XCache,但未来它们可能都会消失,因为PHP ...

  3. 炼数成金hadoop视频干货05

    视频地址:http://pan.baidu.com/s/1dDEgKwD 这一节是讲师助教带着动手操作写简单的开发环境的部署和两个实例 开发环境的部署:http://www.cnblogs.com/a ...

  4. App Thinning

    App Thinning 由于项目中需要开启Bitcode编译,之前对Bitcode也有些误区,故整理了下相关知识,仅供参考,如有不对,还请指出. 当前 iOS App 的编译打包方式是把适配兼容多个 ...

  5. 并发MD5计算方法

    MD5与SHA算法一样,利用他们可以计算某段数据的唯一hash值,常用做校验码.而MD5比SHA算法性能高.在我参加的一个项目中,主要用MD5码值来去重,因此对计算性能要求较高.网上有对MD5算法并行 ...

  6. tomcat初识

    1.新工作使用tomcat,顺便就把tomcat搜了搜,看了下基础 官网:http://tomcat.apache.org/ 打开官网会发现很多版本6,7,8,9,这些版本都有什么区别呢?tomcat ...

  7. CSS的总结(选择器,伪类等...)

    关于组合选择器可参考:http://www.cnblogs.com/starof/p/4453458.html 主要内容 CSS概述 CSS和HTML结合的四种方式 CSS样式优先级和代码规范 CSS ...

  8. webView中支持input的file的选择和alert弹出

    alert()弹出 input的file现选择(特别说明:不同的android版本弹出的样式不同,选择文件后自动上传) webView.setWebChromeClient(new WebChrome ...

  9. nmap命令-----基础用法

    系统漏洞扫描之王-nmap   NMap,也就是Network Mapper,是Linux下的网络扫描和嗅探工具包.   其基本功能有三个: (1)是扫描主机端口,嗅探所提供的网络服务 (2)是探测一 ...

  10. .net求两个数的最大公约数和最小公倍数

    最大公约数:指两个或多个整数共有约束中最大的一个. 最小公倍数:如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数,对于两个整数来说,指该两数共有倍数中最小的一个. /// <s ...