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();