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

QQ登录

只需一步,快速开始

几何数字

金牌服务用户

1

主题

3

帖子

12

积分

金牌服务用户

积分
12
  • 34

    金币

  • 1

    主题

  • 3

    帖子

最新发帖
几何数字
金牌服务用户   /  发表于:2025-4-24 16:17  /   查看:115  /  回复:6
1金币
本帖最后由 几何数字 于 2025-4-24 17:08 编辑

文档导出示例

image.png516239013.png
导出大量数据(30000+行,200+列)时,会报错(RangeError: Invalid string length),同时阻塞页面交互,导致页面崩溃,是否有优化或替代方案,


执行导出操作的方法:workbookExport
示例demo:
exelio-export-demo.ts (2.79 KB, 下载次数: 3)
image.png895948486.png

最佳答案

查看完整内容

从后续你通过其他渠道提供的这个宽表文件来看,此工作簿单纯就是数据多,即使是用excel来另存为,也得六七秒了 spreadjs对这种没有什么特别的优化办法,只能是从业务上去考虑,看看能否拆分数据,分文件来加载 另外,如果数据是来自于结构化的行数据的话,可以考虑通过集算表来提升数据加载和渲染性能,可以减少内存占用,一定程度避免导出xlsx时的内促溢出,但是仍然是没有办法完全避免导出xlsx速度慢的问题 这个帖子就先 ...

6 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2025-4-24 16:17:56
来自 7#
从后续你通过其他渠道提供的这个宽表文件来看,此工作簿单纯就是数据多,即使是用excel来另存为,也得六七秒了
spreadjs对这种没有什么特别的优化办法,只能是从业务上去考虑,看看能否拆分数据,分文件来加载

另外,如果数据是来自于结构化的行数据的话,可以考虑通过集算表来提升数据加载和渲染性能,可以减少内存占用,一定程度避免导出xlsx时的内促溢出,但是仍然是没有办法完全避免导出xlsx速度慢的问题

这个帖子就先关闭了,如果有其他问题,欢迎发新帖沟通
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2025-4-24 16:36:05
2#
看到你上传的代码截图实际上是导入xlsx文件相关的,不是导出时的,需要你先确认一下是导入时有性能问题还是导出的时候有性能问题

从你提到的报错信息看,暂时只能简单猜测可能是生成的json长度已经达到浏览器支持的最大上限了,但是确认具体原因的话,还是需要你发一个能复现问题场景的文件上来。
回复 使用道具 举报
几何数字
金牌服务用户   /  发表于:2025-4-24 17:00:05
3#
Richard.Ma 发表于 2025-4-24 16:36
看到你上传的代码截图实际上是导入xlsx文件相关的,不是导出时的,需要你先确认一下是导入时有性能问题还是 ...

我上传了执行导出操作的方法逻辑,原因应该是json长度超出限制,但是在未超出限制的情况下,执行导出操作时间也会很长,同时会阻塞页面的渲染和交互。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2025-4-24 17:59:21
4#
我看到你在tojson后还对json进行了处理,这部分是出于什么需求,
最好给一个导出时间很慢的文件我们调查看看,或者你那边也可以自己看看是慢到哪一步了,是不是fixSpreadJSON方法中
回复 使用道具 举报
几何数字
金牌服务用户   /  发表于:2025-4-24 18:37:50
5#
Richard.Ma 发表于 2025-4-24 17:59
我看到你在tojson后还对json进行了处理,这部分是出于什么需求,
最好给一个导出时间很慢的文件我们调查看 ...

image.png302546691.png

30000行118列的模拟数据:
整个导入过程耗时: 55349ms
toJson耗时:7223ms
fixSpreadJSON耗时: 1649ms

fixSpreadJSon 遍历了表格数据,修改一些单元格的value和样式
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2025-4-25 13:45:27
6#
首先,不建议转换成json后再对json做修改,如果修改错误可能导致文件无法正常保存和加载。spreadjs提供的接口完全也能实现你的需求

然后是你提到的导出慢,如果最终是要存储成文件供spreadjs下次使用的话,建议存储为sjs文件。可以提高保存的速度。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部