美文网首页
使用NodeJs完成对MS-Excel的操作

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

作者: JohnYuCN | 来源:发表于2021-04-03 15:14 被阅读0次

    一、引入:

    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')
    

    相关文章

      网友评论

          本文标题:使用NodeJs完成对MS-Excel的操作

          本文链接:https://www.haomeiwen.com/subject/zwlhkltx.html