我正在尝试开发一个处理所有选定范围的 Excel JavaScript 加载项。
当选择较大范围的数据时,例如 A1:O1000000,当我在获取 ctx.workbook.getSelectedRanges() 后调用 ctx.sync 方法时,桌面版 Excel 挂起强>对象。
Excel 2016 和 Excel 2019 桌面版本中也会重现该问题。 在 Excel Online(Web)中,此代码可以正常工作。
我的Excel版本是16.0.12430.20172 64位
onTestClick(e)
{
console.log("onTestClick");
Excel.run(function (ctx) {
let selectedRanges = ctx.workbook.getSelectedRanges();
selectedRanges.load(["areas", "areaCount", "address", "addressLocal"]);
selectedRanges.areas.load({ $all: false, address: true, addressLocal: true});
return ctx.sync().then(function () {
for (let index = 0; index < selectedRanges.areaCount; index++) {
let area = selectedRanges.areas.items[index];
console.log("area[" + index + "] = " + area.address);
}
}).catch(function (error) {
console.log("onTestClick sync error: " + error);
}).then(()=>{
console.log("onTestClick end");
});
}).catch(function (error) {
console.log("onTestClick Excel.run error: " + error);
});
}
最佳答案
在上面的脚本中,无需在 selectedRanges 中加载“区域”。您可以对“selectedRanges.load([“areas”,“areaCount”,“address”,“addressLocal”]);”进行一些更改到“selectedRanges.load([“areaCount”,“地址”,“addressLocal”]);“反而。修改后,可以看到结果很快就返回了。
原因是“区域”是 Excel.RangeCollection( https://learn.microsoft.com/en-us/javascript/api/excel/excel.rangecollection?view=excel-js-preview ),它返回组成此 RangeAreas 对象的矩形范围的集合。 Range(A1:O1000000) 的返回值太大,无法处理。
关于javascript - 在选择了大范围的工作簿中调用 getSelectedRanges 方法时,桌面 Excel 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60206581/