通过Office.JS获取Excel单元格绑定的问题 [英] Problem of getting the bindings for an Excel cell via Office.JS

查看:24
本文介绍了通过Office.JS获取Excel单元格绑定的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何通过Office.js获取给定Excel单元格(即单元格范围)的绑定?即已通过

设置了某些内容
Office.context.document.bindings.addFromPromptAsync(
          Office.BindingType.Text, 
          { id: "myID", promptText: ",,," }, ...

当我有了相应的范围时,我希望获得ID";myid";(或一般情况下的所有相关ID)。

在保存的Excel数据中,这种关系通过例如

<x15:webExtension appRef="{AF230FEC-BC8D-45C8-9022-AC416ADF52AF}"><xm:f>Sheet1!$A$1</xm:f></x15:webExtension>

<we:binding id="myID" type="text" appref="{AF230FEC-BC8D-45C8-9022-AC416ADF52AF}"/>

推荐答案

让我再次确认您的所有问题现在是否都已解除阻止?

来自您发布的所有三个帖子:thread1thread2thread3。我看到您有三个步骤来从范围中获取隐形值,它们现在都有效:

  1. 使用Range Address获取相关绑定对象。(使用binding.addHandlerAsync)
  2. 获取保存在绑定对象中的UUID值。
  3. 使用UUID从设置中获取实际值。

您提到:

但对于更一般的用例,问题仍然存在,但我认为使用当前的API是不可能的。

根据我的了解,我会说是的。但如果您只有几个绑定,您可以尝试迭代所有绑定,以查找哪些绑定具有您提供的相同范围(性能稍低)。

async function findBinding() {
  await Excel.run(async (context) => {
    const bindings = context.workbook.bindings;
    const sheet = context.workbook.worksheets.getActiveWorksheet();
    const myRange = "Sheet1!A1:A2";
    const cnt = bindings.getCount();
    await context.sync()
    for(let i = 0; i<cnt.value; i++){
      var r = bindings.getItemAt(i).getRange();
      r.load("address");
      await context.sync();
      if(r.address==myRange){
        var item = sheet.customProperties.getItemOrNullObject(r.address);
        item.load();
        await context.sync();
        console.log(item.value);
      }
    }
  });
}

如果您需要这个新功能:直接通过范围地址获取绑定。请在this page下提交请求,我们的PM将跟踪该请求并分配优先级。

谢谢。

这篇关于通过Office.JS获取Excel单元格绑定的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆