使用Javascript从xlsx读取大数据,而无需sheet.js或spread.js

时间:2018-07-26 15:25:34

标签: javascript excel sharepoint xlsx data-processing

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

Shee.js的内存不足,由于我们的开发环境,spread.js不能作为选项,我试图进行一次Rest调用来获取文档。超过300行的任何操作都只会静默失败,并且循环运行该调用以重复拉出X行并合并数据将花费近4分钟的时间,对于基于Web的简单应用程序而言,这实际上不是一个选择。

我们在SharePoint中。该页面的重点是为xlsx中的数据提供一个简化的仪表板,而不必将该数据导入到列表中。

1 个答案:

答案 0 :(得分:0)

到目前为止,我要提出的解决方案是使用$ .ajax随意拉动各个列。

每个ajax调用我可以撤回10,000个项目,因此我创建了一个包含列名称的字符串数组,并进行了forEach循环,该循环运行rest调用以获取该列中的所有数据(每列4次调用) ,然后在每个循环结束时我增加一个数字。

一旦数字等于列数组-1,我就将列拼接成单个2D数组。

它的速度比我想要的要慢,但是它可以将时间从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调用,以防止调用失败。