2

我们正在制作一个有 15 张纸的 excel 工作簿(大小约为 13 MB)。我们将数据粘贴在一张纸上,而所有其他纸上都有适量的公式链接到此数据转储表。我们需要粘贴大约。10,000 行和 30 列,每次 2500 行。我们在每 4 次迭代后(即粘贴 10,000 行后)使用 context.sync() 同步工作簿的上下文。这整个过程大约需要。总共70秒。我们尝试在每 2500 行粘贴一次后使用 context.sync() ,但这会进一步减慢进程。

await Excel.run(async function main(context) {
var totalrowcount = result.totalrows;
iterations = Math.ceil(totalrowcount / 2500);
for (i = 1; i <= iterations; i++) {
    let names = context.workbook.names;
    var rng;
    data_arr = result.data;
    data_arr.splice(0, 1);

    var rowOffset = (i - 1) * 2500;
    rng = names.getItem(rangeName).getRange().getOffsetRange(1 + rowOffset, 3);
    rng.getAbsoluteResizedRange(data_arr.length, data_arr[0].length).values = data_arr;
    rng.untrack();

    if(i % 4 == 0){
        await context.sync();
    }
    else if(i == iterations){
        await context.sync();
    }
}});
4

1 回答 1

0

您是否还尝试添加 suspendScreenUpdatingUntilNextSync 暂停对 Excel 的视觉更新,直到加载项调用 context.sync(),或者直到 Excel.run 结束(隐式调用 context.sync),如https://docs.microsoft.com/en-我们/办公室/开发/加载项/excel/性能?由于我们无法在本地重现该问题,因此如果您可以共享会话 ID 让我们查看详细日志,这将有所帮助。谢谢。

于 2021-06-29T06:41:15.510 回答