Microsoft Office.js Excel加载项-使用javascript / react检索工作表/工作簿的唯一ID

萨加尔

我们已经建立了一个Excel Task窗格,主要用于工作表。根据我们的要求,我们希望每当用户关闭excel并重新打开它时,使用唯一的ID识别excel。

从工作簿加载excel ID的示例代码:

Office.initialize = () => {
  Excel.run(function(context) {
    var sheet = context.workbook.worksheets.getItem("Sheet1");
    const worksheets = context.workbook.worksheets;
    //tried to load ID property using below code
    worksheets.load("id, name");
    worksheets.load(["items/id", "items/name"]);
    worksheets.load(["id", "name", "worksheet/id"]);
    sheet.load(["items/id", "items/name"]);
    context.sync();
    //below is the code to print excel ID
    console.log(sheet.id);
    // OR
    worksheets.items.forEach(ws => {
      console.log(`id: ${ws.id}, name: ${ws.name}`)
    });
  }).catch(function(error) {
    console.log(error.debugInfo);
  });
}

我们收到以下错误:

未捕获的RichApi.Error:属性'id'不可用。在读取属性值之前,请在包含的对象上调用load方法,并在关联的请求上下文上调用“ context.sync()”。

伦彭施泰因

.sync()方法是异步的,并返回需要等待的promise。

因此,Office.js中的sync()API调用返回一个Promise第一段

使用承诺的解决方案:

  Office.initialize = () => {
    Excel.run(function (context) {
      var sheet = context.workbook.worksheets.getItem("Sheet1");
      sheet.load(["items/id", "items/name"]);
      context.sync().then(() => {
        console.log(sheet.id);
      });
    });
  }).catch(function(error) {
    console.log(error.debugInfo);
  });
}

使用异步/等待的解决方案:

  Office.initialize = () => {
    Excel.run(async function (context) {
      var sheet = context.workbook.worksheets.getItem("Sheet1");
      sheet.load(["items/id", "items/name"]);
      await context.sync()
      console.log(sheet.id);
    });
  }).catch(function(error) {
    console.log(error.debugInfo);
  });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自Microsoft Office加载项taskpane.js的MySQL驱动程序模块的空引用

使用Office JS API的Office VSTO加载项与Office加载项

通过Office.js API将customXmlParts与Excel加载项一起使用

在Excel office-js加载项中获取当前登录的用户

Office JS-刷新加载项版本

我的第一个Excel Office JS加载项ActiveX问题

使用异步执行上下文为Office.js Javascript Word加载项添加子例程

如何在Angular 6中使用Microsoft Office-js定义Excel

分发Microsoft.Office.Tools Dll和Office加载项

Office JS加载项

用于Excel的工作簿级别的Office加载项

通过Office加载项(Word JS)使用Microsoft Graph访问SharePoint

将SSO与Office.js Excel加载项结合使用-如何设置令牌的受众群体?

Office-JS加载项在多个打开的Excel中有问题

office.js中开发的Microsoft Word加载项可以支持Mobile Word应用程序吗?(我知道Outlook加载项支持移动设备)

如何在Office JS Excel加载项的自定义函数中使用令牌授权请求数据?

具有要求Excel JS API 1.9的方法的Office加载项在Office 2016上运行。这怎么可能?

使用Microsoft.Office.Interop Word和Excel

Office 2007的Microsoft.Office.Interop.Excel

我可以使用Microsoft.Office.Interop.Excel在未安装Microsoft Office Pack的系统上创建Excel文件吗?

Office 2013的Excel加载项

无法从Microsoft Office JavaScript加载项向Trello进行身份验证

Excel Office加载项API工作表保护密码

C#使用Microsoft.Office.Interop.Excel读取数据

使用Office.js在MS Word加载项中加载Excel文件

如果工作表名称中有连字符 (-),Office.js Excel 加载项命名绑定将不起作用

我们可以在 Office.js 加载项中加载 Excel 文件吗

StorageEvent 在 Office 加载项中如何工作?

Word Offic.js 加载项运行另一个 Office.js