繁体   English   中英

如何检测用户使用的是 Excel 在线版还是 Excel 桌面版

[英]How do I detect if the user is using Excel online or Excel desktop

我已经看到了另一个答案,但我无法让它发挥作用,我也不能再问一个问题。

如何确定 Office 加载项是在 Excel 还是 Excel Online 下运行?

我发现经常出现 Excel Online 与 Excel Desktop 的行为不同的情况。 我知道它应该但它没有,所以我真的需要能够控制行为让我摆脱热点。

我如何知道我使用的是哪个版本的 Excel。

我已经看到以下代码,但它只是挂起我的 javascript:

if (Microsoft.Office.WebExtension.context.document instanceof OSF.DDA.ExcelWebAppDocument) {
                                //Your app running on the web
                            }

if (Microsoft.Office.WebExtension.context.document instanceof OSF.DDA.ExcelDocument) {
                                //Your app running in excel
                            }

问题与 OSF.DDA 有关....这些在我的智能感知中没有出现,所以我想知道,我是否缺少某些东西?

快速回答是您可以检查加载项是否在 iframe 中运行:

if(window.top == window){
    // the add-in is not running in Excel Online
}

但是,我们建议您检查您需要的实际行为或能力——这种方法在未来的变化中会更加稳健。 假设您需要当前在 Excel Online 中不可用的特定 Excel API。 然后按照指定 Office 主机和 API 要求的指南进行操作。 例如,您可以检查:

if (Office.context.requirements.isSetSupported("ExcelApi", 1.3)){
    // use the Excel 1.3 API set which currently isn't available in Excel Online but will be in the future.
}

另一种可能性是,您实际需要的是特定的浏览器功能,根据用户访问 Office Online 所使用的浏览器,该功能可能不可用。 然后我推荐的解决方案再次是直接检查您需要的功能,例如:

if(window.localStorage){
    // the browser that the user is accessing Excel Online with has the local storage capability that you need.
}

-Michael(Office 插件的 PM)

我使用了无脚本选项。 函数 INFO 在桌面 excel 中工作,但在基于 Web 的视图中出错。

=信息(“目录”)

在桌面视图中它给出了一个路径,在 web 中它给出了错误,所以我使用 =ISERROR() 来检查使用了哪个视图。

目前的做法是:

if (Office.context.platform === Office.PlatformType.OfficeOnline) {
   ...
}

就像ranno说的,但我用...

=IFERROR(IF(INFO("system")="pcdos","PC","Net"),"Net")

因为就我而言,Mac 和 Web 一样糟糕。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM