chrome浏览器导出80万条数据,浏览器崩溃,Safari可以 #2816
Labels
No Label
DBF
Dates
Defined Names
Features
Formula
HTML
Images
Infrastructure
Integration
International
ODS
Operations
Performance
PivotTables
Pro
Protection
Read Bug
SSF
SYLK
Style
Write Bug
good first issue
No Milestone
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: sheetjs/sheetjs#2816
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
导出数据量较大100万行,每行21列,每行大概300个字符
版本:0.16.9
尝试1:每20万行追加sheet1中,数据请求完后统一下载
尝试2:每20万行放入1个sheet中,数据请求完后统一下载
2种方式,都是chorme不能完成,Safari可以完成
Chrome:
在writeFile的时候直接崩溃,XLSX.writeFile(o.wb, o._option.filename + '.xlsx' , {compression: true, type: 'binary'}), 其中加opts也不行
Safari:
可以下载成功,{compression: true, type: 'binary'}添加后文件下载的大小相差十几倍
问题: chrome怎样才能下载成功,什么导致的下载失败
错误:有时报错
RangeError: Invalid string length
at Array.join
https://docs.sheetjs.com/docs/miscellany/errors#aw-snap-or-oops-an-error-has-occurred
Please try upgrading to 0.19.0 and calling
writeFile
with the optiondense: true
. This won't resolve the "Invalid string length" issue but it should avoid other crashes in Chrome.To fix the "Invalid string length" we need to change how the writer works. Currently a large XML string is generated. In Chrome, the string length limit is 0x1FFFFFE8 (536870888) characters, so the writer will need to generate the file without assembling the entire string.
多谢大佬回复。可是目前还有一定几率下载失败
请问有没有办法减少内存使用,80万行数据,每20万1个sheet,内存占用到了1.3G,如下:
XLSX.utils.book_append_sheet(o.wb, XLSX.utils.aoa_to_sheet(o.content), sheet)
但是到调用下载时,内存飙升到3.4G,如下
XLSX.writeFile(o.wb, o._option.filename + '.xlsx' , {compression: true})
上面3个方法,有没有对应的opts来减少内存的占用
XLSX.writeFile(o.wb, o._option.filename + '.xlsx' , {compression: true})
这个方法,加了opts {compression: true} 之后,80万行下载后文件大小为110多M,没加这个opts之前,下载80万行数据的文件大小为800多M
You will need to update to the latest version. https://docs.sheetjs.com/docs/getting-started/#installation has instruction links for standalone script tag and for bundlers like React projects.
Using the latest version, try:
800K rows x 10 columns live demo https://jsfiddle.net/3ksfq7n9/ runs in 15 seconds (Macbook Pro 2018)
Fiddle Code (click to show)