將gridview 的數據導出EXCEL


gridview數據

 

單擊“導出EXCEL”按鈕后 

 

 

 

 

 

     1.在上面的代碼中,先將gridview綁定到指定的數據源中,然后在button按鈕(用來做導出到EXCEL的)的事件中,寫入相關的代碼。

 

     2.使用Response.AddHeader("content-disposition","attachment;filename= exporttoexcel.xls");中的filename來指定將要導出的excel的文件名,
     3.這里是exporttoexcel.xls。要注意的是,由於gridview的內容可能是分頁顯示的,因此,這里在每次導出excel時,先將gridview的allowpaging屬性設置為 false,
    4. 然后通過頁面流的方式導出當前頁的gridview到excel中,最后再重新設置其allowpaging屬性。另外要注意的是,要寫一個空的VerifyRenderingInServerForm方法(必須寫),

 

    

      ///   <summary>
    
///  導EXCEL
    
///   </summary>
    
///   <param name="sender"></param>
    
///   <param name="e"></param>
     protected  void btnExcel_Click( object sender, EventArgs e)
    {
        Response.Clear();
        Response.AddHeader( " content-disposition "" attachment;filename=FileName.xls ");
        Response.Charset =  " gb2312 ";
        Response.ContentType =  " application/vnd.xls ";
        System.IO.StringWriter stringWrite =  new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter htmlWrite =  new HtmlTextWriter(stringWrite);

        gvValueList.AllowPaging =  false;
        fun.GvDataInit(sql.selEntryTable, gvValueList, ddlMonth.SelectedValue.Trim());//綁定GV
        gvValueList.RenderControl(htmlWrite);

        Response.Write(stringWrite.ToString());
        Response.End();
        gvValueList.AllowPaging =  true;
        fun.GvDataInit(sql.selEntryTable, gvValueList, ddlMonth.SelectedValue.Trim());//綁定GV
    }

     ///   <summary>
    
///  導出EXCEL,要寫一個空的VerifyRenderingInServerForm方法
    
///   </summary>
    
///   <param name="control"></param>
     public  override  void VerifyRenderingInServerForm(Control control)
    {
         //  Confirms that an HtmlForm control is rendered for
    }


         ///   <summary>
        
///   綁定GridView數據
        
///   </summary>
        
///   <param name="sqlID"></param>
        
///   <param name="gv"></param>
         public  void GvDataInit( string sqlID, GridView gv,  string Condition1)
        {
             try
            {
                DataTable dt =  null;

                dt = BLL.SQLHandler.SearchData(sqlID, Condition1);

                 if (dt !=  null && dt.Rows.Count >  0)
                {
                    gv.DataSource = dt;
                }
                 else
                {
                    gv.PageIndex =  0;
                }

                gv.DataBind();


            }
             catch (Exception ex)
            {
                gv.PageIndex =  0;
                 throw ex;

            }
        }

 

 若報錯提示如下:

 報RegisterForEventValidation can only be called during Render()錯誤 .

<%@ Page Language="C#"   AutoEventWireup="true" CodeFile="AddEntrytable.aspx.cs" Inherits="AddEntrytable" %>
修改為

 <%@ Page Language="C#"   EnableEventValidation="false"  AutoEventWireup="true" CodeFile="AddEntrytable.aspx.cs" Inherits="AddEntrytable" %>

 

方二:

protected void btnExcel_Click(object sender, EventArgs e)
    {
        gvValueList.AllowPaging = false;
        databind();


        ToExcel(this.gvValueList, System.Web.HttpUtility.UrlEncode("test.xls", System.Text.Encoding.UTF8));
        //Response.Clear();
        //Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
        //Response.Charset = "gb2312";
        //Response.ContentType = "application/vnd.xls";
        //System.IO.StringWriter stringWrite = new System.IO.StringWriter();
        //System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

        //gvValueList.AllowPaging = false;
        //databind();
        //gvValueList.RenderControl(htmlWrite);

        //Response.Write(stringWrite.ToString());
        //Response.End();
        //gvValueList.AllowPaging = true;
        //databind();
    }
    private void ToExcel(Control ctl, string FileName)
    {
        HttpContext.Current.Response.Charset = "UTF-8";
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
        HttpContext.Current.Response.ContentType = "application/ms-excel";
        HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "" + FileName);
        ctl.Page.EnableViewState = false;
        System.IO.StringWriter tw = new System.IO.StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(tw);
        ctl.RenderControl(hw);
        HttpContext.Current.Response.Write(tw.ToString());
        HttpContext.Current.Response.End();
    }

    public override void VerifyRenderingInServerForm(Control control)
    {
        // Confirms that an HtmlForm control is rendered for
    }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM