asp.net导出数据到Excel的几种方法(1/3)
来源:互联网 发布:linux 服务脚本 编辑:程序博客网 时间:2024/05/16 10:40
asp.net导出到Excel也是个老生常谈的问题,在此归纳一下。
第一种是比较常用的方法。是利用控件的RenderControl功能,得到该控件生成的HTML,然后以Excel文件的类型输出到客户端。这种方法生成的其实是个HTML文件,只不过Excel支持HTML格式,所以使用起来似乎和真正的Excel文件没什么两样,但它终究不是Excel格式,它不能当作数据源供其他程序调用。
这种实现起来比较简单,就不多述,请看代码。
public void ExportExcel( System.Web.UI.WebControls.WebControl objControl, string strFileName)
...{
strFileName = System.Web.HttpUtility.UrlEncode(strFileName, System.Text.Encoding.UTF8);
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.Buffer = true;
System.Web.HttpContext.Current.Response.Charset = "gb2312";
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "online; filename=" + strFileName + ".xls");
System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
System.Web.HttpContext.Current.Response.ContentType = "application/ms-excel";
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("zh-CN", true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
objControl.RenderControl(oHtmlTextWriter);
objControl = null;
System.Web.HttpContext.Current.Response.Write(oStringWriter.ToString().Replace("<td", "<td STYLE='MSO-NUMBER-FORMAT:/@'"));
System.Web.HttpContext.Current.Response.Buffer = false;
System.Web.HttpContext.Current.Response.End();
}
...{
strFileName = System.Web.HttpUtility.UrlEncode(strFileName, System.Text.Encoding.UTF8);
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.Buffer = true;
System.Web.HttpContext.Current.Response.Charset = "gb2312";
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "online; filename=" + strFileName + ".xls");
System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
System.Web.HttpContext.Current.Response.ContentType = "application/ms-excel";
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("zh-CN", true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
objControl.RenderControl(oHtmlTextWriter);
objControl = null;
System.Web.HttpContext.Current.Response.Write(oStringWriter.ToString().Replace("<td", "<td STYLE='MSO-NUMBER-FORMAT:/@'"));
System.Web.HttpContext.Current.Response.Buffer = false;
System.Web.HttpContext.Current.Response.End();
}
可能出现的错误:
1、只能在执行 Render() 的过程中调用 RegisterForEventValidation;
解决办法:修改页面选项<%@ Page EnableEventValidation = "false"
还有一种办法是修改web.config的,但影响全局,这里就不推荐了。
2...必须放在具有 runat=server 的窗体标记内。
解决办法:
在页面中重写VerifyRenderingInServerForm方法,不对控件要求form容器进行验证
public override void VerifyRenderingInServerForm(Control control)
{
//这里没有内容。
}
- asp.net导出数据到Excel的几种方法(1/3)
- asp.net导出数据到Excel的几种方法(3/3)
- asp.net导出数据到Excel的几种方法(3/3)
- asp.net导出数据到Excel的几种方法(2/3)
- ASP.NET 数据导出到excel文件 浏览器客户端下载的几种方法
- asp.net导出数据到Excel的三种方法
- asp.net导出数据到Excel的三种方法
- asp.net导出数据到Excel的三种方法
- asp.net导出数据到Excel的三种方法
- Asp.Net表格导出Excel的几种方法
- 对.NET中导出数据到EXCEL的几种方法探讨
- 对.NET中导出数据到EXCEL的几种方法探讨 C1TrueDBGrid
- 对.NET中导出数据到EXCEL的几种方法探讨
- 对.NET中导出数据到EXCEL的几种方法探讨 C1TrueDBGrid
- 导出数据到Excel的几种方法
- 导出数据到Excel的几种方法
- 导出数据到Excel的几种方法
- 导出数据到Excel的几种方法
- MFC DLL向导(二)
- Eclipse+PHPEclipse+ Subversion+ TortoiseSVN
- MFC DLL向导(一)
- Squid中文权威指南 第四章(快速配置向导)
- VC/MFC Q&A 200410铪
- asp.net导出数据到Excel的几种方法(1/3)
- Squid中文权威指南 第五章(运行Squid)
- 让Java Swing显示中文更美观
- 数据结构与算法系列---字符串
- 微软VC/MFC FAQ(转)
- 不是程序员可千万别上这样的酒席
- Java Swing的新进展 -- JDK1.6 Swing GTK Look&Feel
- VC/MFC Q&A 200409铪
- Squid中文权威指南 第六章(访问控制)