使用NodeJs完成对MS-Excel的操作

2021-04-03  本文已影响0人  JohnYuCN

一、引入:

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')
上一篇下一篇

猜你喜欢

热点阅读