网页端用到自定义JS代码时,如果有大量的sheet.setValue()循环执行时,每次改变内容单元格都会渲染一次,并且会触发满足条件的取数公式,执行效率特别低。
平台依赖的SpreadJS提供了两种优化方式
-
禁用页面渲染:
//内容改变时禁止页面渲染 sheet.suspendPaint() //此处处理大批量改变数据逻辑 //... //处理完毕后恢复页面渲染 sheet.resumePaint()
-
挂起所有事件(如单元格内容改变,选择单元格改变),此方法单独使用提升效率不高
// 挂起工作表所有事件 sheet.suspendEvent() //此处处理大批量改变数据逻辑 //... //恢复单元格的监听事件 sheet.resumeEvent()
两种方法可以分开使用,也可以搭配使用,根据实际情况来判断就好,搭配使用提升效率如下图:
①是没有处理之前的速度,②是加了两种方法之后的效率(数据量一样),速度提升了27倍
另外sheet
有多种获取方式,跟VBA中类似
获取当前激活的工作表
sheet = MWE.Obj.getActiveSheet()
获取指定位置工作表
wb = MWE.Obj.getWorkBook() sheet = wb.getSheet(0) //根据索引获取,第一个sheet为0
获取指定名称工作表
wb = MWE.Obj.getWorkBook() sheet = wb.getSheetFromName('Sheet1') //按Excel中的名称就行
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。