如何使用已安装的 Office 版本在 WinForms 应用程序中查看 Microsoft Office 文档?

Posted

技术标签:

【中文标题】如何使用已安装的 Office 版本在 WinForms 应用程序中查看 Microsoft Office 文档?【英文标题】:How can I view Microsoft Office documents in a WinForms application using the installed version of Office? 【发布时间】:2011-02-07 20:33:42 【问题描述】:

我正在编写一个功能,允许用户快速浏览并快速查看大量 Word 文档。所有用户都将安装 Office 2003、2007 或 2010(这是某些其他功能所必需的)。文档(其中大部分是 Word)只需要以只读方式显示即可。

我尝试使用MSDN 上的示例,其中使用 VS2008 和 Office 2007 将 Office 文档加载到 Web 浏览器组件中。

Excel 电子表格加载得相当好,但 Word 文档出现在一个单独的窗口中,尽管没有工具栏只显示文档的正文。由于这篇文章自 2007 年以来就没有更新过,微软似乎也不再支持这种呈现 Office 文档的方式。

任何人都可以就如何成功完成这项工作提供建议吗?

我还查看了第三方组件,例如 aspose.net,它们看起来很棒,但许可费用相当高,而且考虑到所有用户都已经安装了 Office,这似乎有点过头了。

【问题讨论】:

【参考方案1】:

我在msdn forum 上找到了解决方案。

问题是我使用的测试 .NET 项目构建为“Any CPU”,它在 64 位 Windows 上作为 64 位进程运行。

我安装了 32 位版本的 Office 2007。

将 .NET 项目配置更改为 x86,WebBrowser 组件能够在其自己的窗口中托管 Word 文档。

我仍然不明白为什么 Excel 能够在以 Any CPU 运行时加载到 WebBrowser 中。

【讨论】:

【参考方案2】:

尝试将注册表中 HKCR\Word.Document.12 和 HKCR\Word.Document.8 下的 BrowserFlags 设置为 0x80000024。

更多信息请参见http://support.microsoft.com/kb/982995。

【讨论】:

正如我在下面回答的 - 我的机器上的问题是由于尝试在 64 位 Web 浏览器组件中加载 32 位 word 文档。这些注册表设置看起来仍然很有帮助 - 感谢您提供信息!【参考方案3】:

我认为要让 Office 应用程序不显示在单独的窗口中,您必须更改该文件类型的 Windows 资源管理器文件夹设置。

来自this MSDN page:

Internet Explorer 使用在同一窗口中浏览选项来确定文档是托管在活动窗口内还是单独的窗口内。如果文档托管在单独的窗口中,则不会加载和运行自定义项。要访问 Word 文档或 Excel 工作表的在同一窗口中浏览选项,请打开 Windows 资源管理器,单击工具菜单,然后单击文件夹选项强>。在文件类型选项卡上,在文件类型列表中选择DOCXLS,点击高级,然后验证在同一窗口中浏览已被选中。

【讨论】:

不幸的是,此选项在 Windows 7 中不再存在。我也尝试更改 BrowserFlags 注册表设置,但不幸的是,这对 Office 2007 也没有任何影响【参考方案4】:

您是否考虑过将文档导出为 pdf 格式?

免费的 Adob​​e 阅读器 只读 如果需要,可以保存以供日后查看 可以打印

【讨论】:

您对如何在 WinForms 应用程序中显示 pdf 文档有什么建议吗?

以上是关于如何使用已安装的 Office 版本在 WinForms 应用程序中查看 Microsoft Office 文档?的主要内容,如果未能解决你的问题,请参考以下文章

无法安装64位office,因为已有32位版本怎么办

2016版本卸载后,再重新安装还是2016版本

如何安装localdb 2016

office2016安装32位,怎么还是显示2010

已激活office2016了还能安装visio2016吗?

无法安装64位office,因为已有32位版本怎么办