找回密码
 立即注册

QQ登录

只需一步,快速开始

机灵鬼

最新发帖
机灵鬼
金牌服务用户   /  发表于:2021-12-29 14:32:46
11#
Derrick.Jiao 发表于 2021-12-29 14:27
请问你的800多兆的表单上大概有什么内容呢?上面描述的方案可以尝试,因为这边没有测试类似的拆分拼接, ...

好的json是这样Desktop.txt.zip
回复 使用道具 举报
机灵鬼
金牌服务用户   /  发表于:2021-12-29 14:35:31
12#
Derrick.Jiao 发表于 2021-12-29 14:27
请问你的800多兆的表单上大概有什么内容呢?上面描述的方案可以尝试,因为这边没有测试类似的拆分拼接, ...

好的,json文件是这个

Desktop.txt.zip

11.08 MB, 下载次数: 45

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-12-29 16:20:54
13#
本帖最后由 Derrick.Jiao 于 2021-12-29 16:34 编辑
机灵鬼 发表于 2021-12-29 14:35
好的,json文件是这个

这边通过普通的文本编辑器都打不开这个文件,麻烦再把原始的excel文件上传这边也一同分析一下,另外请问这个json具体是如何产生的呢?也请再详细描述。另外,请问你的GC版本是多少呢?
回复 使用道具 举报
机灵鬼
金牌服务用户   /  发表于:2021-12-29 16:48:12
14#
Derrick.Jiao 发表于 2021-12-29 16:20
这边通过普通的文本编辑器都打不开这个文件,麻烦再把原始的excel文件上传这边也一同分析一下,另外请问 ...

是的这个确实很大,原始的待写成excel的json是我们这边通过页面的数据&公式&样式等前端生成之后压缩传输过来后端解压的,目前下载失败所以我们这也没成型的excel,这个要下载的表格只有1个sheet但是rowdata数据占了很大,所以看后续能否支持基于json或流写excel的时候按照sheet或者rowdata分块写入呢
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-12-29 18:10:11
15#
机灵鬼 发表于 2021-12-29 16:48
是的这个确实很大,原始的待写成excel的json是我们这边通过页面的数据&公式&样式等前端生成之后压缩传输 ...

附件xlsx文件是我将你提供的json文件通过gcexcel打开的并且通过save方法保存的,大小为4.4M。我再把这个excel文件通过SpreadJS导入再导出json,大小为58M左右,远比你提供的800多兆的json文件要小。因此,根本原因在于这个json的生成上,建议你调整对应的业务逻辑以改善json的大小来避免oom。 big.ssjson.zip (564.97 KB, 下载次数: 44)
回复 使用道具 举报
机灵鬼
金牌服务用户   /  发表于:2021-12-29 19:09:07
16#
Derrick.Jiao 发表于 2021-12-29 18:10
附件xlsx文件是我将你提供的json文件通过gcexcel打开的并且通过save方法保存的,大小为4.4M。我再把这个e ...

好的,对于这个json的生成,是针对大于一定数据量之后要下载的表格前端使用pako对其进行分块压缩(分块压缩是因为浏览器有512m的限制,前端不能直接对整个workbook进行stringfy操作)得到对应块的byte数组,之后在将所有byte数组和一个附加的描述信息给到后端,后端使用gzip对各个段的byte数组进行解压得到对应块的字符串,最后在将这些不同块的字符串replace为一个完整的可写excel的json,就是给您的很大的这个json了。
回复 使用道具 举报
机灵鬼
金牌服务用户   /  发表于:2021-12-29 19:11:38
17#
机灵鬼 发表于 2021-12-29 19:09
好的,对于这个json的生成,是针对大于一定数据量之后要下载的表格前端使用pako对其进行分块压缩(分块压 ...

在前后端整个过程中除了解压缩byte数组外没有做其他的编辑码等额外操作
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-12-30 09:23:59
18#
机灵鬼 发表于 2021-12-29 19:09
好的,对于这个json的生成,是针对大于一定数据量之后要下载的表格前端使用pako对其进行分块压缩(分块压 ...

从这块的描述来看跟产品的相关性可能就不太大了,这块可能需要你来做对应的优化。如果咱们前端用的SpreadJS,那么也正如前面所说的可以通过SpreadJS的toJSON接口产生json(58M)传给后端GcExcel去处理,这个大小是没有压力的。光从这部分的描述来看这个800多兆大小的sheet属于一个不太合理的json大小。也有可能是在拼接的哪步过程中产生一些冗余的数据这边就不得而知了。·
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部