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

时间:2016-05-30 17:22:15

标签: office-addins office-js

我试图找出如何使用Excel对象获取单元格更改事件

Post.group(:user_id).having('posts.created_at=MAX(posts.created_at)')

在2016年的办公室。

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

中使用的上下文相同

1 个答案:

答案 0 :(得分:1)

找到了答案。 现在也可以使用前面使用的绑定概念,如示例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));
        });
    });
} 

})();