一个数据提供者想要开发Excel加载项,这些是要求:
1)它可以安装在桌面上.它在Ribbon中添加了一个菜单和按钮,它还提供了一些特定的功能(以获取实时数据,如Bloomberg功能).
2)加载项应在Excel 2007,2010,2013和2016中使用.
问题是应该使用哪种技术来创建此加载项.以下是我的一些想法:
1)Excel的JavaScript API不适合,因为它不适用于Excel 2007,2010.
2)VSTO.有谁知道VSTO加载项是否适用于Excel 2013和2016?是否可以构建一个适用于所有Excel 2007,2010,2013和2016的VSTO加载项?
3)Excel的C API.似乎C API for Excel用于构建XLL.有谁知道Excel的C API是否可以构建菜单和按钮?
最佳答案 以下是一些观点:
> JavaScript API,它们是基于网络的插件,因此您的插件无法在没有互联网的情况下运行,但似乎您的解决方案适用于数据提供商,因此我认为您的客户将拥有互联网.正如您所说,它不适用于2013年之前的版本.见here
> VSTO,可能是最好的选择,但您需要了解与Excel 2013和之前版本之间的MDI / SDI相关的重大更改.其他小的调整可能会出现(图像idmso,一些事件..)但VSTO 2007应该是2016年兼容. VSTO 2016不存在,最新版本是2010(版本4.0运行时).您应该在开发期间定期测试它以检查兼容性.
>可以通过Excel C Api(使用xlfAddMenu和xlfAddToolbar)添加菜单(下拉列表)和工具栏,但不能添加需要COM接口IRibbonExtensibility的功能区控件.因此,添加控件到rubbon的唯一方法是通过COM技术(来自VSTO的基础).自2007版本以来,Excel C API没有更改,因此它将与所有版本完全兼容.您可以在Excel C API 2010 SDK中找到一个工作示例(不在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来说它似乎是一个很好的候选者.