GridView导入至EXCEL

    ViewState["OutPut"] = "";//定义一个变量用于存储查询条件

/// <summary>
        /// 新建一个新的Gridview用于导出
        /// </summary>
        /// <param name="where">导出条件</param>
        private GridView OutPutBinder(string where)
        {
            GridView uxGridViewOutPut = new GridView();
            uxGridViewOutPut.DataSource = CardBLL.GetALL(where, "");
            uxGridViewOutPut.DataBind();
            return uxGridViewOutPut;
        }

 

        /// <summary>
        /// 导出到EXCEL
        /// </summary>
        /// <param name="FileName">导出的文件名</param>
        public void OutPutExcel(string FileName)
        {
            Response.Clear();
            Response.Buffer = true;
            Response.Charset = "GB2312";
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + FileName + ".xls");
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            Response.ContentType = "application/ms-excel";

            this.EnableViewState = false;

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

            OutPutBinder(ViewState["OutPut"].ToString()).RenderControl(oHtmlTextWriter);
            //this 表示输出本页,你也可以绑定datagrid,或其他支持obj.RenderControl()属性的控件
            Response.Write(oStringWriter.ToString());
            Response.End();
        }
        public override void VerifyRenderingInServerForm(Control control)
        {

        }

 

在实现"将GridView中的数据导出到Excel中"的时候出现了如下错误:
用户代码未处理 InvalidOperationException
只能在执行 Render() 的过程中调用 RegisterForEventValidation;
     EnableEventValidation属性是 .NET Framework 2.0 中是新增的属性,默认的情况下该属性的值为true;通过这个新增的功能ASP.NET会检查 POST方法中的所带的参数,如果认为不合法,就会抛出异常。这个设计的目的是为了防止恶意用户利用post 方法发送一些恶意数据,但是有时也会出现类似上面的错误。
只要禁止这个功能,问题就能得到解决。可以通过以下两种途径解决:
1、在Web.Config文件中:在<system.web></system.web>标记中添加如下代码:
<system.web>
      <pages enableEventValidation="false"> </pages>
</system.web>
2、在具体的.aspx页面的源代码中修改代码,如下:
<%@ Page Language="C#" EnableEventValidation="false" AutoEventWireup="true" CodeFile="GridView_Export_Excel.aspx.cs" Inherits="GridView_Export_Excel" %>

 

posted @ 2009-07-10 16:11  Hayden Han  阅读(237)  评论(0编辑  收藏  举报