我正在寻找一种最好的方法来唯一地识别并识别Office.js Excel工作簿中的选定范围。到目前为止,我正在使用绑定来设置一个范围的名称,即。A1:A1
. 然而,它是不清楚如何检查,当用户选择上述范围,如果它是上述绑定在工作簿的一部分.设置绑定我使用下面的代码。
var myBindings = Office.context.document.bindings;
var myAddress = "Sheet1!A1:A1";
myBindings.addFromNamedItemAsync(myAddress, Office.BindingType.Matrix, { id: "myBind" }, function (asyncResult) {
asyncResult.value.getDataAsync(function (asyncResult2) {
console.log(asyncResult2.value);
});
});
你可以使用getIntersection或NullObject来检测你的选择是否在namedRanges中,它可以在getIntersection或NullObject中返回selectedRange的地址,或者它将返回null对象。
以下是示例代码
Excel.run(function (ctx) {
const selectedRange = ctx.workbook.getSelectedRange();
var binding = ctx.workbook.bindings.getItemAt(0);
var range = binding.getRange();
var sheetName = "Sheet1";
var rangeAddress = "A1:F8"; // replace to binding range address
// var rangeAddress = range.address;
var range =
ctx.workbook.worksheets.getItem(sheetName).getRange(rangeAddress).getIntersectionOrNullObject(selectedRange);
range.load('address');
console.log("test");
return ctx.sync().then(function () {
console.log("test2");
console.log(range.address);
});
}).catch(function (error) {
console.log("Error: " + error);
if (error instanceof OfficeExtension.Error) {
console.log("Debug info: " + JSON.stringify(error.debugInfo));
}
});