首页 / 脚本样式 / Ajax / ASP.NET AJAX Advance Tips & Tricks (10)
ASP.NET AJAX Advance Tips & Tricks (10)2011-10-18 Lance Zhang 解决使用AJAX Extender时的页面导出(Word/Excel)问题前言:有客户问到这么个问题:我们可以使用Response容易地将ASP.NET页面导出为Excel或Word。然而,如 果有AJAX Control Toolkit的Extender在页面上的话,则会发生错误(Extender control "XXX" is not a registered extender control)。我搜索了一下,ASP.NET forum里有很多这样的问题未能解决,故写了 这个解决方案,与大家分享。问题重现:首先,使用Response将ASP.NET页面导出为Excel或Word,代码比较简单,如下所示: public void ExportControl(System.Web.UI.Control source, DocumentType type,string name)
{
if (type == DocumentType.Excel)
{
//Excel
Response.AppendHeader("Content-Disposition", "attachment;filename="+name+".xls");
Response.ContentType = "application/ms-excel";
}
else if (type == DocumentType.Word)
{
//Word
Response.AppendHeader("Content-Disposition", "attachment;filename=" + name + ".doc");
Response.ContentType = "application/ms-word";
}
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
source.Page.EnableViewState = false;
System.IO.StringWriter writer = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter (writer);
source.RenderControl(htmlWriter);
Response.Write (writer.ToString());
Response.End();
}
public enum DocumentType
{
Word,
Excel
}