我正在使用此软件包:https://www.npmjs.com/package/xlsx
但是,我可以有一些非常大的excel文件,可以包含1百万行。
我测试了600K行,这是大约15MB的excel文件,我的代码已经崩溃的localhost。
有没有办法把它流进来?我知道文档说他们没有任何流API,但它谈到了缓冲?
var reader = new FileReader();
reader.onload = evt => {
const bstr = evt.target.result;
const wb = XLSX.read(bstr, { type: "binary" });
const wsname = wb.SheetNames[0];
const ws = wb.Sheets[wsname];
const data = XLSX.utils.sheet_to_json(ws, { header: "A", defval: "" });
});
};
reader.readAsBinaryString(this.file);
3条答案
按热度按时间vq8itlhq1#
当我不得不从一个非常大的excel文件(大约50 mb)读取数据时,我在后端用Excel Interop将其转换为csv,这比从Excel文件中获取数据所需的时间要短。然后,只需通过流读取器获取前n行。这将为您提供预览所需的数据。将此发送到前端进行预览。这是我会做的。
bpzcxfmw2#
尝试使用流读取器
5jdjgkvh3#
SheetJS docs建议使用Web工作程序处理大型数据集
来源:https://docs.sheetjs.com/docs/demos/bigdata/worker
解析和编写大型电子表格需要时间,在此过程中,如果SheetJS库在网页浏览器中运行,网站可能会冻结。
工人提供了一种减轻繁重工作的方法,这样网站在处理过程中就不会冻结。工作仍然在本地执行。没有数据发送到远程服务器。
将您的代码移到Web辅助程序中
从你的主文件控制工人