GridView Export to Excel正在导出整个aspx页面

时间:2012-03-05 19:18:41

标签: c# asp.net gridview

我正在尝试将gridview的内容导出为ex​​cel。我有一些代码:

public void ExcelDownload(object sender, EventArgs e)
    {
        Response.Clear();
        Response.Buffer = true;
        Response.Charset = "UTF-8"; 
        Response.AppendHeader("Content-Disposition", "attachment;filename=MailingList.xls");
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
        Response.ContentType = "application/ms-excel";
        this.EnableViewState = false;
        System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("EN-US", true);
        System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
        System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
        MailingList.RenderControl(oHtmlTextWriter);
        Response.Write(oStringWriter.ToString());
    }

在单击链接时运行。这很好,除了它导出整个网页,而不仅仅是gridview(MailingList)。有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

技术上说这不是导出到excel,而是发送带有错误标题的html来欺骗浏览器以使用excel打开此内容。如果您坚持使用此解决方案,则必须在单独的aspx页面上呈现GridView。

这个解决方案可能有问题,擅长自我会警告用户内容与扩展名不同,因为你发送html并且你的响应标题都说这是一个excel文件。我可以打赌,客户端上的一些反恶意软件或服务器上的类似软件会阻止此响应,因为提供的内容不同于头文件中声明的恶意软件行为。

更好地使用NPOI(xls)或/和EPPlus(xlsx)并完全控制您的Excel导出。