1

我有一个非常大的 excel 文件,第一行空白,第二行带有标题,其余行包含数据。

我只需要从该文件中选择部分数据。

因为它应该在客户端用 javascript 完成,所以我决定使用 AlaSql 库 (alasql.org),在那里我可以使用 sql 语言精确选择我需要的数据。

Fe:首先我计算行数,而不是使用范围选择一些数据(带标题):

var sql = "SELECT value COUNT(*) FROM FILE(?,{headers:true})"; //count rows
alasql(sql,[event],function(numberofrows){ 
var sql2 = "select column1, column2 from FILE(?, headers:true,range:'A2:Z"+numberofrowss"'})"; 
//I need only two columns I can use here where/having/limit etc. conditions
alasql(sql2,[event],function(res){
... // other steps
}}

有没有更有效的方法来完成这项工作(不先计算行数)?也许它可以使用类似于“A2:ZZ”定义的范围?使用范围 A2:A10000000 会消耗所有内存...

有什么建议么?其他图书馆?也许有一种方法可以先删除空白行?

4

1 回答 1

0

您是否尝试导入没有范围的数据?

我以前从未见过这个库(现在谢谢你),只是使用了带有你描述的数据的示例文件和来自 lib docs 的示例,并得到了正确的结果:

alasql('SELECT header1, header2 FROM XLS("https://dl.dropboxusercontent.com/u/802266/a.xls",{headers:true})',[],function(data){
        console.log(data);
    });

结果:

0: Object
header1: "aaa1"
header2: "aaa2"
1: Object
header1: "sss1"
header2: "sss2"
2: Object
header1: "xxx1"
header2: "xxx2"

`工作示例:http: //jsfiddle.net/xdfyxupL/

此外,如果您仍然需要行数,您可以使用ROWNUM

于 2015-10-14T00:34:38.117 回答