导出Excel(防止导出整个页面)

本文介绍如何使用ASP.NET导出GridView数据至Excel文件的方法,并通过重写VerifyRenderingInServerForm方法避免导出整个页面的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前台页面放一个GridView什么的就不说了,要注意的是在

<%@ Page Language="C#" AutoEventWireup="true" Codebehind="ReferPriceIndex.aspx.cs"EnableEventValidation="false"
    Inherits="ZTE.Fol.Fund.UI.Web.InsideTrade.ReferPrice.ReferPriceIndex" %>

标签里面加红色字体的那个属性

同时后台加上

/// <summary>
        /// 内容摘要:重写空的VerifyRenderingInServerForm方法,避免在导出Excel文件的时候出现
        /// “……必须放在具有 runat=server 的窗体标记内”的异常
        /// 另外说明:
        /// 在asp.net2.0中,控件的校验严格了,
        /// RenderControl代码只有走正常流程在render方法中它自己调用才能成功,
        /// 在自己写的事件方法中调用就会出现这个错误。
        /// </summary>
        /// <param name="control">提交控件</param>
        public override void VerifyRenderingInServerForm(Control control)
        {
        }// end VerifyRenderingInServerForm

 

这两个地方都加上,可以防止导出excel的时候导出整个页面

 

下面将将具体方法贴出来

/// <summary>
        /// 导出数据到EXCEL文件
        /// </summary>
        /// <param name="page">页面</param>
        /// <param name="gvExcel">导出的GrivView</param>
        private void ExportToExcel(System.Web.UI.Page page, GridView dgExcel)
        {
            try
            {
                foreach (GridViewRow row in dgExcel.Rows)
                {
                    foreach (TableCell cell in row.Cells)
                    {
                        cell.Style.Add("vnd.ms-excel.numberformat", "@");//给表格内容设置样式
                    } // end foreach (TableCell cell in row.Cells)

                } // end foreach (GridViewRow row in dgExcel.Rows)

                string fileName = "OutData.xls";
                page.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);

                Response.Clear();
                Response.Buffer = true;
                Response.Charset = "utf-8";
                Response.Write("<meta http-equiv=Content-Type content=text/html;charset=utf-8>");
                Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
                Response.ContentType = "application/ms-excel";

                dgExcel.Page.EnableViewState = false;
                System.IO.StringWriter tw = new System.IO.StringWriter();
                System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(tw);
                dgExcel.RenderControl(hw);

                // 输出DataGrid内容
                Response.Write(tw.ToString());
                Response.End();
            }
            catch (Exception ex)
            {
                ZTE.Fol.Framework.Common.Util.WebUtil.MessageBox(this.Page, ex.Message);
            }
        }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值