我正在使用 office.js 库处理Office加载项(以前的办公室应用程序)。
我的应用添加了一个处理程序,以获取有关Excel工作表中数据更改的通知:
Microsoft.Office.WebExtension.select("bindings#orderBinding", onBindingNotFound)
.addHandlerAsync(
Microsoft.Office.WebExtension.EventType.BindingDataChanged,
(eventArgs) => {
console.dir('Data changed in excel');
}
);
当我在Excel中使用此应用程序时,它工作正常。 但是当我在网上运行它时,它不起作用(Excel Online)。
在网络中,处理程序已成功添加。但是当excel上的数据发生变化时,不会调用处理程序。
答案 0 :(得分:0)
我在Excel Online中测试您的代码。您报告的问题不会重现。
您可以使用“API Tutorial for Office”应用验证您的代码。只需在Onedrive中创建一个新的Excel文档,然后在“INSERT”选项卡下的“Apps for Office”中插入此应用程序。
您可以粘贴任何JavaScript源代码并运行它。
这是我的重复步骤:
首先,创建一个绑定:
Office.context.document.bindings.addFromSelectionAsync("table", { id: "orderBinding" }, function (asyncResult) {
if (asyncResult.status == "failed") {
showMessage("Action failed with error: " + asyncResult.error.message);
}
else {
showMessage("Added new binding with type: " + asyncResult.value.type + " and id: " + asyncResult.value.id);
}
});
然后将事件处理程序分配给绑定:
Microsoft.Office.WebExtension.select("bindings#orderBinding", onBindingNotFound)
.addHandlerAsync(
Microsoft.Office.WebExtension.EventType.BindingDataChanged,
function (eventArgs){
showMessage('Data changed in excel');
}
);
function onBindingNotFound(){
showMessage("The binding object was not found. "+
"Please return to previous step to create the binding");
}
我验证在更改单元格时,事件处理程序正常工作。