Excel office-js API - 将值插入空白工作表

时间:2017-08-14 17:57:19

标签: javascript excel office-js

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

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

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

谢谢!

修改
我一直试图创建一个新的工作表然后插入一个二维数组,它的值将从单元格A1开始插入。
到目前为止,我设法做了以下事情:

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

但没有工作。

我怎样才能让它发挥作用? 谢谢!

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

(添加此答案以回应@ avi12添加到上述问题的新信息,在“编辑”下)

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

注意: 您可以使用脚本实验室(https://aka.ms/getscriptlab)快速轻松地自行尝试这些代码段。只需安装Script Lab加载项(免费),然后在导航菜单中选择“导入”,并使用以下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);
        });
}