Node.js 如何使用数据追加的方式导出excel?
发布于 5 年前 作者 ZhangDianPeng 5929 次浏览 来自 问答

目前业务中导出 excel 同一个 sheet 中的行数限制为 10 万,超过 10 万会内存 crash 掉,请教各位大神,有没有类似文件追加的方式实现流式导出 excel ?

8 回复

stream pipe ?

这个有点麻烦,因为 Excel (xlsx) 文件本质上是很多 XML 组成的压缩包,因此导出 Excel 其实是两个步骤:

  1. 在内存里操作生成 XML(由于 XML 操作涉及到很多的回溯操作所以这一步用 Stream 不太现实)
  2. 将 XML 打成压缩包(这一步一般都采用 Stream)

因此,如果第一步就导致 crash 那估计通用的工具都不可行,不过你可以根据规范自己通过操作文件的形式生成 xml,但这种速度一般很慢。

这是我们写的导出 Excel 的工具:https://github.com/d-band/better-xlsx,你可以试一下会不会 crash。另外 Excel 规范见:http://www.ecma-international.org/publications/standards/Ecma-376.htm

@helloyou2012 也就是说想用 stream 追加,还得加载之前的 xml 数据?不能通过 stream 慢慢写?

同一个sheet最多支持65536条数据,超过65536的部分,你可以再创建一个sheet页啊

@CodeofGame Excel2007 版本以后最多支持100万行数据,其实一般10万行数据内存就爆了

@yviscool exceljs 这个支持stream,感觉可以。

回到顶部