asp.net 导出 excel (含控件)

来源:互联网 发布:手机跟踪定位软件 编辑:程序博客网 时间:2024/05/02 17:45

 protected void btnImport_Click(object sender, EventArgs e)  

   {      

   if (GridViewID.Rows.Count != 0)      

   {          

   DisableControls(GridViewID);      

      Response.Clear();      

      Response.Buffer = true;      

      Response.Charset = "GB2312";      

      Response.AddHeader("content-disposition", "attachment;filename=/"" + HttpUtility.UrlEncode("文件名", System.Text.Encoding.UTF8) + ".xls/"");         

   Response.ContentEncoding = System.Text.Encoding.UTF8;        

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

     System.IO.StringWriter oStringWriter = new System.IO.StringWriter();       

     System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);        

    this.GridViewID.RenderControl(oHtmlTextWriter);       

     Response.Output.Write(oStringWriter.ToString());     

       Response.Flush();        

    Response.End();      

   }     

}  

public override void VerifyRenderingInServerForm(Control control)  

  { }       

 private void DisableControls(Control gv)   

 {       

 DropDownList dr = new DropDownList();    

    TextBox tb = new TextBox();   

     Literal l = new Literal();     

   string name = String.Empty;      

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

     {           

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

        {                             

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

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

              gv.Controls.AddAt(i, l);      

      }            

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

    {              

  DisableControls(gv.Controls[i]);           

 }      

  }  

 }