DataGrid內容的導出

對於WORD、EXCEL文件,可以使用下面的方法(以下以EXCEL爲例):

   Response.Clear();
   Response.Buffer= true;
   Response.Charset="GB2312";    Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls");  Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//設置輸出流爲簡體中文
   Response.ContentType = "application/ms-excel";//設置輸出文件類型爲excel文件。
   this.EnableViewState = false;    System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
   System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);    DataGrid1.RenderControl(oHtmlTextWriter);    Response.Write(oStringWriter.ToString());    Response.End();


這裏使用了DataGrid的RenderControl方法,該方法輸出DataGrid格式化的Html內容到一個Writer,這樣,我們就可以在服務器端獲得DataGrid的Html格式的代碼了。

由於WORD、EXCEL都是帶格式化的,所以能輕鬆識別HTML格式的內容,但對TEXT文件就不行了,上面的代碼輸出的TXT文件將是包含HTML格式的TXT文件,而不是想象中的DATAGRID的文本內容。解決辦法是採用HTMLCONTROL。

HTMLCONTROL都有innerHTML和innerText兩個屬性,這裏就利用這兩個屬性實現文本的導出:

HtmlGenericControl div=new HtmlGenericControl();

div.innerHTML=oStringWriter.ToString();

div.innerText就是要輸出的文本了,所以上面的代碼修改爲:

Response.Clear(); 
Response.Buffer= true; 
Response.Charset="GB2312";    
Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls");
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//設置輸出流爲簡體中文
Response.ContentType = "application/ms-excel";//設置輸出文件類型爲excel文件。 
this.EnableViewState = false;    System.IO.StringWriter oStringWriter = new
System.IO.StringWriter(); 
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);    
DataGrid1.RenderControl(oHtmlTextWriter); 

HtmlGenericControl div=new HtmlGenericControl();
div.InnerHTML=oStringWriter.ToString();
Response.Write(div.InnerText);   

Response.End(); 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章