一、引入:
npm install -S node-xlsx
二、生成:
//文件名:writeXlsx.js
const xlsx = require('node-xlsx')
const fs = require('fs');
let row1=['学号','姓名','性别']
let row2=['2018001','马云','男']
let row3=['2018002','马化腾','男']
let row4=['2018003','如花','女']
//data是用来表示sheet中的数据,形式为二维数组
let data1=[row1,row2,row3,row4]
let data2=[row1,row3,row4,row2]
//利用生成的两个data,生成一张“由两个sheet构成的xlsx”(内存形式)
let buffer=xlsx.build([
{name:'sheet1',data:data1},
{name:'sheet2',data:data2},
])
//写出到文件中
fs.writeFileSync('x1.xlsx',buffer)
三、解析并生成json文件:
//文件名:xsl2json.js
const xlsx = require('node-xlsx')
const fs = require('fs');
/**
*
* @param {Excel源文件名称} xls
* @param {第几张工作表} sheetIndex
* @param {excel的行号开始位置} start
* @param {目标json文件} target
*/
module.exports= function (xls,sheetIndex,start,target) {
let sheetList = xlsx.parse(xls);
let sheets = sheetList[sheetIndex]
let index = 0
let stus = []
sheets.data.forEach((row, rowNum) => {
if (rowNum>=start-1) {
let stu = { id: ++index, sn: row[1], name: row[2], gender: row[3] }
stus.push(stu)
}
})
fs.writeFile(target, JSON.stringify({ stus }), 'utf8'
, err => { if (!err) console.log(`共写入数据${index}条`) });
}
四、测试:
const xsl2json=require('./xsl2json')
xsl2json('x1.xlsx',0,2,'stu1.json')
网友评论