当我想导出excel数据网格中的数据时,我有这段代码。 数据来自SQL。我正在使用ASP.NET C#。
protected void ExportToExcel()
{
GridView gv = new GridView();
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition", "attachment;filename=Serials.xls");
Response.Charset = "";
this.EnableViewState = false;
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
dt = new DataTable();
dt = RetrieveResultsTable();
//gv.AlternatingRowStyle.BackColor = Color. #CCFFFF
gv.AlternatingRowStyle.BackColor = Color.FromArgb(204, 255, 255);
gv.DataSource = dt;
gv.DataBind();
gv.RenderControl(htw);
Response.Write(sw.ToString());
Response.Flush();
Response.Close();
Response.End();
}
当我导出它时,会产生警告/错误:
虽然我通过
修改注册表来搜索解决方案我不想修改注册表,因为这会非常麻烦,配置每个浏览器用户。
你能帮我解决这个问题吗?
答案 0 :(得分:0)
gv.RenderControl(htw)
您只是将HTML文本文件发送到客户端的浏览器伪装成XLS文件,当然Excel会抱怨。
正如Lasse所指出的,文件不会通过指定扩展名来神奇地改变其格式。查看可用的库,例如NPOI,用于从任何表格数据中创建Excel格式文件的正确方法。
此外,您应该从ASHX通用处理程序将文件发送到浏览器,该处理程序绕过大多数ASP.NET页面生命周期内容,因此您不必处理响应中的任何排队输出。 / p>