在办公室附件

时间:2017-08-17 13:08:28

标签: office-js

我正在尝试从使用VS构建的office 365 addin获取SheetName。 以下是代码。

var ctx = new Excel.RequestContext();
        workbook = ctx.workbook;               
        var Sheet = workbook.worksheets.getActiveWorksheet();
        Sheet.load("name");
        var name;
        ctx.sync().then(function () {
            name = Sheet.name;
        });

但我无法进入ctx.sync()。然后功能。 请解释我是否遗漏了一些东西。

也可以使用上面的示例在现有工作簿中加载excel文件。 通过加载文件我的意思是说我从一个服务收到一个excel文件,我需要在当前的工作簿上显示。像在excel客户端插件中一样,我们可以在应用程序中加载excel文件

1 个答案:

答案 0 :(得分:1)

以下是一些建议:

  • 使用Excel.run而不是手动创建请求上下文。 (除此之外,这将有助于处理错误。)
  • 确保您也包含错误处理(如果没有正确的错误处理逻辑,事情可能会在没有任何迹象表明某些内容失败的情况下无声地失败)。
  • 请务必在return之前加context.sync()(即return context.sync();)。

以下是在您的方案的上下文中实现这些建议的代码段:

function getActiveWorksheet() {
    Excel.run(function (context) {
        var sheet = context.workbook.worksheets.getActiveWorksheet();
        sheet.load("name");
        return context.sync()
            .then(function () {
                console.log("The active worksheet is " + sheet.name);
            });
    })
        .catch(function (error) {
            console.log(error.debugInfo);
        });
}

关于你的最后一个问题(“也可以使用以上示例在现有工作簿中加载excel文件。”) - 我不清楚你在这里问什么。您能否提供更多关于您想要实现的目标的信息来更新您的问题?