如何在office js api中识别Excel Sheet更改的事件?

时间:2016-09-28 20:05:46

标签: office-js

我们在角度上写了一个Excel office js加载项。它具有基于用户所在工作表的不同功能。当用户切换Excel工作表时,应用程序如何知道它,以便它可以更改UI以匹配工作表的功能?

3 个答案:

答案 0 :(得分:2)

没有换页事件。但是,一种解决方法是订阅DocumentSelectionChanged事件,然后每次检查用户的活动工作表以查看它是否发生了变化。

答案 1 :(得分:2)

更新2017年5月18日:使用ExcelApi 1.2+,您可以使用新语法

新语法如下:context.workbook.onSelectionChanged.add(yourHandler);

您可以使用Script Lab找到完整的示例,这是一个用于试用Office加载项代码段的免费加载项。其中一个示例包含“Selection Changed”事件摘要:

Script Lab samples list

==================

原始回答:

正如Michael Saunders所说,您可以使用选择更改事件。请参阅下面的代码。请注意,在这种情况下,我将“Office 2013”​​语法与Office 2016的较新的主机特定(“Excel。”命名空间)语法混合使用。在几个月内发布的“ExcelApi 1.3”版本中,我们实际上有一种方法可以完全使用新语法完成此操作,但目前仅在预览CDN上,并且可能无法在您的计算机上运行,​​具体取决于您的Ofice 2016版本的最新版本。与此同时,下面的代码将适用于2016年的任何安装,包括RTM。

Office.context.document.addHandlerAsync(Office.EventType.DocumentSelectionChanged, function() {
    Excel.run(function(context) {
        var sheet = context.workbook.worksheets.getActiveWorksheet();
        sheet.load("name")
        return context.sync().then(function() {
            console.log('You are now on sheet "' + sheet.name + '"');
        })
    }).catch(function(error) {
        console.log(error);
        if (error instanceof OfficeExtension.Error) {
            console.log("Debug info: " + JSON.stringify(error.debugInfo));
        }
    });    
});

答案 2 :(得分:1)

您可以为context.workbook.worksheets.onActivated

添加处理程序
Excel.run((context) => {
  context.workbook.worksheets.onActivated.add(({ worksheetId }) => {
    console.log('Selected worksheet', worksheetId)
  })

  return context.sync()
    .then(function () {
        console.log("Event handler successfully registered");
    });
}).catch(errorHandlerFunction);

更多信息here