后经查资料,改用 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")
Xlsx是MicrosoftOfficeEXCEL2007/2010/2013/2016文档的一种扩展名,自Office2007开始使用,是用新的基于XML的压缩文件格式取代了其目前专有的默认文件格式,在传统的文件名扩展名后面添加了字母x,使其占用空间更小。而XML,是指一种可扩展的标识语言,是国际上定义电子文件结构和内容描述的标准,是一种非常复杂的文档结构,主要用于大量高度结构化数据的防卫区和其它各种工业领域,便于分类和索引。
需要注意的是:当officeOffice2000、XP、2003的用户试图打开.xlsx或.docx格式的文件时,往往会失败,这是使用版本较低而且不兼容的原因,以上用户可以在接收或复制该类文件之前,先在该文件生成的系统上,也就是office2007中打开该类文件,然后文件再另存为2000-2003的格式文档。
目前,许多管理系统需要将和Excel文件(xlsx)一样丰富的公式和数据处理功能,嵌入到企业管理系统中,比如财务数据模型、风险分析、保险计算、工程应用等等。
所以需要把xlsx文件数据导入到工程中,或者从系统导出到xlsx文件中,而许多的表格软件也支持xlsx文件的导入导出功能,xlsx文件的导入导出广泛地应用于管理、统计财经、金融等众多领域。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)