找回密码
 立即注册

QQ登录

只需一步,快速开始

写BUG的程序员
金牌服务用户   /  发表于:2024-10-8 09:55  /   查看:424  /  回复:19
1金币
问题如下图:

image.png925828552.png

如果没有截图中的API调用,则数据会有问题,可以看附件中的demo。 加上这个API后如果表格大(100列,2W行)会导致电脑崩溃。请问有没有其他合适的方法清除多余数据。

demo.zip

8.13 MB, 阅读权限: 150, 下载次数: 2

19 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-10-8 11:28:49
沙发
您好,100列2W行,意味着这个接口将会一次性清除200W个单元格中的数据,这在浏览器中是一个非常消耗性能的操作,因此建议您在执行这个接口前先执行suspendPaint、suspendCalcService、suspendEvent,等接口执行完毕,再将它们全部恢复,理论上可以提升一部分的性能。

您这边为什么需要将如此大的表格中的数据全部清除呢?
回复 使用道具 举报
写BUG的程序员
金牌服务用户   /  发表于:2024-10-8 14:02:41
板凳
Joestar.Xu 发表于 2024-10-8 11:28
您好,100列2W行,意味着这个接口将会一次性清除200W个单元格中的数据,这在浏览器中是一个非常消耗性能的 ...

你看下附件的demo,为了解决demo中的问题。

您这边有什么好的方案也可以麻烦提供一下
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-10-8 17:53:57
地板
您好,我看了您的Demo,但是还是没能理解您的使用场景,为什么需要将table Clear掉然后再重新resize?能否请您详细说明一下?
回复 使用道具 举报
写BUG的程序员
金牌服务用户   /  发表于:2024-10-9 09:31:26
5#
本帖最后由 写BUG的程序员 于 2024-10-9 09:34 编辑
Joestar.Xu 发表于 2024-10-8 17:53
您好,我看了您的Demo,但是还是没能理解您的使用场景,为什么需要将table Clear掉然后再重新resize?能否 ...

注释里写了,把Clear注释掉,会有多余的数据没法清除。  如果不用resize,原来多余的列不会清除

比如table原来有5列,新的table只有4列,不用resize的话,就会有5列,其中一列无用的删除不掉。

比如原来table有10行数据,新的数据有5行,如果不用Clear清除数据,多出来的5行数据还存在,  demo中把截图里的Clear代码注释掉就可以看到现象
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-10-9 11:17:43
6#
了解您这边的场景了,也就是说模板本身会包含一些数据,然后您需要将模板中的原始数据清除掉,最后将实际的数据渲染到模板中。

基于上述情形,我有几点疑问:

1、模板本身是否可以设置为不包含任何数据的情况?如果不包含数据的话,就可以直接渲染而不需要再clear掉其他多余的数据。

2、是否可以新建一个Sheet,将除了数据以外的其他数据复制到新的Sheet上,然后在新的Sheet上渲染数据?
回复 使用道具 举报
写BUG的程序员
金牌服务用户   /  发表于:2024-10-9 12:18:00
7#
Joestar.Xu 发表于 2024-10-9 11:17
了解您这边的场景了,也就是说模板本身会包含一些数据,然后您需要将模板中的原始数据清除掉,最后将实际的 ...

1、 某些情况下,为了加快用户的渲染速度,我们会在服务端把数据加载好,用户直接使用fromJSON就能拿到最新数据的报表,这种情况就必须得包含数据了。

2、第二种方案:怎么实现把除数据以外的内容复制到新sheet上呢? 这种情况需要删除原sheet,然后把新sheet的名字改成原sheet的名字是吧。 这种实现方式有demo可以参考一下吗
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-10-9 17:30:08
8#
SpreadJS原生上可以通过clipboardPast命令来实现跨Sheet的复制,具体可以参考:https://gcdn.grapecity.com.cn/showtopic-73543-1-42.html

总体的思路是:

1、创建新Sheet
2、将旧Sheet的除数据以外的内容粘贴到新Sheet上
3、删除旧Sheet,将新Sheet的Name修改为新Sheet的Name

不过这么做可能会遇到一些问题,比如条件格式等信息无法通过粘贴的方式粘贴到新Sheet上,所以可能需要结合实际的场景来判断是否要使用这样的方式去实现。
回复 使用道具 举报
写BUG的程序员
金牌服务用户   /  发表于:2024-10-10 09:17:34
9#
Joestar.Xu 发表于 2024-10-9 17:30
SpreadJS原生上可以通过clipboardPast命令来实现跨Sheet的复制,具体可以参考:https://gcdn.grapecity.com ...

如果是这样的话,还不能用这种方式。所以还是需要找一下清除数据的方式。有没有其他清除数据的方式
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-10-10 11:33:01
10#
您这边有没有较大数据量的模板能够让我们本地能够复现出卡顿的现象,然后我们针对这个可以复现出的现象来调研看看。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部