请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

littleknife
金牌服务用户   /  发表于:2019-6-5 16:49  /   查看:3724  /  回复:3
你好,这边发现从excel复制2000*30的数据到SpreadJS表格,需要等50s多

主要的时间是耗费在按下ctrlV到触发clipboardPasting,以及clipboardPasting到clipboardPasted之间。
有办法可以优化一下这个粘贴性能问题吗?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

3 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-6-6 11:40:10
沙发
您好,您粘贴的数据量比较大,由于默认从Excel中粘贴的数据是带格式的,因此解析和渲染格式的时间比较久,

您可以考虑使用以下设置:

  1. spread.options.allowCopyPasteExcelStyle = false;
复制代码


这样粘贴的数据不带格式,可以大大提高粘贴性能。
回复 使用道具 举报
littleknife
金牌服务用户   /  发表于:2019-6-10 20:02:22
板凳
KevinChen 发表于 2019-6-6 11:40
您好,您粘贴的数据量比较大,由于默认从Excel中粘贴的数据是带格式的,因此解析和渲染格式的时间比较久,
...

这个满足不了需求,大部分的情况下就是需要带样式的。

我想粘贴过程中加一个loading的动画,这样比假死的体验要好一些。
但目前遇到一个问题,我这个loading的开始和结束时机的问题。
因为我发现在粘贴大量数据的时候,事件主要是耗在按下ctrlV和触发pasting事件之间
所以这个loading开始的时机应该是在按下ctrlV的时候
但问题就是结束时机不知道要在什么时候,正常情况下结束的时机应该是要在pasted事件里面,但如果allowExtendPasteRange为false的情况下,就不会触发pasted事件。

不知道你们有没有什么办法?
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-6-11 09:36:56
地板
您好,实际上CtrlV事件比较特殊,它是响应浏览器的事件,从系统剪贴板中向SpreadJS粘贴数据,SpreadJS中无法更改CtrlV事件。

实测在粘贴大量数据时(2000行+ * 30列+),在按下CtrlV到clipboardPasting被触发,所耗时长占到整个粘贴时长的4分之一左右,

截图是在Chrome74中利用performance测试的结果,实际上在不开performance时粘贴同样的数据耗时基本在10秒左右。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部