如何使用 office.js 中的新 api 或 Excel 对象获取 excel 单元格数据更改事件

how to get excel cell data changed event using new api or Excel object in office.js

我正在尝试了解如何使用 Excel 对象

获取单元格更改事件
Excel.run(function (ctx) {

}

2016 年就职。

Office.context.document使用的上下文是否与运行函数

使用的上下文相同

找到了这个问题的答案。 先前使用的绑定概念现在也可以使用,如示例 https://github.com/OfficeDev/office-js-docs/blob/master/reference/excel/bindingcollection.md

所示
(function () {
// Create myTable
Excel.run(function (ctx) {
    var table = ctx.workbook.tables.add("Sheet1!A1:C4", true);
    table.name = "myTable";
    return ctx.sync().then(function () {
        console.log("MyTable is Created!");

        //Create a new table binding for myTable
        Office.context.document.bindings.addFromNamedItemAsync("myTable", Office.CoercionType.Table, { id: "myBinding" }, function (asyncResult) {
            if (asyncResult.status == "failed") {
                console.log("Action failed with error: " + asyncResult.error.message);
            }
            else {
                // If successful, add the event handler to the table binding.
                Office.select("bindings#myBinding").addHandlerAsync(Office.EventType.BindingDataChanged, onBindingDataChanged);
            }
        });
    })
    .catch(function (error) {
        console.log(JSON.stringify(error));
    });
});

// When data in the table is changed, this event is triggered.
function onBindingDataChanged(eventArgs) {
    Excel.run(function (ctx) {
        // Highlight the table in orange to indicate data changed.
        var fill = ctx.workbook.tables.getItem("myTable").getDataBodyRange().format.fill;
        fill.load("color");
        return ctx.sync().then(function () {
            if (fill.color != "Orange") {
                ctx.workbook.bindings.getItem(eventArgs.binding.id).getTable().getDataBodyRange().format.fill.color = "Orange";

                console.log("The value in this table got changed!");
            }
            else

        })
            .then(ctx.sync)
        .catch(function (error) {
            console.log(JSON.stringify(error));
        });
    });
} 

})();