找回密码
 立即注册

QQ登录

只需一步,快速开始

ifastudy

注册会员

4

主题

14

帖子

42

积分

注册会员

积分
42
最新发帖
ifastudy
注册会员   /  发表于:2017-10-16 10:44  /   查看:7976  /  回复:10
筛选需要6s,修改需要2s.
有优化方法吗?
附上json文件。其中绿色的部分是需要修改的,前几列需要筛选。

SeasonKPI.zip

562.28 KB, 阅读权限: 1, 下载次数: 249

评分

参与人数 1金币 +500 收起 理由
Clark.Pan + 500 感谢您提供的宝贵意见

查看全部评分

10 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-10-16 16:03:19
沙发
您好,这个问题我们已经重现了,正在查找问题原因,有结果后我们会第一时间通知您。感谢您对产品提供的宝贵意见,附赠500金币请查收。
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2017-10-16 18:24:02
板凳
你好,性能问题主要是两部分造成的:
1、由于Subtotal 函数的第一个参数在 101-111 之间的时候,Subtotal 函数计算的时候需要考虑数据是否有过滤。所以我们在筛选完后要重新计算公式。如果你确定你的使用场景里没有这种用法,可以通过重写onFilter方法来忽略公式的计算:
            var filterFunction = GC.Spread.Sheets.Filter.HideRowFilter.prototype.onFilter;
            GC.Spread.Sheets.Filter.HideRowFilter.prototype.onFilter = function() {
                var sheet = spread.getActiveSheet();
                sheet.suspendCalcService(true);
                filterFunction.apply(this, arguments);
                sheet.resumeCalcService(false);
            }
2. 由于过滤和编辑完后要重新绘制整个表单,你的格子太多太密了,我们一次需要绘制的单元格太多,而你又给单元格设置了 shrinkToFit, 而我们处理 shrinkToFit 为 true 的时候比 shrinkToFit 为false 的时候慢很多。所以把有些单元格不需要设置 shrinkToFit 的地方改成 false,或者把单元格的宽度设置宽一点,让一屏幕显示的单元格变少一点,会加速绘制过程,提升性能。
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2017-10-16 18:49:50
地板
关于绘制性能问题,不出意外的话我们会在下周末发布一个维护版本,会对你的这个问题做一定的性能优化。
回复 使用道具 举报
ifastudy
注册会员   /  发表于:2017-10-17 01:12:34
5#
1.重写onFilter方法筛选速度确实很快。
2.excel模板中我已经取消勾选“缩小字体填充”,但是在设计器中这个勾又勾了。在设计器中取消勾选后,保存的js文件是不勾选的7倍大小。这是什么原因?
回复 使用道具 举报
ifastudy
注册会员   /  发表于:2017-10-17 03:17:41
6#
本帖最后由 ifastudy 于 2017-10-17 03:19 编辑

当用数据库的数据写spread时,因为spread中有大量的公式,写入很慢,后来禁用了公式,写数据的速度是提升了,但是公式不自动计算了。代码如下:


                         var regioncode = this.getParentView().getValues().regioncode;
                           mdobject.getRegionMDHisData({RegionCode:regioncode,StartYM:"1612",EndYM:"1705"}).then(function(response){
                            var jdata= response.json();

                                                
                                    spread.options.tabStripRatio = 0.6;
                                    spread.suspendCalcService();
                                     spread.suspendPaint();
              
                                    var sht = spread.getSheet(0);
                        
                                    jdata.forEach(function(item,idx){
                                            sht.setValue(25+idx%402,7+parseInt(idx/402),item.saleper);  
                                            sht.setValue(25+idx%402,17+parseInt(idx/402),item.profitratio);  
                                            sht.setValue(25+idx%402,27+parseInt(idx/402),item.ticketprofitratio);  
                                            sht.setValue(25+idx%402,119+parseInt(idx/402),item.salemnyperunit);  
                                            sht.setValue(25+idx%402,141+parseInt(idx/402),item.saleqtyperssd);  
                                            sht.setValue(25+idx%402,151+parseInt(idx/402),item.saledays);  
                                            sht.setValue(25+idx%402,171+parseInt(idx/402),item.salemny);  
                                    });

                             spread.resumePaint();
                                    spread.resumeCalService(true);
                   });

回复 使用道具 举报
CCKan
银牌会员   /  发表于:2017-10-17 11:48:31
7#
在 Excel 中取消勾选以后的文件能否上传一份,我们看看原因是什么。至于在设计器中勾选文件变大,是因为本来样式是共享的 named style,设计器中勾选以后,会把样式变为单独的普通样式,所以文件会变大。

从你的代码中看不出有什么问题,公式应该能自动计算才对,能否上传一个相对完整的 sample?
回复 使用道具 举报
ifastudy
注册会员   /  发表于:2017-10-17 20:38:32
8#
1.公式无法恢复运算的问题已经解决,resumeCalcService写成 resumeCalService
2.导入的excel模板如附件。另外,也附件js文件,这个js显示出来需要30秒,麻烦提供一下思路,想优化到15秒。

JS模板.zip

692.5 KB, 下载次数: 232

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-10-18 14:54:42
9#
您好:

我用在线中文学习指南中的测试demo,测试了一下您的Excel导入,花费为8秒左右,并没有您说的30秒这么长时间,以下是测试截图以及测试方法:
image.png552554320.png
测试方法:
使用http://demo.gcpowertools.com.cn/ ... e/#/samples/ExcelIO 地址中的demo进行测试
在demo中指定位置(截图红框所示)加入获取时间的代码并输出控制台,控制台两次时间差值即导入所花费的时间。
如上方截图所示,时间在8秒左右
回复 使用道具 举报
ifastudy
注册会员   /  发表于:2017-10-19 21:52:17
10#
已解决,通过载入时禁用公式,已经做到3秒左右显示。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部