DataGrid数据导出到Excel



网上最常见的导出代码,这个方法的优点是简单.但是缺点就是不能格式化.
如果datagrid中有linkbutton列,导出程序就会报错
类型“DataGridLinkButton”的控件“DataGrid1__ctl2__ctl0”必须放在具有 runat=server 的窗体标记内。纠正这个错误的方法就是对datagrid进行重新绑定,当然在重新绑定之前最好设置参数,这样查询的时候是LinkButton列,导出的时候是普通列或不生成该列.
我实现的方法,修改导出函数如下:
None.gif Session[ " print " ] = " 1 " ;
None.gif
None.gif
None.gifSetBind();
// 重新绑定datagrid
None.gif
Session.Remove( " print " ); // 注意:清理session的部分不能写在DataGrid1_ItemDataBound中
None.gif                        
// 因为DataGrid1_ItemDataBound是一行一行绑的.如果写在里面就
None.gif                        
// 表示绑定了第一行,等第二行的时候还是会绑定LinkButton.
None.gif

None.gifResponse.Clear(); 
None.gifResponse.Buffer
=   true
None.gifResponse.Charset
= " GB2312 " ;    
None.gifResponse.AppendHeader(
" Content-Disposition " , " attachment;filename= "   + HttpUtility.UrlEncode(FileName,Encoding.UTF8).ToString());
None.gifResponse.ContentEncoding
= System.Text.Encoding.GetEncoding( " GB2312 " ); // 设置输出流为简体中文
None.gif
Response.ContentType  =   " application/ms-excel " ; // 设置输出文件类型为excel文件。 
None.gif
this .DataGrid1.Page.EnableViewState  = false ;
None.gifSystem.Globalization.CultureInfo myCItrad 
=   new  System.Globalization.CultureInfo( " ZH-CN " , true );
None.gifSystem.IO.StringWriter oStringWriter 
=   new  System.IO.StringWriter(myCItrad); 
None.gifSystem.Web.UI.HtmlTextWriter oHtmlTextWriter 
=   new  System.Web.UI.HtmlTextWriter(oStringWriter);
None.gif
this .DataGrid1.RenderControl(oHtmlTextWriter); 
None.gifResponse.Write(oStringWriter.ToString());
None.gifResponse.End();
None.gif
None.gif
None.gif

 1  private   void  DataGrid1_ItemDataBound( object  sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
 2          {    
 3               if (Session[ " print " != null )
 4              {
 5                   if (Session[ " print " ].ToString() == " 1 " )
 6                  {
 7                      e.Item.Cells[ 0 ].Visible  = false ;
 8                      e.Item.Cells[ 1 ].Visible  = false ;
 9                      e.Item.Cells[ 2 ].Visible  = false ;                    
10                      e.Item.Cells[ 12 ].Visible   = false ;                    
11                  }        
12              }
13          }


转载于:https://www.cnblogs.com/xiazhaoxia/archive/2007/03/21/682706.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值