Export GridView to Excel

Original link:
http://mattberseth.com/blog/2007/04/export_gridview_to_excel_1.html

using  System;
using  System.Data;
using  System.Configuration;
using  System.IO;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;

///   <summary>
///  
///   </summary>
public   class  GridViewExportUtil
{
    
///   <summary>
    
///  
    
///   </summary>
    
///   <param name="fileName"></param>
    
///   <param name="gv"></param>
     public   static   void  Export( string  fileName, GridView gv)
    {
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.AddHeader(
            
" content-disposition " string .Format( " attachment; filename={0} " , fileName));
        HttpContext.Current.Response.ContentType 
=   " application/ms-excel " ;

        
using  (StringWriter sw  =   new  StringWriter())
        {
            
using  (HtmlTextWriter htw  =   new  HtmlTextWriter(sw))
            {
                
//   Create a form to contain the grid
                Table table  =   new  Table();

                
//   add the header row to the table
                 if  (gv.HeaderRow  !=   null )
                {
                    GridViewExportUtil.PrepareControlForExport(gv.HeaderRow);
                    table.Rows.Add(gv.HeaderRow);
                }

                
//   add each of the data rows to the table
                 foreach  (GridViewRow row  in  gv.Rows)
                {
                    GridViewExportUtil.PrepareControlForExport(row);
                    table.Rows.Add(row);
                }

                
//   add the footer row to the table
                 if  (gv.FooterRow  !=   null )
                {
                    GridViewExportUtil.PrepareControlForExport(gv.FooterRow);
                    table.Rows.Add(gv.FooterRow);
                }

                
//   render the table into the htmlwriter
                table.RenderControl(htw);

                
//   render the htmlwriter into the response
                HttpContext.Current.Response.Write(sw.ToString());
                HttpContext.Current.Response.End();
            }
        }
    }

    
///   <summary>
    
///  Replace any of the contained controls with literals
    
///   </summary>
    
///   <param name="control"></param>
     private   static   void  PrepareControlForExport(Control control)
    {
        
for  ( int  i  =   0 ; i  <  control.Controls.Count; i ++ )
        {
            Control current 
=  control.Controls[i];
            
if  (current  is  LinkButton)
            {
                control.Controls.Remove(current);
                control.Controls.AddAt(i, 
new  LiteralControl((current  as  LinkButton).Text));
            }
            
else   if  (current  is  ImageButton)
            {
                control.Controls.Remove(current);
                control.Controls.AddAt(i, 
new  LiteralControl((current  as  ImageButton).AlternateText));
            }
            
else   if  (current  is  HyperLink)
            {
                control.Controls.Remove(current);
                control.Controls.AddAt(i, 
new  LiteralControl((current  as  HyperLink).Text));
            }
            
else   if  (current  is  DropDownList)
            {
                control.Controls.Remove(current);
                control.Controls.AddAt(i, 
new  LiteralControl((current  as  DropDownList).SelectedItem.Text));
            }
            
else   if  (current  is  CheckBox)
            {
                control.Controls.Remove(current);
                control.Controls.AddAt(i, 
new  LiteralControl((current  as  CheckBox).Checked  ?   " True "  :  " False " ));
            }

            
if  (current.HasControls())
            {
                GridViewExportUtil.PrepareControlForExport(current);
            }
        }
    }
}


转载于:https://www.cnblogs.com/jerryhong/archive/2007/05/16/748417.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值