我有一个带有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(); }
希望这对您有帮助。谢谢