找回密码
 立即注册

QQ登录

只需一步,快速开始

风雪

注册会员

10

主题

22

帖子

108

积分

注册会员

积分
108
风雪
注册会员   /  发表于:2022-5-5 09:57  /   查看:1463  /  回复:3
10金币
本帖最后由 风雪 于 2022-5-5 10:33 编辑

每行有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);
                            }

最佳答案

查看完整内容

可以尝试暂停公式计算,整体全部添加完以后再进行计算

3 个回复

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

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

  4. sheet.resumeCalcService(false);
  5. sheet.resumePaint();
复制代码
回复 使用道具 举报
风雪
注册会员   /  发表于:2022-5-6 10:29:24
3#
速度问题确实快了。其他优化问题自行解决。结帖子吧。谢谢!
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-5-6 11:45:05
4#
好的,这个帖子就结贴啊,
其他方面的优化也可以参考一下下面这个文章
https://gcdn.grapecity.com.cn/fo ... &extra=page%3D1
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部