Excel office-js API - 将值插入空白 sheet

Excel office-js API - Insert values to a blank sheet

如何将值插入空白 sheet?
我目前知道的插入值的方法是检索范围,然后使用 values 属性 插入值,例如

range.getRange("A1:" + cellBottomRight);
range.load("values");
context.sync().then(function () {
    range.values = twoDimensionalArrayOfValues;
});

是否有更简单的方法,即使用单个函数来简单地插入值,而不是首先检索范围?

谢谢!

编辑:
我一直在尝试创建一个新的 sheet,然后向其中插入一个二维数组,它的值将从单元格 A1 开始插入。
到目前为止,我设法做到了以下几点:

let neeSheet = context.workbook.worksheets.add("New sheet");
newSheet.activate();
newSheet.getRange("A1").values = twoDimensionalArray;
context.sync();

但是没用。

我怎样才能让它工作?
谢谢!

如果您只想设置值,实际上不必加载范围,因此您可以这样做:

var range = ctx.workbook.worksheets.getItem("Sheet1").getRange("A1");
range.values = [["Value"]];
return ctx.sync();

(添加此答案以响应@avi12 添加到上述问题 "EDIT" 下的新信息)

Philip 上面的回答正确地展示了如何将单个值插入到工作表的单元格 A1 中。为了解决您在(更新的)问题中描述的特定场景,这里有一些代码片段(一个在 TypeScript 中,另一个在 JavaScript 中)展示了如何创建一个新的工作表,然后将数据添加到工作表,使用二维数据数组。这里要指出的关键是,我通过使用 getResizedRange(传入数组的维度)来检索范围,以便范围的大小与数据的大小相匹配设置我正在插入其中。

注意:您可以使用 Script Lab (https://aka.ms/getscriptlab). Simply install the Script Lab add-in (free), then choose "Import" in the navigation menu, and use the following GIST URL: https://gist.github.com/kbrandl/01c4faf352c34286188311c1198f6307.

打字稿:

async function run_TS() {
    try {
        await Excel.run(async (context) => {

            // define values that will be inserted into new sheet
            let values = [["A1", "B1", "C1"], ["A2", "B2", "C2"]]; 

            // create and activate new sheet
            let sheets = context.workbook.worksheets;
            let newSheet = sheets.add("New sheet TS");
            newSheet.activate();

            // add data to the new sheet
            let range = newSheet.getRange("A1").getResizedRange(values.length - 1, values[0].length - 1);
            range.values = values;

            // sync
            await context.sync();

            console.log("Finished with run_TS function");
        });
    }
    catch (error) {
        OfficeHelpers.UI.notify(error);
        OfficeHelpers.Utilities.log(error);
    }
}

JavaScript:

function run_JS() {
    Excel.run(function (context) {

        // define values that will be inserted into new sheet
        var values = [["A1", "B1", "C1"], ["A2", "B2", "C2"]];

        // create and activate new sheet
        var sheets = context.workbook.worksheets;
        var newSheet = sheets.add("New sheet JS");
        newSheet.activate();

        // add data to the new sheet
        var range = newSheet.getRange("A1").getResizedRange(values.length - 1, values[0].length - 1);
        range.values = values;

        // sync        
        return context.sync()
            .then(function () {
                console.log("Finished with run_JS function");
            });
    })
        .catch(function (error) {
            OfficeHelpers.UI.notify(error);
            OfficeHelpers.Utilities.log(error);
        });
}