通常项目开发需要把页面上指定内容保存为WORD/EXCEL等文件形式,网上采用比较简单的方法如下:

 sender, ImageClickEventArgs e)
{
    System.IO.StringWriter sw = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htw 
= new System.Web.UI.HtmlTextWriter(sw);
    
this.jjqqhb_container.Page.EnableViewState = false;
    
this.jjqqhb_container.RenderControl(htw);
    Response.Buffer 
= true;
    Response.Clear();
    Response.ClearContent();
    Response.ClearHeaders();
    Response.ContentType 
= "application/ms-word";
    Response.Charset 
= "utf-8";
    Response.ContentEncoding 
= System.Text.Encoding.GetEncoding("utf-8");
    Response.AddHeader(
"Content-Disposition""attachment;filename=1.doc");
    Response.Write(sw.ToString());
    Response.Flush();
    Response.Close(); 
}

其中jjqqhb_container包含的HTML代码就是需要转换为文件的内容

但是转换过程出现了3个小问题

(1)保存的WORD文档上出现"窗体顶端","窗体底端"等多余信息

解决办法:因为控件在<form></form>中,故有窗体信息,你可以删掉它,把控件放body里编辑

 (2)  ........会发生只能在执行 Render() 的过程中调用 RegisterForEventValidation的错误提示

解决办法:this.jjqqhb_container.Page.EnableViewState = false;或者直接修改页面
<%@ Page Language="C" EnableEventValidation = "false" AutoEventWireup="true" .....>

(3) 类型“XX”的控件“XX”必须放在具有 runat=server 的窗体标记内

解决办法:在后台文件中重载VerifyRenderingInServerForm方法,如下所示。

 VerifyRenderingInServerForm(Control control) 

    //base.VerifyRenderingInServerForm(control); 


 

相关文章: