【问题标题】:Problems on loading Excel 2007 file into WebBrowser control in C#?将 Excel 2007 文件加载到 C# 中的 WebBrowser 控件时出现问题?
【发布时间】:2010-10-21 19:33:06
【问题描述】:

我需要在我们的 WinForms 应用程序中托管 Excel 电子表格。看起来将 excel 文件加载到 WebBrowser 控件中是可行的方法。网上有几篇关于这个的文章。但是,他们大多使用 Excel 2003(我猜)。 Excel 2007 提出了一些新问题:

  1. 默认情况下,Excel 电子表格会在新窗口中打开,而不是嵌入到我的 WebBrowser 控件中。基于 Microsoft,这是设计使然,但它也建议通过更改注册表设置进行修复。这不是很好,但我可能可以忍受。

  2. 通过更改注册表,我能够将 Excel 电子表格嵌入到我的 WebBrowser 控件中。但是,Excel 工作簿仍然在后台打开 - 我什至无法关闭,但是当我的 WinForm 应用程序关闭时会自动关闭。当您观察电子表格如何加载时会很有趣:它首先加载到 Excel 工作簿(在后台),然后传输到我的 WebBrowser 控件中。我怎样才能摆脱(或隐藏)这个背景窗口? 编辑:实际上,Excel 窗口没有关闭,而是置于后台。但是,在 CodeProject 的 this article 的帮助下,它可以关闭。在那篇文章中,当 WinApp 关闭时,Excel 窗口也会关闭。但是同样的函数可以用来关闭 WebBrowser 的 DocumentCompleted 事件的那个窗口。这并不完美,因为您仍然会看到屏幕闪烁,但没关系。我希望有更好的方法来做到这一点。为避免屏幕闪烁,我尝试将 Excel 窗口最小化。但是,当我尝试将 WindowState 设置为 Minimized 时,它会引发 COM 异常。有什么线索吗?如果我可以从一开始就隐藏这个禁用的窗口,那将是一个更好的解决方法。

  3. 当您第一次打开电子表格时,会弹出一个消息框,要求您选择“打开”、“保存”和“取消”。有一个复选框可以禁用它。但我不希望这个消息框出现。这是什么注册表设置?

  4. 在我的电子表格中,有一个加载项组件应该动态加载。但是,将其加载到 WebBrowser 不起作用(它找不到它)。如果我使加载项处于活动状态,它会毫无问题地加载。 WebBrowser 上是否有任何内容需要更改以使其正常工作?

在 WinForms 应用中托管 Excel 电子表格是否有更好的替代方案?

【问题讨论】:

  • 你好 Miliu 我也有同样的问题,你找到嵌入 xls 文件的更好方法了吗?

标签: .net winforms excel webbrowser-control


【解决方案1】:

如果您可以控制用户以及他们使用的 Office 版本,您可以右键单击 Visual Studio 中的菜单并将相应的 Excel 控件添加到工具箱中。您还可以通过检查注册表和错误处理来动态加载控件(由于每个控件的细微差别,这可能需要更多的工作)。

【讨论】:

  • 感谢您的快速回复。不幸的是,这似乎不是我的选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多