无法使用Office.js API

时间:2017-11-08 04:48:29

标签: excel office-js

我是Excel加载项和Office.js的新手。我正在尝试探索代码加载项目。

这里我试图从命名范围读取值。首先,我尝试获取range对象,然后为range加载值。

我无法获取这些值,但此代码既不会抛出错误也不会将值打印到控制台:

Excel.run(function (ctx) {
    var range = ctx.workbook.names.getItem("MyRange").getRange();
    range.load("values");
    return ctx.sync(function () {
        console.log("required range values -> ");
        console.log(range.values);
    });
}).catch(function (e) {
    console.log("error info is" + e.message);
});

我的表格中已经有MyRange

1 个答案:

答案 0 :(得分:1)

在您发布的代码中,您在.then(...)之后错过了return ctx.sync()

以下(JavaScript)代码段获取命名范围 ExpensesHeader ,然后将该范围的值写入控制台。

Excel.run(function (ctx) {
    var sheet = ctx.workbook.worksheets.getItem("Sample");
    var myNamedItem = sheet.names.getItem("ExpensesHeader");
    var myNamedRange = myNamedItem.getRange();

    myNamedRange.load("values");

    return ctx.sync()
        .then(function () {
            console.log("values: " + JSON.stringify(myNamedRange.values));
        });
});

这是相同的片段,但在TypeScript中:

Excel.run(async (ctx) => {
    const sheet = ctx.workbook.worksheets.getItem("Sample");
    const myNamedItem = sheet.names.getItem("ExpensesHeader");
    const myNamedRange = myNamedItem.getRange();

    myNamedRange.load("values");

    await ctx.sync();

    console.log("values: " + JSON.stringify(myNamedRange.values));
});

您可以使用脚本实验室(https://aka.ms/getscriptlab)快速轻松地在Excel中自行尝试这些代码段。只需安装Script Lab加载项(免费),然后在导航菜单中选择“导入”,并使用以下GIST URL:https://gist.github.com/kbrandl/da3f56d9510329d5ea04bf00ced5c870