excel - 在 Excel Online 中,OfficeJS API 不再将 host_Info_ 参数传递给 Excel 加载项

标签 excel office-js

我不知道这是什么时候开始发生的,或者事情是否发生了变化,但是 _host_Info 参数没有被框架传递到我在 Excel Online 中的 Excel 加载项。

它传递一个空的 "et=" 参数,这在这种情况下是可以的,因为我处于开发模式。 Excel 桌面客户端仍然通过它。

这是我的加载项在 Excel Online 和 Excel for Windows 之间切换功能所必需的。

我检查了文档,但没有发现任何更改。

最佳答案

补充 Sudhi 的回答:根据 Sudhi 回答中的链接提供官方 API,我们已经继续并在 OfficeJsHelpers 中为 API 添加了一个“垫片”。图书馆。

shim 仍然使用 Sudhi 提到的解决方法代码 -- window.sessionStorage['hostInfoValue'] -- 但它将它包装在一个与官方 Office 中非常相似的 API 中。 js。一旦官方 API 可用,我们将切换 shim 代码以使用它。这种方法的美妙之处在于,如果你通过 NPM 包使用 OfficeJsHelpers,你所要做的就是更新你的包依赖,你会突然从一个非官方的和潜在脆弱的解决方法变成一个 100% 官方依赖的 API -公开的属性——所有这些都无需更改您自己的代码!同样,如果那时您决定切换回使用官方 Office.js 版本,API 的相似性(本质上只是 namespace 差异)应该使切换实现变得微不足道。

帮助程序 API 是 OfficeHelpers.Utilities.host(它将返回 WORDEXCEL 等。 ) 和 OfficeHelpers.Utilities.platform(将返回 IOSPCOFFICE_ONLINE,或 MAC)。这些常量在 OfficeHelpers.HostTypeOfficeHelpers.PlatformType 中定义。

您可以在 https://www.npmjs.com/package/@microsoft/office-js-helpers 找到 NPM 包,然后通过 NPM 安装它,或者使用像 Unpkg 这样的 CDN 来快速试用它:https://unpkg.com/@microsoft/office-js-helpers@0.4.2/dist/office.helpers.min.js

console.log(OfficeHelpers.Utilities.host);
console.log(OfficeHelpers.Utilities.platform);

if (OfficeHelpers.Utilities.platform === OfficeHelpers.PlatformType.OFFICE_ONLINE) {
    console.log("Yep, I'm on the web client");
}

作为临时措施,我希望以上内容对您有所帮助,一旦官方 API 发布,我们一定会更新此 StackOverflow 线程(和 OfficeJsHelpers 代码)。

关于excel - 在 Excel Online 中,OfficeJS API 不再将 host_Info_ 参数传递给 Excel 加载项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40688057/

相关文章:

excel - 默认 Excel 键盘快捷键 CTRL + ALT + F5 不再有效

javascript - 从 Outlook 加载项中访问用户签名

excel - 导出的 CSV 数据在 Excel 中无法正确显示

office365 - Office 365 加载项 - 如何隐藏任务 Pane ?

javascript - (适用于 Office 的 JavaScript API 1.3)自定义属性 GetItemOrNull

ms-word - 在任务 Pane 中单击后如何将MS Word光标集中发送回当前文档

javascript - 在 Excel Javascript API 中创建嵌入式 Web 浏览器或 iframe

excel - 将共享文件夹路径转换为 ​​UNC 路径

c# - 是否需要使用 Marshal.ReleaseComObject 释放*每个* Excel 互操作对象?

java - Apache POI 如何使用条件格式更改数据格式