【问题标题】:support different Office versions with Office Automation通过 Office 自动化支持不同的 Office 版本
【发布时间】:2018-11-03 16:32:45
【问题描述】:

我们创建了一个应用程序,它使用 Office 2007 (Excel 2007) 从 Excel 工作表中读取数据。然而。我注意到,当我想在安装了 Office 2003 的系统上部署应用程序时,它会崩溃,因为此版本的 office 需要引用其他 PIA(和其他 dll)。

我是否需要编译不同版本的应用程序才能支持不同版本的 Office,还是有更优雅的解决方案来解决这个问题?

我使用 Visual Studio 2010 (C#) 和 .Net 4.0 平台。

【问题讨论】:

    标签: c# .net office-interop


    【解决方案1】:

    当您使用 .NET 4 时,您可以使用“嵌入式”PIA(也称为“无 PIA”)。更改 Office 参考上的选项,使“嵌入互操作类型”为 True。

    只要你只使用你部署的机器上支持的 Office 功能,你应该没问题。

    这也意味着: - 您无需担心 PIA 本身不存在于目标机器上 - 原始 COM 接口中的 VARIANT 类型的任何方法或属性现在在您的代码中使用 dynamic 表示,这可以让您的生活更简单

    【讨论】:

    • 那会让我两年前的生活变得轻松得多。在 vs05 中编写 vsto 插件很麻烦。
    【解决方案2】:

    根据你是否有其他需求(你说是从excel读取数据),你可以使用OLEDB驱动连接excel文件,用SQL的方式查询。

    示例: http://codehill.com/2009/01/reading-excel-2003-and-2007-files-using-oledb/

    【讨论】:

      【解决方案3】:

      您可以参考多个 Office 版本的 PIA,并在运行时确定从哪个路由呼叫。

      【讨论】:

      • 这正是你不应该做的:blogs.msdn.com/b/andreww/archive/2007/06/15/…
      • 这实际上是一个的想法。我也想这样做,因为在我的公司中,我们安装了不同 Office 版本的系统。而且我希望我的应用支持任何版本。
      猜你喜欢
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-16
      • 2010-11-03
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多