ASP.NET Gridview to excel



我有一个带有Gridview的页面,当按钮单击时,我应该将数据从Gridview导出到.xls文件。我以多种方式尝试了它。这是我的代码:

protected void export_Click(object sender, EventArgs e)
    {
        Response.ClearContent();
        //Response.Buffer = true;
        //Response.ClearHeaders();
        //Response.CacheControl = "no-cache";
        //Response.AddHeader("Pragma", "no-cache");
        Response.AddHeader("Content-Disposion","attachment; filename=Clients.xls");
        Response.ContentType = "application/excel";
        StringWriter swriter = new StringWriter();
        HtmlTextWriter hwriter = new HtmlTextWriter(swriter);
        grid.RenderControl(hwriter);
        Response.Write(swriter.ToString());
        Response.End();
    }

问题是当我单击按钮时,它正在导出aspx文件。我在 stackoverflow 中尝试了所有答案,也尝试了其他来源。但是,我无法纠正它。我需要确切的原因以及一些可能的解决方案。(我也尝试了Content-type作为"application/excel""application/vn""application/vn-excel"。)

您只需关注遵循代码,它工作正常。

protected void cmdExport_Click(object sender, EventArgs e)
{
    Response.Clear();
    Response.AddHeader("content-disposition", "attachment; filename=SupplierList.xls");
    Response.ContentType = "application/vnd.xls";
    System.IO.StringWriter WriteItem = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htmlText = new HtmlTextWriter(WriteItem);
    GridView1.AllowPaging = false;
    DataTable dtSupplier = (DataTable)ViewState["dtSupplier"];
    GridView1.DataSource = dtSupplier;
    GridView1.DataBind();
    GridView1.RenderControl(htmlText);
    Response.Write(WriteItem.ToString());
    Response.End();
}

希望这对您有帮助。谢谢

最新更新