【发布时间】:2015-03-26 01:57:14
【问题描述】:
我有一个将数据从 gridview 导出到 Excel 的 Web 应用程序。它在 Chrome 中运行良好,但在 IE 11 和 Firefox 中无法运行。当我用谷歌搜索时,我发现了很多与此相关的问题,但这个错误似乎是独一无二的。
protected void ExportToExcel(List<MapAmericas.Model.Project> Projects)
{
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.ContentEncoding = System.Text.Encoding.Unicode;
Response.AddHeader("content-disposition", "attachment;filename=MyFile" + DateTime.Now.ToString() + ".xls");
Response.Charset = "";
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());
this.EnableViewState = false;
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
GridView gv = new GridView();
gv.AutoGenerateColumns = false;
gv.RowDataBound += new GridViewRowEventHandler(dataExportExcel_ItemDataBound);
gv.DataSource = Projects;
gv.DataBind();
gv.RenderControl(htw);
Response.Write(AddExcelStyling()); //this contains the opening html elements
StringBuilder sbResponseString = new StringBuilder();
sbResponseString.Append(sw + "</body></html>");
Response.Write(sbResponseString.ToString());
Response.Flush();
Response.Close();
Response.End();
}
...我遇到的问题与无法访问 Internet 临时文件有关。我收到一个弹出窗口“加载期间的问题”和大约十几个条目:“缺少文件...临时 Internet 文件\内容\”,然后我收到一条消息“无法读取文件”。 我有一张图片来表示错误,但我无法上传图片。 当我单击其中一个链接时,它会加载我的网页而没有任何样式,并且我没有获得 excel 文件。 有谁知道会是什么问题?
【问题讨论】:
-
尝试替换响应。使用 HttpContext.Current.Resoponse。 ?
-
也尝试注释掉 Response.Flush() 看看是否也有效。
-
您不是在生成实际的 Excel 文件,而是在生成伪装成 Excel 文件的 HTML 文件。这有许多与之相关的问题。我在my blog 上描述了如何生成真正的 Excel 文件。
-
尝试了 HttpContext,Current 并且没有用...还尝试注释掉 Response.Flush 并且由于某种原因,每次尝试导出到 Excel 时都会提示我登录。我会看看梅森的做法。
标签: asp.net internet-explorer export-to-excel internet-explorer-11