找回密码
 立即注册

QQ登录

只需一步,快速开始

dev_wjx

初级会员

30

主题

91

帖子

317

积分

初级会员

积分
317
dev_wjx
初级会员   /  发表于:2024-4-23 18:01  /   查看:650  /  回复:13
10金币

想实现在切入新sheet是挂起计算,然后编辑单元格后恢复计算
spread.options.calcOnDemand = true;
    spread.bind(GC.Spread.Sheets.Events.ActiveSheetChanging, function (e, args) {
          setTimeout(function () {
              spread.getSheetFromName(args.newSheet.name()+"").suspendCalcService();
          },1000)
    });

  spread.bind(GC.Spread.Sheets.Events.CellChanged, function (e, info) {
            setTimeout(function () {
                spread1.getActiveSheet().resumeCalcService(true);
            },1000)
        }
反复切换sheet后再编辑单元格计算恢复后公式却无法计算
       

最佳答案

查看完整内容

试了一下V15确实有问题, 可以通过resume两次解决

13 个回复

倒序浏览
最佳答案
最佳答案
刘老太
注册会员   /  发表于:2024-4-23 18:01:01
来自 10#
dev_wjx 发表于 2024-4-24 12:03
还是不行,你是用的V15吗我用的15.2.2版本

试了一下V15确实有问题, 可以通过resume两次解决
  1. spread.options.calcOnDemand = true;
  2. window.suspendMap = {};
  3. spread.bind(GC.Spread.Sheets.Events.ActiveSheetChanged, function (e, args) {
  4.     let sheet = spread.getSheetFromName(args.newSheet.name()+"");
  5.     if (!suspendMap[sheet.name()]) {
  6.         sheet.suspendCalcService();
  7.         suspendMap[sheet.name()] = true;
  8.               console.log(1)
  9.     }
  10. });
  11. spread.bind(GC.Spread.Sheets.Events.CellChanged, function (e, info) {
  12.     let sheet = spread.getActiveSheet();
  13.     sheet.resumeCalcService();
  14.     sheet.resumeCalcService(true);
  15.     suspendMap[sheet.name()] = false;
  16.       console.log(2)
  17. });
复制代码

评分

参与人数 1金币 +666 收起 理由
Joestar.Xu + 666 赞一个!

查看全部评分

回复 使用道具 举报
刘老太
注册会员   /  发表于:2024-4-23 18:07:31
2#
为什么不选择在切换完成后再挂起而是用timeout呢
  1. spread.bind(GC.Spread.Sheets.Events.ActiveSheetChanged, function (e, args) {
  2.     spread.getSheetFromName(args.newSheet.name()+"").suspendCalcService();
  3. });
复制代码
回复 使用道具 举报
dev_wjx
初级会员   /  发表于:2024-4-23 18:16:16
3#
刘老太 发表于 2024-4-23 18:07
为什么不选择在切换完成后再挂起而是用timeout呢

这个加不加都一样的结果只是为了试错找出问题
回复 使用道具 举报
刘老太
注册会员   /  发表于:2024-4-23 18:20:47
4#
dev_wjx 发表于 2024-4-23 18:16
这个加不加都一样的结果只是为了试错找出问题

我的意思是, 你来回切, 加了很多timeout, 必然会导致异步出问题,
为了解决你的原始需求, 直接用activeSheetChanged这个事件就可以了, 这个事件会发生在切换完成以后
回复 使用道具 举报
刘老太
注册会员   /  发表于:2024-4-23 18:28:09
5#
测试了一下这个逻辑没啥问题能跑
  1. spread.options.calcOnDemand = true;
  2. spread.bind(GC.Spread.Sheets.Events.ActiveSheetChanged, function (e, args) {
  3.     spread.getSheetFromName(args.newSheet.name()+"").suspendCalcService();
  4. });
  5. spread.bind(GC.Spread.Sheets.Events.CellChanged, function (e, info) {
  6.      spread.getActiveSheet().resumeCalcService(true);
  7. });
复制代码
回复 使用道具 举报
dev_wjx
初级会员   /  发表于:2024-4-23 18:35:10
6#
刘老太 发表于 2024-4-23 18:20
我的意思是, 你来回切, 加了很多timeout, 必然会导致异步出问题,
为了解决你的原始需求, 直接用activeSh ...

一样的,结果是一样的用activeSheetChanged事件也是都会导致第二次切入某一个sheet时计算恢复后公式也不计算
回复 使用道具 举报
dev_wjx
初级会员   /  发表于:2024-4-24 09:47:03
7#
刘老太 发表于 2024-4-23 18:28
测试了一下这个逻辑没啥问题能跑

还是不行来回切换下sheet就导致单元格公式无法计算

含自持测算模型 - Google Chrome 2024-04-24 09-39-42.zip

9.43 MB, 下载次数: 8

含自持测算模型 - Google Chrome 2024-04-24 09-39-42.zip

9.43 MB, 下载次数: 6

回复 使用道具 举报
刘老太
注册会员   /  发表于:2024-4-24 11:28:00
8#
dev_wjx 发表于 2024-4-24 09:47
还是不行来回切换下sheet就导致单元格公式无法计算

原因在于suspend的时候每次会叠一层, resume的时候每次也只会解一层, 来回切sheet会导致suspend多层, 而设置的cellChanged的resume只会解掉一层, 使用以下代码可以解决这个问题
  1. spread.options.calcOnDemand = true;
  2. let suspendMap = {};
  3. spread.bind(GC.Spread.Sheets.Events.ActiveSheetChanged, function (e, args) {
  4.     let sheet = spread.getSheetFromName(args.newSheet.name()+"");
  5.     if (!suspendMap[sheet.name()]) {
  6.         sheet.suspendCalcService();
  7.         suspendMap[sheet.name()] = true;
  8.     }
  9. });
  10. spread.bind(GC.Spread.Sheets.Events.CellChanged, function (e, info) {
  11.     let sheet = spread.getActiveSheet();
  12.     sheet.resumeCalcService(true);
  13.     suspendMap[sheet.name()] = false;
  14. });
复制代码
回复 使用道具 举报
dev_wjx
初级会员   /  发表于:2024-4-24 12:03:45
9#
刘老太 发表于 2024-4-24 11:28
原因在于suspend的时候每次会叠一层, resume的时候每次也只会解一层, 来回切sheet会导致suspend多层, 而 ...

还是不行,你是用的V15吗我用的15.2.2版本

含自持测算模型 - Google Chrome 2024-04-24 12-01-14.zip

9.9 MB, 下载次数: 7

回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部