附加所选单元格的公式

时间:2016-05-26 01:21:41

标签: ms-office office-js

我想要实现以下场景:用户选择一个包含公式的单元格,单击我的加载项的test按钮,然后我的test函数读取所选单元格的公式,将+RAND()附加到它,然后将其写回工作簿。

以下代码很好地读取了所选单元格的公式,但它没有很好地回写。我不确定(第二个)return ctx.sync()是否被正确使用。

此外,我不知道在整个场景中是否应该使用getSelectedDataAsyncsetSelectedDataAsync(而不是getSelectedRange)。

有人可以帮忙吗?

(function() {
    "use strict";

    Office.initialize = function(reason) {
        $(document).ready(function() {
            app.initialize();
            $('#test').click(test);
        });
    }
    ;

    function test() {
        Excel.run(function(ctx) {
            var selectedRange = ctx.workbook.getSelectedRange();
            selectedRange.load(["formulas"]);
            return ctx.sync().then(function() {
                console.log(selectedRange.formulas[0][0]);
                var x = selectedRange.formulas[0][0] + "+RAND()";
                selectedRange.formulas[0][0] = x;
                return ctx.sync();
            })
        }).then(function() {
            console.log("done");
        }).catch(function(error) {
            console.log("Error: " + error);
        });
    }
})();

1 个答案:

答案 0 :(得分:2)

错误在于您尝试分配给公式上下文对象中的单个元素。而是使用:

selectedRange.formulas = x;

selectedRange.formulas = [[x]];