【问题标题】:Build an add-in and UDF for all the Excel versions为所有 Excel 版本构建加载项和 UDF
【发布时间】:2016-11-08 02:20:05
【问题描述】:

一个数据提供者想要开发一个 Excel 插件,这些是要求:

1) 它可以安装在桌面上。它在 Ribbon 中增加了一个菜单和按钮,还提供了一些特定的功能(获取实时数据,如 Bloomberg 功能)。

2) 加载项应在 Excel 2007、2010、2013 和 2016 中运行。

问题是应该使用哪种技术来创建这个插件。以下是我的一些想法:

1) JavaScript API for Excel 不适合,因为它不适用于 Excel 2007、2010。

2) VSTO。 有人知道 VSTO 加载项是否适用于 Excel 2013 和 2016?; 是否可以构建一个适用于所有 Excel 2007、2010、2013 和 2016 的 VSTO 加载项?

3) Excel 的 C API。似乎 Excel 的 C API 用于构建 XLL。 有谁知道 C API for Excel 是否可以构建菜单和按钮?

【问题讨论】:

    标签: excel vsto excel-addins xll custom-functions-excel


    【解决方案1】:

    这里有几点:

    1. JavaScript API ,它们是基于 Web 的插件,因此您的插件在没有互联网的情况下将无法工作,但您的解决方案似乎适用于数据提供商,因此我假设您的客户将拥有互联网。正如您所说,它不适用于 2013 年之前的版本。见here

    2. VSTO,可能是最好的选择,但您需要了解 Excel 2013 和以前版本之间与 MDI/SDI 相关的重大变化。可能会出现其他小的调整(图像 idmso,一些事件..),但 VSTO 2007 应该与 2016 兼容。 VSTO 2016 不存在,最新版本是 2010(版本 4.0 运行时)。您应该在开发期间定期对其进行测试以检查兼容性。

    3. 可以通过 Excel C Api(使用 xlfAddMenu 和 xlfAddToolbar)添加菜单(下拉列表)和工具栏,但不能添加需要 COM 接口 IRibbonExtensibility 的功能区控件。 因此,向 rubbon 添加控件的唯一方法是通过 COM 技术(来自 VSTO 所基于的)。 Excel C API 自 2007 版本以来没有更改,因此它将完全兼容所有版本。您可以在 Excel C API 2010 SDK 中找到一个工作示例(not 在 2013 SDK 中 - 这部分已被删除),在文件 GENERIC.C 中,请参阅xlAutoOpen 函数。另请注意,很难找到有关它的信息。

    在我看来,您有两种可能性:1) 通过 VSTO 实现所有内容或 2) 通过 Excel C API 实现您的例程并通过仅用于功能区控件的 VSTO 插件与其交互。我建议您使用第一个解决方案 (VSTO),您会找到更多关于它的文档。

    编辑:

    刚刚意识到您的问题也与 UDF 有关。有三种方法可以将 UDF 添加到 Excel:通过 VBA、通过 COM 自动化和通过 Excel C API。 UDF 的最佳选择无疑是 EXCEL C API,但存在一个开源项目,可以在 C# 中“包装”这个 API,请参阅 Excel DNA。

    编辑 2:

    作为 VSTO 的替代品,仍然在 Net 中,有 NetOffice project on Codeplex 值得一试,他们声称他们支持所有 Excel 版本。它对 UDF 部分没有帮助,但对于 GUI,它似乎是一个不错的选择。

    【讨论】:

    • 如果我使用 Excel C API + VSTO(用于功能区),我可以使用 VSTO 2010,因为 Excel 2010 之前没有功能区?
    • 感谢您的回答...所以我使用纯 VSTO,我应该使用 VSTO 2007(而不是 2010)来确保与所有版本的兼容性? VSTO 2007 允许我创建也可以在 Excel 2007 中使用的 UDF?
    • 您应该使用 VSTO 2010,它适用于 2007 - 请参阅 en.wikipedia.org/wiki/Visual_Studio_Tools_for_Office 但我仍然建议您定期测试您的开发人员,excel 2007 中有一个功能区,因此您可以控制就像 2010-2016 年一样。 Excel C API + VSTO 似乎是更好的选择。最后请注意,它不适用于 Mac Osx,因为 Excel C API + VSTO 都不支持
    • + 你不能用 VSTO 创建 UDF
    • XLL 2013 SDK 就足够了,它针对所有版本的 excel。如果您想了解更多关于 XLL 的信息,您应该阅读 Steve Dalton 的书(使用 C / C++ 中的 Excel 插件开发的金融应用程序)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多