正如其他人所提到的,除了 XLL 之外,还有三种基本的 Office 技术,它们是 VSTO、VBA 和 Office JS API。
我与这三者一起工作的个人经验是,无论是 VB.NET 还是 C#,VSTO 都是最强大的,因为它们本质上是相同的语言。这两种语言的未来路线图将出现分歧,因为 C# 将获得更高端的功能,而 VB.NET 将被定位为对我们来说容易,但就这一点而言,两者在 Excel 编程方面几乎没有区别。VSTO 将提供预期的功能,具有用于版本控制、发布、自动更新和回滚的内置过程,并且能够在 .NET 库中执行任何操作。
VBA 是 Office 的原始编程语言,大多数示例都基于此。您可以使用它创建相当复杂的功能区和上下文菜单,但也就是说,它将无法进行异步/线程操作,并且对于与服务相关的工作来说是轻量级的。也就是说,如果您不需要此类操作,VBA 可以工作,但您应该有一些管理版本控制和代码管理的计划,这不是 VBA 领域的一部分,将完全由您管理。
Office API 就像用 Office 编程网页,定义和使用 JS 进行操作——较新的一种利用 React 和 Angular——将 HTML 和 CSS 用于面板。我最近转换 Outlook VSTO 加载项的经验令人沮丧,因为 VSTO/VBA 中的许多易于实现的功能在 JS 中不可用或者更复杂。体验和界面虽然相当不错,但比典型的 WinForm 更好看,而且它能够在基于 Web 的办公客户端中工作,这与 VSTO 不同。
您提供的 XLL 链接用于 C++ 的包装器。这可能比任何其他类型都更复杂,虽然降低的力量有,但你需要有经验和技能才能让它变得有价值。
概要:
- 桌面:全部(VSTO、VBA、JS)
- 网络/移动:仅限 JS
- 轻松升级和代码管理:VSTO、JS
- UI: JS is better looking, VSTO/VBA is WinForm-looking
- Skills: HTML/CSS/JS (Web) vs VBA/WinForms vs VSTO/WinForms (C#/VB.NET)
- Examples: VBA, VSTO, JS, in decreasing order