1

我有一个通过 IE 7 提供 Excel 文件的 Web 应用程序。它使用 HTTP GET 从 URL 请求文件,该 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)

4

5 回答 5

1

罗伯特的回答之后,以下 (Java) 代码行解决了这个问题,因为它可以防止 Excel 挂起:

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

[NB 'response' 是一个 HttpServletResponse]

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

更新:将 IFrame 的 URL 重置为空白会强制释放 Excel 实例并修复此问题(无需Content-Disposition更改)。

于 2009-01-30T12:38:28.040 回答
1

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

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

于 2009-01-30T20:22:41.363 回答
0

不幸的是,这完全不在你的掌控之中。这实际上取决于他们拥有的 excel 版本以及应用了哪些更新。

于 2008-10-14T14:25:25.147 回答
0

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

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

我还会调查任何 iFrame 关闭问题。为了测试这个理论,您可以将 iframe 发布到新页面(没有 iframe),然后链接回带有 iframe 和 excel 文件的页面?我意识到这对你来说可能不是一个可行的解决方案,但它应该可以帮助你消除它是否是 excel、IE7 或 iframe 代码有错误。

于 2009-01-27T17:55:57.657 回答
0

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

您提供的链接涉及多台显示器 - 当我对接笔记本电脑时,我也有多台显示器,我发现许多应用程序响应不佳。例如,如果一个应用程序试图在不再存在的桌面空间中打开一个模式对话框(例如,在我的笔记本电脑断开连接后,在我的“第二台显示器”上),它会锁定应用程序,因为我可以不要靠近盒子。这可能是这里发生的事情吗?

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

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

于 2009-01-30T17:03:32.060 回答