range.format.fill 被认为是只读的,但应该是可读写的

range.format.fill is being considered as read-only, but should be read-write

当我尝试更改 range.format.fill 属性 时,JavaScript 引发错误,指出我无法在严格模式下更改只读 属性 值。也许格式(或填充)对象在内部声明为只读 属性 并且应该是 read/write?当我尝试使用 range.clear 时,我成功了,很艰难,这就是为什么我认为错误是在格式或填充上,而不是在范围内。

密码是:

(function () {
    "use strict";

    // The initialize function must be run each time a new page is loaded
    Office.initialize = function (reason) {
        $(document).ready(function () {
            app.initialize();

            $('#paint-range').click(paintRange);
        });
    };

    function paintRange() {
        Excel.run(function (ctx) {
            var range = ctx.workbook.names.getItem("Countries").getRange();
            range.format.fill = "red";

            return ctx.sync();
        }).catch(function (error) {
            app.showNotification("Error", error);
        })
    }

})();

我在以下位置收到错误消息:

range.format.fill = "red";

您得到的错误实际上是正确的。 "Fill" 不是原始的 属性 -- 它是一个 API 对象(又名 "navigation property")。对于您要尝试执行的操作,您需要指定要修改的实际 属性 - 在本例中为 color:

range.format.fill.color = "red"

有关原始属性与 API 对象属性的说明,请参阅 http://buildingofficeaddins.com/loading-properties/

的 "Scalar vs. navigation properties – and their impact on load behavior" 部分