表格控件(GridView)数据格式化导出到Excel并下载.

将GridView数据按照原有格式导出到Excel表格中便于编辑和打印.

效果如下.

 

 

主要代码

 

  protected   void  Button2_Click( object  sender, EventArgs e)
    
{

        GridView2.Visible 
= true;

        PrepareGridViewForExport(GridView2);
      
//  GridView2.DataBind();
        string attachment = "attachment; filename=download.xls";

        Response.ClearContent();

        Response.AddHeader(
"content-disposition", attachment);

        Response.ContentType 
= "application/ms-excel";

        StringWriter sw 
= new StringWriter();
        HtmlTextWriter htw 
= new HtmlTextWriter(sw);

        GridView2.RenderControl(htw);

        Response.Write(sw.ToString());

        Response.End();
        GridView2.Visible 
= false;
    }

       
public   override   void  VerifyRenderingInServerForm(Control control)
    
{

    }

    
private   void  PrepareGridViewForExport(Control gv)
    
{

        LinkButton lb 
= new LinkButton();

        Literal l 
= new Literal();

        
string name = String.Empty;

        
for (int i = 0; i < gv.Controls.Count; i++)
        
{

            
if (gv.Controls[i].GetType() == typeof(LinkButton))
            
{

                l.Text 
= (gv.Controls[i] as LinkButton).Text;

                gv.Controls.Remove(gv.Controls[i]);

                gv.Controls.AddAt(i, l);

            }


            
else if (gv.Controls[i].GetType() == typeof(DropDownList))
            
{

                l.Text 
= (gv.Controls[i] as DropDownList).SelectedItem.Text;

                gv.Controls.Remove(gv.Controls[i]);

                gv.Controls.AddAt(i, l);

            }


            
else if (gv.Controls[i].GetType() == typeof(CheckBox))
            
{

                l.Text 
= (gv.Controls[i] as CheckBox).Checked ? "True" : "False";

                gv.Controls.Remove(gv.Controls[i]);

                gv.Controls.AddAt(i, l);

            }


            
if (gv.Controls[i].HasControls())
            
{

                PrepareGridViewForExport(gv.Controls[i]);

            }


        }




    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值