Office.js: 我可以设置二维数组中一系列单元格的填充吗?

Office.js: Can I set the fill of a range of cells from a 2d array?

到目前为止,对于 office.js,我已经习惯了这种模式,您可以在其中将数据数组分配给相应的 excel 范围:

 range.values = [["Eurasia", "29.96", "0.25", "15-Feb" ]];
 range.numberFormat = [[null, null, null, "m/d/yyyy;@"]];

但是,我正在尝试在不同的单元格中使用不同的颜色来更改一系列单元格的背景颜色,并且我已经有了与每个单元格相关的二维颜色数组。

据我所知,您似乎可以通过逐个遍历每个单元格来指定填充颜色:

    var rowCount = selectionRange.values.length;
    var columnCount = selectionRange.values[0].length;
    for (var row = 0; row < rowCount; row++) {
        for (var column = 0; column < columnCount; column ++) {
            if (selectionRange.values[row][column] > 50) {
                selectionRange.getCell(row, column)
                    .format.fill.color = "yellow";
            }
        }
    }

或者将一种颜色分配给整个范围:

range.format.fill.color = "yellow";  



但我正在寻找类似的东西:

range.fill = [["yellow", "red", "red", "white"]];

好像有一个类似于您设置值或numberFormat 的选项,但我没能找到它。

这个有吗,还是需要我一个一个设置?

对于格式化属性(基本上是非数组),您必须一次设置一个单元格。

我们在积压工作中有一项允许对这些属性进行类似数组的读取和设置,但我们还没有。我会再次向团队提出它,但它不在队列的最前面。

根据您数组的大小(本质上,您在一个 Excel.run 调用中创建了多少范围),可能会对性能产生一些影响。如果您 运行 在那里遇到问题,请告诉我,我可以提供更多信息(不过我建议为此打开一个单独的线程)。

顺便说一句,Script Lab.

中显示了一些有趣的一次性设置多种格式的示例