【问题标题】:.NET: If my .NET automates Office, does the customer have to have Office installed?.NET:如果我的 .NET 使 Office 自动化,客户是否必须安装 Office?
【发布时间】:2014-04-15 13:38:24
【问题描述】:

如果我创建一个程序,它在一个小的偏僻区域,使用 Excel 自动化:

当需要 Excel 时应用程序是否会失败

或者应用程序将无法启动?


更新

让我问同样的问题,但用更冗长的方式:

应用程序是否可供使用

  • 99.9% 的用户从不使用需要 Excel 的功能

  • 0% 的用户,因为未安装 Excel。

让我换个方式问同样的问题:

引用 COM 互操作 dll 的应用程序是否会初始化失败?


让我换个方式问同样的问题:

不使用 Excel 但引用 COM 互操作 DLL 的应用程序会无法启动吗?


让我换个方式问同样的问题:

如果不安装 Excel 的应用程序依赖于 Office 主互操作 dll,那么不使用 Excel 的应用程序是否可以使用?


让我换个方式问同样的问题:

如果我的应用程序不使用 Excel,用户是否必须安装 Excel?

【问题讨论】:

  • 为什么不在没有 Excel 的电脑上试试呢?
  • +1 给 Stumproot 的评论。这就是虚拟机如此出色的原因之一。避免混淆并尝试一下。

标签: c# com ms-office


【解决方案1】:

代码将正确执行,直到它尝试调用自动化库,那时它会生成一个异常。

【讨论】:

  • 具体来说,我相信它会产生一个 System.Runtime.InteropServices.COMException。如果您很好奇,这类似于“检索具有 CLSID {000209FF-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败,原因是以下错误:80040154。”
【解决方案2】:

我有一个使用 Excel 自动化的应用程序,我可以肯定地说它会在运行时失败,而不是在加载时失败。事实上,我们会检查它是否已安装,并且仅在找到时才显示“在 Excel 中显示数据”按钮(但 PIA 已部署到所有安装中)。

【讨论】:

    【解决方案3】:

    如果您将 Office 自动化...您必须拥有 Office!

    话虽如此,但如果您将问题扭曲为:我可以在客户端没有 Excel 的情况下创建 Excel 电子表格吗?

    有很多第三方控件可以做到这一点;您可以直接写入 MS SpreadML XML 规范 (http://msdn.microsoft.com/en-us/library/aa140066(office.10).aspx; 或使用第三方库 (如 http://www.carlosag.net/Tools/ExcelXmlWriter/)。

    【讨论】:

    • 那么您是说应用程序可以正常启动,但在需要 Ecxel 时会失败?
    • 如果代码是使用对 Office 对象的引用进行编译的,它将失败并出现运行时错误。但是,如果您使用反射进行后期绑定,则可以避免运行时失败。但你在倾斜风车!要么需要 Office,要么需要代码,这样你就不需要它(首选!)。
    【解决方案4】:

    我认为它在运行时会失败,因为互操作程序集应该能够在没有客户端系统上可用的 COM 组件的情况下加载。

    更新:运行时应该意味着你需要它!

    【讨论】:

    • 哪个运行时?启动时的运行时,还是使用时的运行时?
    【解决方案5】:

    在 Win32 中使用 COM,需要时会失败。

    【讨论】:

    • 同意,有关于 .NET 的见解吗?
    • .net 互操作只调用 COM 库。
    猜你喜欢
    • 2010-09-29
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多