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

时间:2016-03-17 16:38:21

标签: javascript excel api office-js

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

How to determine if an Office Add-in is running under Excel or 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有关......这些都没有出现在我的intellisense中,所以我想知道,我有什么遗失的吗?

4 个答案:

答案 0 :(得分:1)

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

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

但是,我们建议您检查所需的实际行为或功能 - 此方法对未来的更改将更加强大。我们假设您需要Excel Online中当前不可用的特定Excel API。然后按照specifying Office hosts and API requirements的指导进行操作。例如,您可以检查:

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(PM for Office加载项)

答案 1 :(得分:0)

我使用了无脚本选项。 函数INFO可在桌面excel中使用,但在基于Web的视图中会显示错误。

= INFO(“目录”)

在桌面视图中,它提供了一个路径,在网络视图中,它提供了错误,因此我使用= ISERROR()来检查使用哪个视图。

答案 2 :(得分:0)

当前执行此操作的方法是:

orc.column.index.access=false

答案 3 :(得分:-1)

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

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

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