把Gridview中的数据导出到Excel的通用类

 /// <summary>
        /// 把Gridview中的数据导出到Excel
        ///
        /// 使用方式:
        ///
        /// 1.如果是使用了updatepanel或在母版页中使用了updatepanel,则在后台代码的Load里面加上

       ///  ScriptManager.RegisterPostBackControl(导出控件按钮(名称即可)); 或
        /// ((ScriptManager)Master.FindControl("ScriptManager1")).RegisterPostBackControl(导出控件按钮(名称即可));
        ///
        /// 2.在后台代码加上
        ///  public override void VerifyRenderingInServerForm(Control control)
        ///{
        /// }
        ///
        /// 3.在前台源里面的 <%@ Page %> 加上 EnableEventValidation = "false"
        /// 
       /// </summary>
        /// <param name="page">当前页面,this.Page</param>
        /// <param name="getGridView">要导出的GridView</param>
        public static void ExportExcel(System.Web.UI.Page page, System.Web.UI.WebControls.GridView getGridView)
        {

            System.Web.HttpContext.Current.Response.Clear(); //将缓冲区中的所有数据流内容全部清除
            System.Web.HttpContext.Current.Response.Buffer = true; //设置是否将数据流缓冲输出
            System.Web.HttpContext.Current.Response.Charset = "GB2312";//设置输出流的http字符集格式
            //导出文件为 Excel
            System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DateTime.Now.ToString("yyyy-MM-dd") + ".xls", System.Text.Encoding.UTF8)); //在数据流前添加http头
            //attachment --- 意为作为附件下载
            //inline --- 意为在线打开
            //filename如过是中文,则可以用HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8)进行编码,以解决文件名乱码的问题
            System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
            System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";//设置输出文件类型为excel文件。
            page.EnableViewState = false;
            System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
            System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
            System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
            getGridView.RenderControl(oHtmlTextWriter);

            //Response.Write("<html><head><meta http-equiv=Content-Type content=/"text/html; charset=GB2312/"></head><body>");//如果是datalist等能生成table的控件可以不加
            // Repeater1.RenderBeginTag(oHtmlTextWriter);
            //Page为要导出的对象,当前是Page,如果是DataGrid,Repeater等都可以
            System.Web.HttpContext.Current.Response.Write(oStringWriter.ToString());
            System.Web.HttpContext.Current.Response.End();
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值