0

我希望有人能让我走上正轨。我需要将 Gridview 下载到 Excel:

Gridview 毫无问题地出现在我的 .ascx 页面上......我按下按钮执行以下代码,我得到保存或打开的提示,但后来我发现“file.xls”的格式不正确或损坏,我按 OPEN ... 我的 Excel 中什么也没有出现。我记得以前必须这样做,但我遇到了麻烦......我错过了什么:

protected void dwnLoad(object sender, EventArgs e)
        {
            Response.Clear();
            Response.AddHeader("content-disposition", "attachment; filename=kbNotification.xls");
            Response.Charset = "";
            //Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.ContentType = "application/vnd.xls";
            System.IO.StringWriter stringWrite = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWrite);
            GridView1.RenderControl(htmlWriter);
            Response.End();
        }
4

1 回答 1

0

由于我的 Gridview 在 .ascx 页面中...... default.aspx 页面必须包含两个部分:在后面的代码中:

public override void VerifyRenderingInServerForm(Control control)
        {
            return;
        }

并在顶部的 default.aspx <%@page - EnableEventValidation="false"

这是处理标签之间需要的gridview所必需的。

另外,由于某些愚蠢的原因,我的 .ascx 页面上有标签……需要取出。

那么最终完成这项工作的原因是对 OnClick 事件使用以下代码:

protected void dwnLoad(object sender, EventArgs e)
        {
            Response.Clear();
            Response.AddHeader("content-disposition", "attachment; filename=kbNotification.xls");
            Response.Charset = "";
            //Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.ContentType = "application/vnd.xls";
            System.IO.StringWriter stringWrite = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWrite);
            GridView1.RenderControl(htmlWriter);
            Response.Write(stringWrite.ToString());
            Response.End();
        }

我错过了 Response.Write ...哎呀!

现在我的 Excel 正在显示我的屏幕内容。我希望这可以帮助其他可能遇到同样问题的人。

于 2013-06-25T20:24:02.460 回答