找回密码
 立即注册

QQ登录

只需一步,快速开始

沉不住的心
中级会员   /  发表于:2021-9-6 15:12  /   查看:2221  /  回复:5
1金币

image.png121030577.png
就是当一个大约10w单元格的表中,给10w个单元格写入大量的公式,会有这5s-6s卡顿,导致不能点击单元格这种就想请问,有没有方法能让这写入公式的setarray异步执行,而不阻塞页面正常使用
image.png495966491.png

最佳答案

查看完整内容

这边根据您提供的json未能复现您的问题,请在附件中复现您的问题。另外,您也可以尝试在设置前挂起计算和恢复计算,例如

5 个回复

倒序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-9-6 15:12:01
来自 4#
沉不住的心 发表于 2021-9-6 16:11
const { sheetRangeData } = resformat;
            spread.suspendEvent();
            spread.suspen ...

这边根据您提供的json未能复现您的问题,请在附件中复现您的问题。另外,您也可以尝试在设置前挂起计算和恢复计算,例如
  1. activeSheet.suspendCalcService(false);
  2. activeSheet.setValue(0,0,1);
  3. activeSheet.setValue(0,1,2);
  4. activeSheet.setValue(0,2,10);
  5. activeSheet.getCell(1,1).formula("=SUM(A1:C1)");
  6. activeSheet.resumeCalcService(true);
复制代码


online.zip

835.2 KB, 下载次数: 43

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-9-6 15:54:16
2#
您好,请问您是如何用setarray设值的呢?是否还有设置样式等操作。建议您提供一个能复现问题的demo,这边调研一下是否有优化的空间。
回复 使用道具 举报
沉不住的心
中级会员   /  发表于:2021-9-6 16:11:27
3#
const { sheetRangeData } = resformat;
            spread.suspendEvent();
            spread.suspendPaint();
            sheetRangeData?.map((item: any) => {
              const { row, col } = (GC.Spread.Sheets.CalcEngine.formulaToRanges(activeSheet, item.rangeName)[0] as any).ranges[0]
              try {
                activeSheet.setArray(row, col, item.values, true);
              } catch (e) {
                if (e === '无效的公式') {
                  let itemss: object[] = []
                  item.values.map((items: any) => {
                    console.log(items)
                    let pdd: string[] = []
                    items.map((itemsss: any) => {
                      pdd.push(itemsss.replaceAll('"', '').replaceAll('\'', ''))
                    })
                    itemss.push(pdd)
                  })
                  activeSheet.setArray(row, col, itemss, true)
                }
              }
            });
            spread.resumeEvent();
            spread.resumePaint();
文件里是array的格式 麻烦您这边试一下 有点大

新建文本文档.zip

834.3 KB, 下载次数: 41

回复 使用道具 举报
沉不住的心
中级会员   /  发表于:2021-9-6 17:35:29
5#
搞好demo了 您看一下 导入问压缩包里面的excel 点击右上角的导入公式 会发现会卡住

新建文件夹.zip

1.72 MB, 下载次数: 40

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-9-6 18:14:10
6#
本帖最后由 Derrick.Jiao 于 2021-9-6 18:19 编辑
沉不住的心 发表于 2021-9-6 17:35
搞好demo了 您看一下 导入问压缩包里面的excel 点击右上角的导入公式 会发现会卡住

问题已收到,这边会做进一步调研,此贴为您改为保留处理,有进展会在本贴更新。(SJS-10003
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部