Ms office 将值数组指定给一个范围

Ms office 将值数组指定给一个范围,ms-office,office-js,Ms Office,Office Js,我想用一个值数组启动一系列工作表。我有以下代码 function initiate(address, values) { return Excel.run(function (ctx) { var sheet = ctx.workbook.worksheets.getActiveWorksheet(); var range = sheet.getRange(address); var range.values = values;

我想用一个值数组启动一系列工作表。我有以下代码

function initiate(address, values) {
    return Excel.run(function (ctx) {
        var sheet = ctx.workbook.worksheets.getActiveWorksheet();
        var range = sheet.getRange(address);
        var range.values = values;
        return ctx.sync()
    }
}
我的测试表明,只有当
地址
具有完全相同的维度(即高度、宽度)时,或者当
是单个值时,这才有效。否则,将出现错误

有人能证实吗

如果是这样,我需要调整
地址
,以适应
值的维度
。获取
值的维度很容易,但我无法从例如1个左上单元格+1个行数+1个列数,或1个左上单元格和1个右下单元格中获取范围

我遗漏了什么吗?

在VBA中,您将使用。在OfficeJS中,似乎有一个函数名为

[g] 设置与当前范围对象类似的范围对象,但其右下角扩展(或收缩)了一定数量的行和列

不幸的是,它接受增量值,因此需要计算当前范围大小和目标大小之间的差异。 例如,如果您想通过
cols
单元格获得一系列
,您可以尝试以下方法:

var originalRange = sheet.getRange(address);
var range = originalRange.getResizedRange(
     rows - originalRange.rowCount, cols - originalRange.columnCount);

正如CompuChip所说,目前还没有一个API可以将一个范围调整到一个特定的绝对大小,尽管它即将问世

这就是说:如果您有一个数组,只需从单个单元格开始,然后按数组的行数减号-1(即,
array.length-1
)调整其大小,然后按列减号-1(
array[0]。length-1

您可以在新的脚本实验室()中,通过单击五下鼠标来尝试这个片段。只需安装Script Lab加载项(免费),然后在导航菜单中选择“导入”,并使用以下要点URL:。看

const values = [
    [1, 2, 3],
    ["Hello", "Bonjour", "Привет"]
]

await Excel.run(async (context) => {
    const sheet = context.workbook.worksheets.getActiveWorksheet();
    const range = sheet.getRange("D3").getResizedRange(
        values.length - 1, values[0].length - 1);
    range.values = values;
    await context.sync();
});