【问题标题】:Not able to read values from the named range using Office.js API无法使用 Office.js API 从命名范围读取值
【发布时间】:2017-11-09 04:06:33
【问题描述】:

我是 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

【问题讨论】:

    标签: excel office-js


    【解决方案1】:

    在您发布的代码中,您在return ctx.sync() 之后缺少.then(...)

    以下 (JavaScript) 代码 sn-p 获取命名范围 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));
            });
    });
    

    这是相同的 sn-p,但在 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));
    });
    

    您可以使用 Script Lab (https://aka.ms/getscriptlab) 在 Excel 中自己快速轻松地尝试这些代码 sn-ps。只需安装 Script Lab 插件(免费),然后在导航菜单中选择“导入”,并使用以下 GIST URL:https://gist.github.com/kbrandl/da3f56d9510329d5ea04bf00ced5c870

    【讨论】:

    • 乐于助人!您能否将我的答案标记为“已接受”,以便其他人将来更有可能从此信息中受益?谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    相关资源
    最近更新 更多