【问题标题】:C# based excel-functions within Office.js javascript API possible?Office.js javascript API 中基于 C# 的 excel 函数可能吗?
【发布时间】:2016-11-28 21:24:31
【问题描述】:

我目前正在使用 Office javascript API 开发一个工具。但是,我想提供一个自己的 Excel 函数(类似于 =SUM(A1:A5)),它基于 C# 中的代码。

从用户的角度来看,有什么方法可以避免发布两个单独的插件?我可以将这两种技术结合到一个插件中吗?

【问题讨论】:

  • 嗨,已经感谢您提出的所有好建议。但是,实际上我想依靠新的 JS API 的优点(它运行在某种浏览器中),但是通过一些额外的功能来扩展 Windows 机器上的范围(这显然在其他系统上不可用,但是JS部分将是)。不幸的是,使用 VSTO 插件会使在该插件中使用 JS 代码变得更加复杂。我考虑过浏览器 ActiveX 元素,但这带来了其他复杂性。所以,新的 API 似乎更适合。有没有其他的想法来处理它?

标签: excel ms-office office-addins office-app


【解决方案1】:

如果您只针对 Excel 的桌面版本,则可以创建 VSTO 加载项,而不是基于 JavaScript 的加载项。在此添加中,您可以在 VSTO 项目中包含自定义函数的代码,并确保它们已正确注册。一种解决方案可能是创建您自己的基于 MSI 的安装程序,例如使用 Windows Installer XML (WIX) 或 Nullsoft 的 NSIS 工具。

使用这种“经典”VSTO 插件技术,您将无法在 Mac、移动平台或浏览器中定位 Excel Online。

【讨论】:

  • 对我来说,创建 udf(用户定义函数)的最佳桌面插件解决方案是 excel dna excel-dna.net
【解决方案2】:

是的,还有一种替代解决方案,可以按照 Dirk 的建议使用 VSTO 或 ExcelDNA 创建桌面 C# 插件。

javascript 网络插件只是一个带有库的网页:office.js 填补了您的逻辑和办公室主机应用程序之间的空白。

为什么不将输入传递给用 C# 编写的 API(这可以是或不是为加载项提供服务的同一服务器)来进行计算? javascript 仅用于传递数据并在电子表格中设置计算结果。

【讨论】:

    【解决方案3】:

    我使用 ILMerge 来合并我的 dll。您可以将其添加为构建后命令,以便在成功构建时合并它们。

    【讨论】:

    • ILMerge 用于合并 .NET 程序集,但这里我们处理不同的技术(基于 C# 的 Office 插件和基于 JavaScript 的 Office 插件),因此它没有任何帮助.
    猜你喜欢
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    相关资源
    最近更新 更多