找回密码
 立即注册

QQ登录

只需一步,快速开始

风雪

注册会员

10

主题

22

帖子

108

积分

注册会员

积分
108
风雪
注册会员   /  发表于:2022-5-1 09:28  /   查看:1358  /  回复:1
每行有27个公式,当添加多行的时候贴别慢,5行以下速度还可以接受。是否有建议提供。添加行的代码如下:
                            let sheet = this.spread.getActiveSheet();
                            this.sheet = sheet;
                            if (this.sheet) {
                                var rows = this.sheet.getRowCount(GC.Spread.Sheets.SheetArea.viewport);
                                            //增加行数开始               
                                if(this.addRowNum<=0 || this.addRowNum==null){ //addRowNum为录入需要添加行数
                                this.addRowNum=1
                                }

                                sheet.addRows(sheet.getRowCount(SheetArea.viewport), Number(this.addRowNum));   
                                //增加行数结束   

                                // this.addArrayFormula();

                                var startrow=rows+1;
                                for(var i=0;i<Number(this.addRowNum);i++){
                                    var stringFomular = '';

                                    if (startrow >= 1) {
                                        for (let index = 0; index < this.conlumnCount; index++) {//设置公式
                                                 //列是动态生成,公式也是动态生成
                                                var range = new GC.Spread.Sheets.Range(startrow-1, index*3+17, 1,1);
                                                var value = GC.Spread.Sheets.CalcEngine.rangeToFormula(range, 0, 0, GC.Spread.Sheets.CalcEngine.RangeReferenceRelative.allRelative);

                                                stringFomular = '=ROUND('+value+'*N'+startrow+'*O'+startrow+',0)';
                                                this.sheet.setFormula(startrow-1, index*3+18, stringFomular);
                                            }
                                    }
                                    startrow=startrow+1
                                }
                                this.sheet.getRange(0,0,this.sheet.getRowCount(),this.sheet.getColumnCount()).locked(false);
                            }




1 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-5-5 12:14:14
沙发
可以尝试暂停公式计算,整体全部添加完以后再进行计算
  1. sheet.suspendPaint();
  2. sheet.suspendCalcService();

  3. //设置单元格公式的代码····················

  4. sheet.resumeCalcService(false);
  5. sheet.resumePaint();
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部