我正在使用nodejs来解析xlsx文件,并使用模块“jsxlsx_async”,并将值存储在mongodb中。
我的代码:
我的代码:
xlsx(file,function(err,wb){ if (err){ //handling err } //get data array wb.getSheetDataByName('Sheet1',data){ if (err){ //handling err } //handling data console.log(data); }); });
使用:Nodejs:v0.10.25,MongoDB:v2.2.6,
操作系统:win8,RAM:6GB
我的步骤:
1.读取上传的xlsx文件并将这些读取值保存到JS对象中。
2.通过迭代JS对象上的值,将读取的值保存为mongodb集合。
这可以用较小的xlsx文件正常工作,但是我想解析大于50MB的xlsx文件。
我的问题是我将整个xlsx值存储在单个JS对象中。
请为解决方案提供一些更好的想法。
有没有更好的方法来读取xlsx行,并一次保存一行行被读取?
解决方法
之前我有类似的问题。我需要从txt文件中读取一个巨大的JSON对象,但是由于内存不足而导致进程死机。关于这个问题,我的解决方案是把这个巨大的文件分成2个文件。
关于你的问题,我的建议是:
>尝试增加v8引擎的内存限制。 https://github.com/joyent/node/wiki/FAQ示例(8192表示8GB):
node --max-old-space-size=8192 server.js
>如果#1不起作用,请尝试使用此lib:https://github.com/ffalt/xlsx-extract逐行阅读xlsx文件
>如果#1,#2不工作,请尝试https://github.com/extrabacon/xlrd-parser