ASP.NET:页面保存为WORD出现的问题!
生活随笔
收集整理的這篇文章主要介紹了
ASP.NET:页面保存为WORD出现的问题!
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
通常項目開發需要把頁面上指定內容保存為WORD/EXCEL等文件形式,網上采用比較簡單的方法如下:
Codeprotected?void?btnPageToWord_Click(object?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方法,如下所示。
Codepublic?override?void?VerifyRenderingInServerForm(Control?control)?
{?
????//base.VerifyRenderingInServerForm(control);?
}?
?
轉載于:https://www.cnblogs.com/lne818/archive/2008/09/03/1282959.html
總結
以上是生活随笔為你收集整理的ASP.NET:页面保存为WORD出现的问题!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2024 款奥迪 RS Q8 汽车曝光:
- 下一篇: 使用ADOMD.NET获取Analysi