找回密码
 立即注册

QQ登录

只需一步,快速开始

kzk

金牌服务用户

16

主题

79

帖子

215

积分

金牌服务用户

积分
215

微信认证勋章

kzk
金牌服务用户   /  发表于:2020-4-28 13:00  /   查看:4928  /  回复:6
1金币
                for (var i=0;i<data.obj.length;i++){
                                var row=data.obj[i].rowd;
                                var col=data.obj[i].columnd;
                                //判断当前单元格是否有公式,如果有值还有公式,去除公式内容
                                if(!isBlankFn(sheet.getFormula(row,col))){
                                        if(!isBlankFn(data.obj[i].colname)){
                                                sheet.setFormula(row,col,"");
                                        }
                                }
                                sheet.setBindingPath(data.obj[i].rowd,data.obj[i].columnd,data.obj[i].colname);
//                                console.log(row+"======"+col);

                        }
sheet.setFormula(row,col,"");这个函数特别慢,导致加载报表也特别的慢

因为模板里面设置了公式,导致初始值无法加载出来,所以必须先要setFormula设置成为空串,但是这个函数太慢了,导致报表打开特别的慢,所以setFormula设置成为空串时候关闭公式计算,或者有没有其他的方法,直接关闭所有的公式,不需要一个一个去设置空串,就让初始化的值加载出来


最佳答案

查看完整内容

这段逻辑前后加上

6 个回复

倒序浏览
最佳答案
最佳答案
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-4-28 13:00:33
来自 4#
本帖最后由 ClarkPan 于 2020-4-28 18:01 编辑

复制代码
  1. for (var i=0;i<data.obj.length;i++){
  2.                                 var row=data.obj[i].rowd;
  3.                                 var col=data.obj[i].columnd;
  4.                                 //判断当前单元格是否有公式,如果有值还有公式,去除公式内容
  5.                                 if(!isBlankFn(sheet.getFormula(row,col))){
  6.                                         if(!isBlankFn(data.obj[i].colname)){
  7.                                                 sheet.setFormula(row,col,"");
  8.                                         }
  9.                                 }
  10.                                 sheet.setBindingPath(data.obj[i].rowd,data.obj[i].columnd,data.obj[i].colname);
  11. //                                console.log(row+"======"+col);
  12.                         }
复制代码


这段逻辑前后加上
  1. spread.suspendCalcService(true);
  2. for (var i=0;i<data.obj.length;i++){
  3.                                 var row=data.obj[i].rowd;
  4.                                 var col=data.obj[i].columnd;
  5.                                 //判断当前单元格是否有公式,如果有值还有公式,去除公式内容
  6.                                 if(!isBlankFn(sheet.getFormula(row,col))){
  7.                                         if(!isBlankFn(data.obj[i].colname)){
  8.                                                 sheet.setFormula(row,col,"");
  9.                                         }
  10.                                 }
  11.                                 sheet.setBindingPath(data.obj[i].rowd,data.obj[i].columnd,data.obj[i].colname);
  12. //                                console.log(row+"======"+col);
  13.                         }
  14. spread.resumeCalcService(true);
复制代码
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-4-28 15:44:36
2#
回复 使用道具 举报
kzk
金牌服务用户   /  发表于:2020-4-28 17:44:59
3#
$.ajax({
                url:"addExcelController.do?getcolrol",
                data:submitData,
                type:"Post",
                dataType:"json",
                async:false,
                success:function(data){
                        for (var i=0;i<data.obj.length;i++){
                                var row=data.obj[i].rowd;
                                var col=data.obj[i].columnd;
                                //判断当前单元格是否有公式,如果有值还有公式,去除公式内容
                                if(!isBlankFn(sheet.getFormula(row,col))){
                                        if(!isBlankFn(data.obj[i].colname)){
                                                sheet.setFormula(row,col,"");
                                        }
                                }
                                sheet.setBindingPath(data.obj[i].rowd,data.obj[i].columnd,data.obj[i].colname);
//                                console.log(row+"======"+col);
                        }
                },
                error:function(data){
                        $.messager.alert('错误',data.msg);
                }
        });

                                sheet.setBindingPath(data.obj[i].rowd,data.obj[i].columnd,data.obj[i].colname);
这句话导致了慢,有没有办法搞下
回复 使用道具 举报
kzk
金牌服务用户   /  发表于:2020-4-28 18:29:26
5#
加了,效果不是很明显
回复 使用道具 举报
kzk
金牌服务用户   /  发表于:2020-4-28 18:30:21
6#
spread.suspendCalcService(false); 先是false后是true
spread.resumeCalcService(true);
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-4-28 22:47:11
7#
是的,加上之后应该可以了把?
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部