找回密码
 立即注册

QQ登录

只需一步,快速开始

写BUG的程序员

初级会员

29

主题

91

帖子

316

积分

初级会员

积分
316
写BUG的程序员
初级会员   /  发表于:2024-8-30 10:24  /   查看:181  /  回复:7
1金币
如题, 想做一个自动保存。但是复杂的报表toJSON时间比较长,自动保存时,toJSON会阻塞用户操作。


目前的想法:
方法1: sheet级别的toJSON,to出来之后和完成的JSON做个merge;  缺陷: 如果改动涉及到整体的修改(JSON中sheets属性之外的属性修改)则会丢失;


方法2:
通过下面两行代码监听,保存用户的操作记录,后续通过node+无头浏览器的方式进行操作还原,生成新的json
const cm = spread.commandManager()   

cm.addListener('myListener', (com) => {})

缺点:
不知道怎么去触发这一系列事件


官方有没有这方面的例子或者思路可以实现不阻塞或少阻塞用户操作的情况下进行自动保存的 提供一下呢

7 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:2024-8-30 12:28:29
沙发
您好!可以尝试下保存为.sjs文件。
回复 使用道具 举报
写BUG的程序员
初级会员   /  发表于:2024-8-30 14:22:46
板凳
Wilson.Zhang 发表于 2024-8-30 12:28
您好!可以尝试下保存为.sjs文件。

sjs会有各种问题,除了这种方案,还有其他可以实现的方案吗
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-8-30 14:37:15
地板
您说的SJS会有各种各样的问题指的是什么问题?
回复 使用道具 举报
写BUG的程序员
初级会员   /  发表于:2024-8-30 14:55:21
5#
Joestar.Xu 发表于 2024-8-30 14:37
您说的SJS会有各种各样的问题指的是什么问题?

这个遇到的问题我们会有其他帖子提,即使在这个帖子说了,一时半会也解决不了。而我们这个功能比较着急,所以这个帖子麻烦您先处理这个问题可以吧
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-8-30 15:03:07
6#
了解,如果用不了SJS和SSJSON的话,那就只能尝试使用Excel了。

您可以通过export接口来导出xlsx类型文件,export接口本身是异步的,其相比SSJSON类型来说体积也更小。
回复 使用道具 举报
写BUG的程序员
初级会员   /  发表于:2024-8-30 15:12:19
7#
Joestar.Xu 发表于 2024-8-30 15:03
了解,如果用不了SJS和SSJSON的话,那就只能尝试使用Excel了。

您可以通过export接口来导出xlsx类型文件 ...

您的意思,导出xlsx格式的时候不会阻塞界面操作是吗?


我上面提到的两种想法,您觉得可行吗?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-8-30 17:33:42
8#
您好,异步函数可以最大程度减缓导出带来的阻塞问题。

关于您提到的方案一:

您可以考虑使用export来导出SSJSON。

image.png772500610.png

总体来说较为可行,我没有接触过文本Merge,JSON的结构和数据直接修改可能会导致文件损坏等问题,这一块需要您自己评估成本和风险。

方案二:

myListener是SpreadJS内置的一个监听方法,没有公开出来,使用它实现风险相比方案一更高,因为不排除在将来的版本中我们会移除这个方法。

SpreadJS也不一定能够完美地运行在node环境,总体来说成本和风险比方案一高得多。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部