我有一个非常大的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&#39 ;? 使用范围A2:A10000000消耗所有内存...
有什么建议吗?其他图书馆?也许有办法先删除空行?
答案 0 :(得分: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