javascript - 在选择了大范围的工作簿中调用 getSelectedRanges 方法时,桌面 Excel 挂起

标签 javascript excel office-js

我正在尝试开发一个处理所有选定范围的 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/

相关文章:

javascript - D3.js 分组条形图图例缺失数据

javascript - 如何在 html 中获取一组值?

excel - Vlookup 公式显示 1004 错误。解决方法也失败了

java - 在 java spring boot 中,图像没有从 excel 插入数据库?

excel - 如何在 Mac 上清除 Excel 2016 任务 Pane 加载项的客户端浏览器缓存?

office365 - Office.context.mailbox.item.body.setAsync 去除内嵌图像

javascript - 如果用户多次单击元素,如何避免竞争条件?

javascript - Chrome jquery onchange 计数器

excel - Access VBA 中的 StrSQL 错误

javascript - Office.context.mailbox.displayNewMessageForm 在移动设备中不起作用