node.js解析excel大文件的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js解析excel大文件的问题相关的知识,希望对你有一定的参考价值。

参考技术A 问题:使用 koa-bodyparser 可以解析post提交的问题,但是发现获取不到formdata上传的文件。
  后经查资料,改用 koa-body 解决:
constkoaBody = require('koa-body'); app.use(koaBody( multipart:true, formidable: maxFileSize:200*1024*1024//设置上传文件大小最大限制,默认2M ))
  然后就可以在 ctx.request.files 里面获取到上传的 文件信息了。ctx.request.files 为一个对象,里面包含一个 file 字段(为你前端上传定义的值),值为文件信息,主要是文件name和path,path为临时存储路径。
二、解析xlsx文件信息
  主要使用模块 node-xlsx :npm i xlsx --save
1、加载模块
  使用模块:fs--主要用于写入文件;node-xlsx主要用于转换xlsx数据和读取xlsx的文件数据;
constfs = require('fs')constxlsx = require('node-xlsx');//读写xlsx的插件
2、读取功能
  读取功能相对简单,直接使用模块的 prase(路径) 方法就能读取
let list = xlsx.parse("./doc/hello.xlsx");
  返回结果,name:表名,data:二维数组。(由于Excel以表格的形式表示,因此表格的数据都是通过二维数组进行接收。)
  需要注意的是:data里的第一行数组为表头的信息
[    name:'firstSheet', data: [ [Array], [Array] ] ,    name:'secondSheet', data: [ [Array], [Array] ] ]
3、写入功能
  写入功能,对应的写入数据与上面读取功能的返回格式需要一致,以数组的形式,name:表名,data:二维数组(Excel每行每列的数据)
  如下面代码,生成一个Excel文件,分别两张表,表名分别是firstSheet,secondSheet
let xlsxObj =[ name:'firstSheet', data: [ [1,2,3], [4,5,6] ], , name:'secondSheet', data: [ [7,8,9], [10,1,12] ], ]
  生成Excel文件:
  fs.writeFileSync(路径,Buffer数据)
  xlsx.build(xlsxObj) 会将数组转换为Buffer数据
  执行下面代码就会生成对应的Excel文件
fs.writeFileSync('./doc/hello.xlsx', xlsx.build(xlsxObj),"binary")

以上是关于node.js解析excel大文件的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何通过node.js中的JSONStream模块解析一个大的、换行符分隔的JSON文件?

在Node.js中使用ejsexcel输出EXCEL文件

js node.js读取excel文件返回为json文本

js node.js读取excel文件返回为json文本

js node.js读取excel文件返回为json文本

node读写Excel操作