在Excel中加载WebBrowser控件在C#中的问题?

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

  1. 默认情况下,Excel电子表格在新窗口中打开,而不是embedded到WebBrowser控件中。 基于微软,这是devise,但它也build议通过更改registry设置的修复。 这不是很好,但我可以忍受。

  2. 随着registry的变化,我能够在我的WebBrowser控件中embeddedExcel电子表格。 但是,Excel工作簿仍然在后台打开 – 我甚至无法closures,但在closuresWinForm应用程序时会自动closures。 当您观察电子表格如何加载时,它很有趣:它首先加载到Excel工作簿中,然后转移到我的WebBrowser控件中。 我怎样才能摆脱(或隐藏)这个背景窗口? 编辑:其实,Excel窗口不closures,但放入背景。 但是,在CodeProject的这篇文章的帮助下,它可以被closures。 在那篇文章中,当WinAppclosures时,Excel窗口closures。 但是可以使用相同的函数closuresWebBrowser的DocumentCompleted事件上的窗口。 这不是完美的,因为你仍然看到一个屏幕闪光,但没关系。 我希望有一个更好的方法来做到这一点。 为了避免屏幕闪烁,我试图尽量减lessExcel窗口。 但是,当我尝试将WindowState设置为最小化时,它会引发COMexception。 任何线索? 如果我可以从开始隐藏这个禁用的窗口,这将是一个更好的解决方法。

  3. 当您第一次打开电子表格时,会popup一个消息框,要求您提供“打开”,“保存”和“取消”选项。 有一个checkbox来禁用它。 但我不希望这个消息箱出现过。 这是什么registry设置?

  4. 在我的电子表格中,有一个应该dynamic加载的加载项组件。 但是,加载到WebBrowser不起作用(它无法find它)。 如果我使加载项处于活动状态,则加载没有问题。 WebBrowser上有什么可以改变的?

WinForms应用程序中有更好的替代scheme来托pipeExcel电子表格吗?

如果您可以控制用户以及他们正在使用的办公室版本,则可以右键单击Visual Studio中的菜单,然后将相应的Excel控件添加到工具箱中。 您也许可以通过检查registry和error handling来dynamic加载控件(由于每个控件的细微差别,可能会有更多的工作)。