BindingDataChanged在Excel Web App中不起作用

时间:2015-05-26 05:13:49

标签: javascript excel office-addins apps-for-office

我正在使用 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上的数据发生变化时,不会调用处理程序。

1 个答案:

答案 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");
}

我验证在更改单元格时,事件处理程序正常工作。

Verify the handler under Excel Online