node-xlsx 读取上传 xlsx文件转成json插入数据库

一.路由处处理

router.post('/upload',function (req,res) {
    console.log("############# POST / UPLOAD   ##############")
    //fields  表示普通控件      files表示文件控件
    let form = new formidable.IncomingForm();
    form.encoding = 'utf-8'
    form.parse(req, (err, fields, files) => {
        let workbook = xlsx.parse(files.file.path)//node-xlsx模块的prase(路径)方法读取xlsx文件
        console.log(workbook)
        user.setXlsxData(workbook,res)
        res.send('成功');
    })
})
xlsx.parse处理后的格式

 二.在dao层的user.setXlsxData处转成json(项目使用了分层结构)

 static  setXlsxData(req,resp){
      // console.log(req)
      let xlsxData=req
      xlsxData=xlsxData[0].data
      let inXlsxArr=[];
      for (let i=1;i<xlsxData.length;i++){
         if (xlsxData[i][0]!=0){
            let xlsxObj={};
            xlsxObj.id=xlsxData[i][0]
            xlsxObj.username=xlsxData[i][1]
            xlsxObj.password=xlsxData[i][2]
            xlsxObj.head=xlsxData[i][3]||'1.jpg'
            xlsxObj.address=xlsxData[i][4]
            xlsxObj.sex=xlsxData[i][5]
            xlsxObj.classes=xlsxData[i][6]
            xlsxObj.type=xlsxData[i][7]
            inXlsxArr.push(xlsxObj)
         }
      }
      this.inXlsxData(inXlsxArr)
      console.log('点击导入',inXlsxArr)

   }

转换后的格式

 三.在model层插入数据库

 static inXlsxData(inXlsxArr){
        return new Promise((resolve, reject)=>{
            for (let i=0;i<inXlsxArr.length;i++){
                let sql="insert into user (id,username,password,head,address,sex,classes,type) values("+inXlsxArr[i].id+", '"+inXlsxArr[i].username+"' , '"+inXlsxArr[i].password+"', '"+inXlsxArr[i].head+"',"+
                    "'"+inXlsxArr[i].address+"', '"+inXlsxArr[i].sex+"', '"+inXlsxArr[i].classes+"', '"+inXlsxArr[i].type+"')"
                this.query(sql).then(result=>{
                    resolve(result)
                }).catch(err=>{
                    reject(err)
                })
            }
        })
    }

备注:由于这也是自己做的功能,做的还不够完善,比如没有检测数据重复不让插入,还在完善中,其中node的express框架分层结构不够完美(太菜了),所以也只是记录了 xlsx转成json插入数据库大概思路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值