• 将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
        }
  • 相关阅读:
    Python基础语法精讲
    使用xlwt 库将数据导入为Excel 表格
    统计指定目录下所有mp4文件的时长(包含子目录下的文件)
    获取一个目录下所有文件(完整路径,要借助os.path.join()方法)
    中国参与MOOC 建设的大学有多少所?
    蒙特卡洛方法应用
    手欠,起了一卦,看那房子的风水,悲剧了
    好无聊,大半夜地找了份传世服务端源码,编着玩
    昨晚房屋的风水
    上午,写了个小东西
  • 原文地址:https://www.cnblogs.com/Snowfun/p/3582295.html
Copyright © 2020-2023  润新知