【发布时间】:2018-07-26 21:21:27
【问题描述】:
我正在使用这个包:https://www.npmjs.com/package/xlsx
但是我可以有一些非常大的 Excel 文件,可能包含 100 万行。
我测试了 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);
【问题讨论】:
-
只需浏览打开/关闭的问题。例如this describes what issue has XLS/X。在压缩格式的情况下,整个文件必须加载到内存中。这似乎是后端工作..
-
@bigless - 我一直在解决已关闭的问题,试图找到一些解决方法。我同意这可能是一项后端工作,但我需要首先向用户显示至少 1000 条记录,以便他们可以进行一些映射,然后我需要以某种方式将其发送到 asp.net core api。
-
您可以显示不超过限制的文件记录。还是您希望大多数文件都像 15MB 或更大?
-
我认为大多数会小于 15MB(可能像 6mb..我还没有测试过,所以它们也可能是一个问题)。我真的只需要第一行,这将是标题列名称,因为有时人们不使用正确的名称,所以我所拥有的是如果列与预期名称不匹配,用户可以选择哪些列与我的预期匹配名字。
-
我没有关注,我基本上只是举了一个我找到的例子并开始使用它。我的想法是从电子表格中取出 X 行作为各种预览。然后,一旦一切顺利,开始批量发送行到服务器(.net core api)并将其保存到数据库中,同时支持尽可能大的文件(否则我将不得不制作这个的 2 个版本,一个显示预览和一个文件必须是完美的,它被发送到服务器并处理它们)
标签: javascript excel streaming filereader xlsx