前端页面
<template>
<div class="home">
<el-upload
class="upload-demo"
name='photo'
action="http://127.0.0.1:7777/up"
:on-success="handleAvatarSuccess"
multiple
:limit="3"
:file-list="fileList">
<el-button size="small" type="primary" class="up">+批量导入</el-button>
</el-upload>
</div>
</template>
<script>
// @ is an alias to /src
import HelloWorld from "@/components/HelloWorld.vue";
export default {
name: "Home",
components: {
HelloWorld,
},
data() {
return {
fileList: [],
};
},
methods: {
// 上传成功后返回的信息
handleAvatarSuccess(res, file) {
this.imageUrl = URL.createObjectURL(file.raw);
},
},
};
</script>
前端页面只有一个文件上传的按钮
下图是我们要批量导入的数据
后端代码
我们需要下载一个两个模块,一个是文件上传的multer模块,还有一个是node-xlsx模块,使用npm下载,并引入他们
var express = require('express');
var router = express.Router();
var user=require('../module/user') //user表
var multer=require('multer');
var uploads=multer({dest:'./public/uploads'})
var xlsx=require('node-xlsx')
var fs=require('fs')
var path=require('path')
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
router.post('/up',uploads.single('photo'),async function (req,res){
//给文件添加后缀名
var pash=path.extname(req.file.originalname)
// console.log(pash); //打印出来是文件的后缀名
fs.renameSync(req.file.path,req.file.path+pash,(err)=>{})
// 第一个文件sheet1
var {data}=xlsx.parse(req.file.path+pash)[0]
// 切的第一排表头
data.splice(0,1)
console.log(data);
var list=[]
//定义一个空列表,并且循环列表
data.forEach(item=>{
//把数据取出并添加到list列表中,使他形成一个[{},{}]数组包多个对象的形式,数据名必须跟集合里的字段一样
list.push({
name:item[2],
zhanghao:item[0],
sex:item[7],
password:item[1],
bumen:item[3],
eamil:item[4],
phone:item[5],
zengjain:item[6],
})
})
//把数据插入到表中
user.insertMany(list)
res.json({code:200,msg:'批量导入成功'})
})
module.exports = router;
data.splice(0,1)切割的数据是我们表格中的第一行,如下所示
然后我们查看我们的数据库即可
版权声明:本文为qq_60976312原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。