通过Office.JS获取Excel单元格绑定的问题 [英] Problem of getting the bindings for an Excel cell via Office.JS
本文介绍了通过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}"/>
推荐答案
让我再次确认您的所有问题现在是否都已解除阻止?
来自您发布的所有三个帖子:thread1、thread2、thread3。我看到您有三个步骤来从范围中获取隐形值,它们现在都有效:
- 使用Range Address获取相关绑定对象。(使用
binding.addHandlerAsync
) - 获取保存在绑定对象中的UUID值。
- 使用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屋!
查看全文