jsapi中,Excel如何批量设置一个区域的值?

阅读次数 2

例如我要设置A1:B2的值,结果如下:

目前只能通过循环四次进行设置,伪代码如下:

for(r = 1; r <= 2; r++) {
   for(c = 1; c <= 2; c++) {
      cellRange = index_to_letter(c) + r;
      const range = await app.Range(cellRange);
      range.Value = value[r, c];
   }
}

结果是excel中一个一个单元格一次展示出来数据,而不是一次性渲染出来数据。请问有没有批量设置区域值的方法?

3 Answers

您好,可以这样设置image.png

你好,你的这种方法,设置的是一个区域中,所有的值都是一样的,我需求的是一个区域里面的值是不相同的。一个一个单元格设置也可以,目前的问题是咱们的api中获取单元格时需要await导致结果是界面渲染时是一个一个单元格刷新的,有没有类似事务的方式,我开启一个事务,设置玩了,提交后统一进行单元格渲染?

按照文档range.Value = 'xxx' 设置时,range中包含的单元格的值都是xxxx。如果在循环中设置多个单元格不同的值,则excel渲染时按单元格一个一个渲染的,如果解决?

请看如下代码:

const list = [
   ['A1', 1],
   ['A2', 2],
   ['A3', 3],
   ['A4', 4],
]

for(const item of list) {
   const range = await app.Range(item[0]);
   range.Value = item[1];
}

有没有方法 app.Range('A1:A4', [1,2,3,4])直接设置,或者如何使excel渲染刷新时一次性把整个range设置完后在渲染?

您好,可以使用二维数组设置区域不同的值。 image.png