DataGrid内容的导出

工作中可能需要把DataGrid的内容导出到其他的文件中,比如文本文件,EXCEL文件,WORD文件等等。


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

转载于:https://my.oschina.net/bv10000/blog/76804

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值