private void ExpertControl(System.Web.UI.Control repeater, DocumentType type)
{
//设置Http的头信息,编码格式
if (type == DocumentType.Excel)
{
//Excel
Response.AppendHeader("Content-Disposition", "attachment;filename=result.xls");
Response.ContentType = "application/ms-excel";
}
else if (type == DocumentType.Word)
{
//Word
Response.AppendHeader("Content-Disposition", "attachment;filename=result.doc");
Response.ContentType = "application/ms-word";
}
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
//关闭控件的视图状态
repeater.Page.EnableViewState = false;
//初始化HtmlWriter
System.IO.StringWriter writer = new System.IO.StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(writer);
repeater.RenderControl(htmlWriter);
//输出
Response.Write(writer.ToString());
Response.End();
}
//文档类型
public enum DocumentType
{
Word,
Excel
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
调用方法:
ExpertControl(this, DocumentType.Word);
这是将整个页面导出为Word
//this可以为具体的控件如datagrid/dataList或page表示当前页,DocumentType为导出的文件格式(Excel/word)
注意:当为datagrid或dataList控件时,在导出Excel/word文件时,必须把控件的分页、排序属性去除并重新绑定,否则将出现
"类型“DataGridLinkButton”的控件“DataGrid1__ctl14__ctl1”必须放在具有 runat=server 的窗体标记内。"错误!