本帖最后由 innerwang 于 2024-5-23 19:36 编辑
场景如下:
用 SpreadJS 编辑一个模板,模板中包含一个表格,这个表格实际只会有2行,一行是表头,另一行是各个模板字段, 如图
实际展示时,会将拿到的数据(二维数组)来扩充上述第二行的模板字段
扩充数据的代码实现如下:
- const firstDataRowHeight = sheet.getRowHeight(row + 1)
- const needSyncRowHeight = firstDataRowHeight !== sheet.defaults.rowHeight
- const setValues = (values, startRow) => {
- sheet.suspendPaint()
- sheet.suspendEvent()
- values.forEach((v, rowIdx) => {
- sheet.copyTo(row + 1, col, startRow + rowIdx, col, 1, colCount, window.GC.Spread.Sheets.CopyToOptions.all)
- sheet.setArray(startRow + rowIdx, col, [ v ])
- if (needSyncRowHeight) {
- sheet.setRowHeight(startRow + rowIdx, firstDataRowHeight)
- }
- })
- sheet.resumeEvent()
- sheet.resumePaint()
- }
复制代码
目前填充 500行,58列的性能在 500ms左右 ,对应配置为 Mac M1, 内存 16GB,遇到比较差的硬件配置电脑时,就会卡顿十分明显,能帮看看如何提高性能吗?
备注:尝试了 suspendCalcService() suspendDirty() 没什么改善
|
|