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

这一切都正常,除非下载电子表格时Excel已经打开。在这种情况下,它仍然可以正确显示,但重用已打开的Excel实例。关闭IFrame时,Excel挂起。只有当用户退出Web应用程序或者下载不同类型的文件时,Excel才会解锁。

我尝试启用工具|下的'忽略其他应用程序'设置选项|一般但它没有解决问题。

我也尝试按照中的步骤进行操作这个答案(作为链接引用说”此问题已在Excel 2007 beta 2中得到解决。“但没有运气。

我目前没有做某种“处置”步骤会阻止Excel挂起吗?

版本:

Excel 2003(11.8220.8221)SP3

IE 7.0.5730.11(更新版本:0)

有帮助吗?

解决方案 2

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

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

[NB'响应'是HttpServletResponse]

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

更新:将IFrame的网址重置为空白会强制处理Excel实例并解决此问题(无需更改 Content-Disposition )。

其他提示

不确定这是否有帮助......

很久以前我遇到了一些类似的问题(动态生成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(); 

不幸的是,这完全不在您手中。这实际上取决于他们拥有的excel版本以及已应用的更新。

您是否能够在自己的环境中重现此问题?如果没有,它可能是客户端计算机上的问题。有什么方法可以找出哪些选项已经安装或未安装,或者Excel是否已经使用它的补丁进行维护?

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

我还会研究任何iFrame关闭问题。要测试此理论,您可以将iframe发布到新页面(没有iframe),然后链接回包含iframe和excel文件的页面?我意识到这可能不适合你,但它应该可以帮助你消除它是否优秀,IE7或iframe代码有错误。

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

您提供的链接涉及多台显示器 - 当我停靠笔记本电脑时,我还有多台显示器,而且我发现许多应用程序响应不好。例如,如果某个应用程序试图在桌面空间中打开一个不再存在的模式对话框(例如,在我的笔记本电脑上取下后,在我的“第二个显示器”上),它将锁定应用程序,因为我无法上架。这可能是这里发生的事情吗?

如果您在获取Excel文件时要求用户进行某种身份验证,则会出现另一个潜在问题。在我们的sharepoint站点上,Excel希望用户进行身份验证,如果该模式身份验证对话框以某种方式被推送到后台,则无法再次进入前端。唯一的方法是,如果您终止进程或关闭sharepoint浏览器,那么首先会终止对该文件的请求。

希望这会有所帮助,如果其中任何一个能为您提供更多线索,请将它们发布到此处,我们将解决这个问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top