找回密码
 立即注册

QQ登录

只需一步,快速开始

StarStarStar

注册会员

6

主题

15

帖子

71

积分

注册会员

积分
71
StarStarStar
注册会员   /  发表于:2024-6-5 10:10  /   查看:1398  /  回复:3
3金币
本帖最后由 StarStarStar 于 2024-6-5 10:35 编辑

使用Designer和SpreadSheet 用setArray赋值一万八千多行,时间差10倍左右,怎么才能提高Designer使用setArray的速度


Designer使用代码:

import { Designer } from "@grapecity/spread-sheets-designer-react";

  const initSpread = (workbooks: any) => {
    var spread = workbooks?.getWorkbook();
    const sheet = spread.getActiveSheet();
    console.time('spreadjs设置行的时间')
    let allRow = 18163;
    sheet.setRowCount(allRow);
    console.log(allRow, 'setRowCountallRow');
    console.timeEnd('spreadjs设置行的时间')
    console.time('spreadjs设置数据的时间');
    sheet.suspendCalcService(false);
    sheet.suspendPaint();
    sheet.setArray(frozenLine, 0, exceldata?.data.dataArray);
    sheet.resumePaint();
    sheet.resumeCalcService(false);
    console.timeEnd('spreadjs设置数据的时间');


  };               
   <Designer
     designerInitialized={(spread: any) => {
        initSpread(spread);
     }}
   ></Designer>





结果:
image.png836913451.png

SpreadSheet 代码:

import { SpreadSheets, Worksheet } from '@grapecity/spread-sheets-react';
  const initSpread = (workbooks: any) => {
    const sheet = workbooks.getActiveSheet();
    console.time('spreadjs设置行的时间')
    let allRow = 18163;
    sheet.setRowCount(allRow);
    console.log(allRow, 'setRowCountallRow');
    console.timeEnd('spreadjs设置行的时间')
    console.time('spreadjs设置数据的时间');
    sheet.suspendCalcService(false);
    sheet.suspendPaint();
    sheet.setArray(frozenLine, 0, exceldata?.data.dataArray);
    sheet.resumePaint();
    sheet.resumeCalcService(false);
    console.timeEnd('spreadjs设置数据的时间');

  };

     <SpreadSheets
       workbookInitialized={(spread: any) => {
        initSpread(spread);
       }}
     >
        <Worksheet />
     </SpreadSheets>


结果:


image.png889301757.png




最佳答案

查看完整内容

在你Designer的代码里把suspendEvent和resumeEvent加上试试

3 个回复

倒序浏览
最佳答案
最佳答案
summer_
注册会员   /  发表于:2024-6-5 10:10:24
来自 2#
在你Designer的代码里把suspendEvent和resumeEvent加上试试

评分

参与人数 1金币 +200 收起 理由
Joestar.Xu + 200 赞一个!

查看全部评分

回复 使用道具 举报
StarStarStar
注册会员   /  发表于:2024-6-5 11:09:11
3#
summer_ 发表于 2024-6-5 10:49
在你Designer的代码里把suspendEvent和resumeEvent加上试试

嗯嗯 加上后快了很多 感谢感谢
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-6-5 11:34:16
4#
好的,那就先结贴了,后续有其他问题的话随时开新帖提问哈。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部