【问题标题】:Office js Excel Add-In Sharing state across workbooksOffice js Excel 加载项跨工作簿共享状态
【发布时间】:2022-12-01 07:48:38
【问题描述】:

我最近从开发 VBA Excel 加载项转向使用新的 Office JavaScript 加载项平台。我已经习惯了我的 VBA 加载项在整个 Excel 中处于活动状态,并且无论您正在与哪个工作簿进行交互,变量的状态都是可用的。

JavaScript 插件似乎不是这种情况。我一直在测试我的加载项,碰巧创建了一个新工作簿,并注意到所有加载项状态似乎都不再处于活动状态。

我是否遗漏了什么,或者这是新的 Office JavaScript 加载项架构在 Excel 中的浏览器中运行的结果?

只是为了确认我已经启用了共享运行时选项,这不是我的问题。我能够在命令、Takspane 和函数之间共享状态。但都在一个工作簿中。

我已经尝试了一个用于 Office 加载项的示例 Yeoman 生成器,并且在两个不同的工作簿中的加载项之间似乎确实没有共享全局变量。

【问题讨论】:

  • 肖恩,考虑使用本地存储浏览器 API 来存储应该在工作簿之间共享的状态。
  • 谢谢 Jakob,我正在研究这个选项。但与旧的插件架构相比,它肯定会使事情复杂化。我想我需要挂接工作簿的 onActivated 事件并不断检查状态是否已更改和同步。有没有其他推荐的模式来实现这一点?当用户登录时,我的加载项会加载大量数据,我不想让他们在每个工作簿中登录,我需要这个数据客户端。

标签: excel office-js office-addins excel-addins excel-web-addins


【解决方案1】:

此行为是预期的。对于 Office (web) 加载项,每个加载项都在嵌入式 JavaScript 运行时中运行,这是一个与 Office 和任何其他加载项完全独立的进程,因此它无法跨加载项共享数据。有些人使用 OfficeRuntime.storage 对象实现了加载项之间的共享,但它只适用于 Windows。它不适用于 Mac 或 Office 网页版。坦率地说,Office 平台团队认为它是一个错误,它可以在 Windows 上完成并且可能会随时修复,因此即使您知道您的加载项只会被在 Windows 上运行。

根据您的情况,您可以使用 Office.document.settingsOffice.document.customXmlParts 在文档中存储状态。另一种可能性是将状态存储在服务器端的数据库中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多