请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

齐天大猫

金牌服务用户

56

主题

142

帖子

492

积分

金牌服务用户

积分
492
齐天大猫
金牌服务用户   /  发表于:2022-3-22 21:29  /   查看:2127  /  回复:3
1金币
image.png591528319.png
后来发现是jsonOptions中doNotRecalculateAfterLoad的问题。为了提升fromJSON效率,将doNotRecalculateAfterLoad设置为了true,后来发现模板跟数据源绑定后,涉及函数计算的列都未计算更新,新增的sheet页中的手动添加的数据和函数也都不计算了。

最佳答案

查看完整内容

您好,这边在官网学习指南demo(V15.0.2)测试,设置doNotRecalculateAfterLoad为true,并导入json数据, 此时新增sheet中的公式可以正常计算,未复现您描述问题。 具体操作步骤见下方动图。请提供可复现此问题的相关文件和demo,并详细描述复现步骤,这边再实际测试下。 另,您检查下是否使用了 suspendCalcService 方法,该方法表示挂起计算, 需要与resumeCalcService方法(恢复计算)搭配使用,才能恢复正常计算。 ...

3 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-3-22 21:29:57
来自 2#
本帖最后由 Lynn.Dou 于 2022-3-23 10:31 编辑

您好,这边在官网学习指南demo(V15.0.2)测试,设置doNotRecalculateAfterLoad为true,并导入json数据,
此时新增sheet中的公式可以正常计算,未复现您描述问题。
具体操作步骤见下方动图。请提供可复现此问题的相关文件和demo,并详细描述复现步骤,这边再实际测试下。

另,您检查下是否使用了 suspendCalcService 方法,该方法表示挂起计算,
需要与resumeCalcService方法(恢复计算)搭配使用,才能恢复正常计算。



1.gif
回复 使用道具 举报
齐天大猫
金牌服务用户   /  发表于:2022-4-1 15:32:58
3#
因excel中含大量函数,fromJSON和bind方法耗时较长。优化在jsonOptions中设置增量加载,回调函数中显示增量加载结束,但所有函数计算都不生效了。没有用过suspendCalcService和resumeCalcService
  1. var jsonOptions = {

  2.           incrementalLoading: {

  3.             loading: function (progress) {
  4.               debugger;
  5.               // alert('增量加载中。。。')
  6.               console.log('增量加载中。。。')
  7.               // loadingStatus.updateProgress(progress);
  8.             },
  9.             loaded: function () {
  10.               debugger;
  11.               alert('增量加载结束。。。')
  12.               console.log('增量加载中。。。')

  13.               // loadingStatus.updateText("Ready");
  14.             }
  15.           }
  16.         }
  17. this.designer.getWorkbook().fromJSON(template, jsonOptions);

  18.     let spread = this.designer.getWorkbook();
  19.           // let sheet = spread.getActiveSheet();
  20.           let sheet = spread.getSheetFromName(sheetName);//新增

  21.           var table = sheet.tables.find(udataTable.rowRange.start, udataTable.colRange.start);
  22.           var tableColumns = [];

  23.           cols.forEach(item => {
  24.             var tableColumn = new GC.Spread.Sheets.Tables.TableColumn();
  25.             tableColumn.name(item.title);
  26.             tableColumn.dataField(item.key);
  27.             tableColumns.push(tableColumn);
  28.           });
  29.           debugger;
  30.           // this.designer.getWorkbook().fromJSON(template);
  31.           let aaa = JSON.stringify(template);

  32.           this.current++;
  33.           let bindstart = (new Date()).valueOf();
  34.           table.bind(tableColumns, "data", tableData);//耗时较长
复制代码
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-4-1 18:23:52
4#
您上传下具体的excel文件,这边根据您提供的资料实际测试复现下。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部