找回密码
 立即注册

QQ登录

只需一步,快速开始

Ellia.Duan SpreadJS 开发认证
超级版主   /  发表于:2023-11-15 17:26  /   查看:1665  /  回复:0
本帖最后由 Ellia.Duan 于 2023-11-15 17:37 编辑

论坛中有很多在单元格样式上如何优化性能的文章。

1、常见的挂起绘制与恢复绘制,如下代码
  1. spread.suspendPaint();
  2. spread.resumePaint();
复制代码

2、在列上面设置样式,如下文章
https://gcdn.grapecity.com.cn/fo ... 39271&fromuid=59119

如果每个单元格都可能存在个性化的渲染内容,不同的样式交互等。
初始化渲染的时候,每个格子都可能需要重新设置样式和cellType,于是调用了大量的cell.font、cell.backColor、cell.cellType等方法
这样在大数据量的场景,例如20列*5000行的数据。如下图所示:大概渲染了44秒
image.png809933776.png
加上上文提到的方案一初始化渲染还是非常的慢,而由于个性化渲染等问题无法用上文提到的方案二。为此如何优化这种场景下的渲染呢?
可以创建一个Style设置好了之后调用setStyle
代码改为:
  1.      var cellType = new FivePointedStarCellType();
  2.             for (let i = 0; i < 5000; i++) {
  3.                 for (let j = 0; j < 20; j++) {
  4.                     var style = new GC.Spread.Sheets.Style();
  5.                     style.backColor = "red";
  6.                     style.vAlign = 1;
  7.                     style.hAlign = 1;
  8.                     style.font = 'normal normal 14px Microsoft Yahei';
  9.                     const lineColor = '#333';
  10.                     const lineStyle = 2;
  11.                     const border = new spreadNS.LineBorder;
  12.                     border.color = lineColor;
  13.                     border.style = lineStyle;
  14.                     style.borderRight = border;
  15.                     style.borderBottom = border;
  16.                     style.cellType = cellType;
  17.                     sheet.setStyle(i, j, style);
  18.                 }
  19.             }
复制代码

渲染时间为4秒,速度提升了10倍
image.png474183349.png


每个单元格不一样_优化前.html

5.94 KB, 下载次数: 144

每个单元格不一样_优化后.html

5.8 KB, 下载次数: 108

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部