用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) {
遍历行和列,但我不明白的语法。 我无法findrsc
, rec
和rer
。
看来我可以得到A1的worksheet[{c:0, r:0}]
和B2与worksheet[{c:1, r:1}]
但我不知道如何循环所有行/ cols当我不知道行数和列数。
- 在C#中使用Excel互操作获取Range的NumberFormat
- 不能用vba更改excel图标(在任务栏中)
- 使用Excel文本框中的文本发送Outlook电子邮件 – 错误424:需要对象
- 为什么在应用程序级别的SelectionChange事件不起作用?
- Excel VBA在Mac上运行shell命令?
- 版本12 vs 14对象库导致Excel VBA“代码执行已经停止”?
- 如何将Workbooks.Open()命令应用于VBA中的.csv文件?
- 是否甚至有可能在Excel中检查列A中的重复项,然后比较列B中的相应date?
- 将数据从Excel导入到MS SQL Server(使用导入和导出向导)时如何创build标识列?