GridView导出Excel

来源:百度知道 编辑:UC知道 时间:2024/05/30 20:41:19
我在用GridView导出Excel用的代码如下
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");
// 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!!
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.GridView1.RenderControl(oHtmlTextWriter);
Response.Output.Write(oStringWriter.ToString());
Response.Flush();
Response.End();
但是我运行的时候报如下的错误:
类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内。
但是我的GridView1确实就是在<form runat="server"></form

在cs文件里面加入下面的方法

public override void VerifyRenderingInServerForm(Control control)
{
//输出Excel文件用
}

晕死..你到aspx页面<body>下面加个<form id="f1" ruant="server">
到</body>上面加个</form>
就OK了...这个要多注意..做多了应该就知道了

大数据可能效率不是很高啊,还是自己写个代码吧,我现在用XML的方式

发生只能在执行 Render() 的过程中调用 RegisterForEventValidation的错误提示。
有两种方法可以解决以上问题:
1.修改web.config(不推荐)<pages enableEventValidation ="false" ></pages>
2.直接在导出Execl的页面修改
<%@ Page Language="C#" EnableEventValidation = "false" AutoEventWireup="true"CodeFile="ExportGridView.aspx.cs" Inherits="ExportGridView" %>
问题解决!