使用 Javascript 不使用 sheet.js 或 spread.js 从 xlsx 读取大数据

Reading large data from an xlsx using Javascript without sheet.js or spread.js

问题的简短版本是我需要一种方法来读取包含 40k 行 36 列的 xlsx 文件。

Shee.js 内存不足,由于我们的开发环境,spread.js 不是一个选项,我尝试进行 Rest 调用以获取文档。任何超过 300 行的内容都会默默地失败,并且 运行 循环调用以重复拉取 X 行并合并数据需要将近 4 分钟,这对于一个简单的基于 Web 的应用程序来说并不是一个真正的选择。

我们在 SharePoint 中。该页面的重点是提供一个简单的仪表板,其中包含 xlsx 中的数据,而无需将该数据导入列表。

我现在想到的解决方案是使用 $.ajax 异步工作来拉取各个列。

每次 ajax 调用我可以提取 10,000 个项目,所以我创建了一个包含列名的字符串数组,做了一个 forEach 循环,运行 是一个休息调用以获取所有该列中的数据(每列 4 次调用),然后在每个循环结束时我递增一个数字。

一旦数字等于列数组 -1,我就会将列拼接成一个二维数组。

它比我想要的要慢,但它将时间从 4-9 分钟缩短到大约 30 秒。这是因为它不是在链中执行数百个调用,而是同时执行数百个调用。

编辑:为将来想要使用它的任何人扩展此答案。

var cols = ['a', 'b', 'c', 'd', 'e', 'f'];
var data = {};
cols.forEach(function(item, I){
    data[item] = getData(item, 1, 100000);
});

显然代码不完整,只是一个示例(我正在使用我开发的库来获取和格式化数据),但这是基本思想。它将 运行 对每一列而不是整个文档进行 AJAX 调用,以防止调用失败。