用JavaScript加载Excel文件

我怎样才能从一个Excel文件中的工作表使用JavaScript读取数据?

我find了https://github.com/SheetJS/js-xlsx 。 我可以得到数据

// require modules var fs = Npm.require('fs'); var path = Npm.require('path'); var xlsx = Meteor.npmRequire('xlsx'); // set base path var basepath = path.resolve('.').split('.meteor')[0]; // read workbook var workbook = xlsx.readFile(basepath + "persons.xlsx"); var worksheet = workbook.Sheets['Sheet1']; worksheet = xlsx.utils.sheet_to_json(worksheet); var sum = 0; for (var cell in worksheet) { console.log(worksheet[cell]); sum += 1; } console.log(sum); 

但我真的必须将其转换为json? 我不知道如何遍历工作表中的每一行,并且文档没有提供关于如何在加载的工作表中“导航”的许多信息。

这是最好的包吗? 使用csv文件而不是Excel文件显着更快/更轻量级? 我必须经常从一个文件加载数据到我的networking应用程序,所以我需要最好的方式来做到这一点。

编辑

当我在文件中查看他们如何将Excel文件转换为csv时,我可以find这个函数:

 function sheet_to_csv(sheet, opts) { var out = "", txt = "", qreg = /"/g; var o = opts == null ? {} : opts; if(sheet == null || sheet["!ref"] == null) return ""; var r = safe_decode_range(sheet["!ref"]); var FS = o.FS !== undefined ? o.FS : ",", fs = FS.charCodeAt(0); var RS = o.RS !== undefined ? o.RS : "\n", rs = RS.charCodeAt(0); var row = "", rr = "", cols = []; var i = 0, cc = 0, val; var R = 0, C = 0; for(C = rsc; C <= rec; ++C) cols[C] = encode_col(C); for(R = rsr; R <= rer; ++R) { row = ""; rr = encode_row(R); for(C = rsc; C <= rec; ++C) { val = sheet[cols[C] + rr]; txt = val !== undefined ? ''+format_cell(val) : ""; for(i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34) { txt = "\"" + txt.replace(qreg, '""') + "\""; break; } row += (C === rsc ? "" : FS) + txt; } out += row + RS; } return out; 

所以看来他们正在使用

 for(R = rsr; R <= rer; ++R) { for(C = rsc; C <= rec; ++C) { 

遍历行和列,但我不明白的语法。 我无法findrscrecrer

看来我可以得到A1的worksheet[{c:0, r:0}]和B2与worksheet[{c:1, r:1}]但我不知道如何循环所有行/ cols当我不知道行数和列数。