CNode

Node.js 如何使用数据追加的方式导出excel?

问答
ZZhangDianPeng发布于7 年前最后回复7 年前8 回复7426 浏览0 收藏

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

查看回复

回复 (8)

Y
yviscool#1·7 年前

stream pipe ?

C
CodeofGame#2·7 年前

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

1
151263#3·7 年前
Z
ZhangDianPeng#4·7 年前
引用 CodeofGame同一个sheet最多支持65536条数据,超过65536的部分,你可以再创建一个sheet页啊

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

Y
yviscool#5·7 年前

@ZhangDianPeng 试试这个 xlsx-writestream

Z
ZhangDianPeng#6·7 年前
引用 yviscool@ZhangDianPeng 试试这个 xlsx writestream

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

H
helloyou2012#7·7 年前

这个有点麻烦,因为 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

参与回复
登录后即可参与回复。登录