如何在IE中打开电子表格后停止Excel 2003挂起?

我有一个通过IE 7提供Excel文件的Web应用程序。它通过一个URL返回一个HTTP GET请求文件,该URL返回一个内容types为'application / vnd.ms-excel'的数据。 然后它在IFrame中打开电子表格。

这一切工作正常,除非电子表格下载时Excel已经打开。 在这种情况下,它仍然正确显示,但重新使用打开的Excel的实例。 IFrameclosures时,Excel挂起。 如果用户退出Web应用程序或者他们下载了不同types的文件,则Excel将仅被解锁。

我尝试打开“工具”下的“忽略其他应用程序”设置 选项| 一般,但没有解决问题。

我也试着按照这个答案中的步骤(因为链接的引用说'这个问题已经在Excel 2007 beta 2中解决了'),没有运气。

是否有某种“处理”步骤,我目前没有做,这将防止Excel挂?

版本:

Excel 2003(11.8220.8221)SP3

IE 7.0.5730.11(更新版本:0)

不知道这是否有帮助,但…

我很久以前就有一些类似的问题(即时生成CSV内容),我只能记住它必须用正确的响应方法进行操作。 代码是这样的

Response.Clear(); Response.Buffer = true; Response.AppendHeader("Content-Disposition", "attachment; filename=export.csv"); Response.Cache.SetCacheability(HttpCacheability.Private); Response.Cache.SetExpires(DateTime.MinValue); Response.Cache.SetLastModified(DateTime.Now); Response.Cache.SetMaxAge(new TimeSpan(1)); Response.ContentType = "text/csv"; Response.ContentEncoding = System.Text.Encoding.Unicode; ... //Some writing to the Response.OutputStream ... Response.Flush(); //I am not sure about the following line: Response.End(); 

除了Robert的回答 ,下面的(Java)代码行修复了这个问题,因为它阻止了Excel挂起:

 response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\""); 

[NB'response'是一个HttpServletResponse]

但是,它会强制电子表格加载到Excel窗口中,而不是显示在IFrame中。

更新:将IFrame的URL重置为空将强制处理Excel实例并修复此问题(不需要进行Content-Disposition更改)。

不幸的是,这完全是你的手中。 这真的取决于他们有什么版本的Excel,以及已经应用了哪些更新。

你能在自己的环境中重现这个问题吗? 否则,可能是客户计算机上的问题。 有没有什么办法可以找出安装了哪些选项,或者是否使用补丁维护了Excel?

在我看来,办公室本身需要重新安装,如果不是IE 7之后。

我也会研究任何iFrame结束的问题。 为了testing这个理论,你可以发布iframe到一个新的页面(没有iframe),然后用iframe和excel文件链接回页面? 我意识到,可能不会是一个工作的解决scheme,但它应该帮助你消除是否是优秀的,IE7或iframe代码有一个错误。

这是你能够复制的东西,还是某个客户向你报告的东西,而你试图追捕它?

您提供的链接处理多个显示器 – 我有多个显示器,当我停靠我的笔记本电脑时,我发现一些应用程序没有反应良好。 例如,如果应用程序尝试在不再存在的桌面空间中打开模式对话框(例如,在我的笔记本电脑的“第二个显示器”上),它会locking应用程序,因为我可以没有去的框。 这可能是在这里发生了什么?

如果您在获取Excel文件时要求用户进行某种身份validation,则会发生另一个潜在问题。 在我们的SharePoint站点上,Excel需要用户进行身份validation,如果该模式身份validation对话被推入后台,则不可能再次走到前台。 唯一的办法是,如果你杀了进程或closures了Sharepoint浏览器,因为这首先终止了对文件的请求。

希望这有助于,如果其中任何一个给你更多的线索,张贴在这里,我们会得到解决。