我们在角度上写了一个Excel office js加载项。它具有基于用户所在工作表的不同功能。当用户切换Excel工作表时,应用程序如何知道它,以便它可以更改UI以匹配工作表的功能?
答案 0 :(得分:2)
没有换页事件。但是,一种解决方法是订阅DocumentSelectionChanged事件,然后每次检查用户的活动工作表以查看它是否发生了变化。
答案 1 :(得分:2)
更新2017年5月18日:使用ExcelApi 1.2+,您可以使用新语法
新语法如下:context.workbook.onSelectionChanged.add(yourHandler)
;
您可以使用Script Lab找到完整的示例,这是一个用于试用Office加载项代码段的免费加载项。其中一个示例包含“Selection Changed”事件摘要:
==================
原始回答:
正如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