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

node.js解析excel大文件的问题,第1张

问题:使用 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")

nodejs作为功能强大的后端开发语言,有许多第三方包扩展nodejs能力。读写excel文件也有相关的第三方扩展。

本文介绍nodejs下如何通过使用node-xlsx扩展读写excel文件。

node-xlsx: 基于Node.js解析excel文件数据及生成excel文件;

excel-parser: 基于Node.js解析excel文件数据,支持xls及xlsx格式文件;

excel-export : 基于Node.js将数据生成导出excel文件,生成文件格式为xlsx;

node-xlrd: 基于node.js从excel文件中提取数据,仅支持xls格式文件。

用一个处理Excel文件的项目来说明

首先新建文件夹xlsx,在此文件夹下安装依赖

新建input文件夹,并将需要修改的文件拷贝到此文件夹下

新建index.js文件

执行js脚本:

在output文件夹下查询修改后文件


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6692721.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存