一、excel文件批量导入数据到数据库
1.创建node.js函数upload,点击upload右键外部终端中安装类库
npm install node-xlsx
2.云函数代码
const cloud = require('wx-server-sdk')
cloud.init({
env:'云环境'
})
var xlsx = require('node-xlsx');
const db = cloud.database()
exports.main = async(event, context) => {
let fileID=event.fileID
//1,通过fileID下载云存储里的excel文件
const res = await cloud.downloadFile({
fileID: fileID,
})
console.log('下载的文件',res);
const file_xlsx = res.fileContent
var files = xlsx.parse(file_xlsx);
console.log('获得内容表格数组',files[0].data);
function addfile(i){
db.collection("product_new").add({
data:{
product_name: files[0].data[i][0], //商品名
product_classify: files[0].data[i][1], //分类
product_price: files[0].data[i][2], //价格
product_size: files[0].data[i][3], //规格
bank:files[0].data[i][4], //品牌
festival:files[0].data[i][5], //节日
product_stock:files[0].data[i][6], //库存量
product_seles:files[0].data[i][7], //销售量
product_origin:files[0].data[i][8], //产地
product_store:files[0].data[i][9], //存储方式
product_warranty:files[0].data[i][10], //保质期
openid:event.openid,
product_time:event.times,
}
}).then(res=>{
i++
if(i==files[0].data.length){
//循环结束删除上传的文件不占用云存储
cloud.deleteFile({
fileList:[fileID],
success(res){
return console.log(res,'删除文件')
},
})
}else{
addfile(i)
}
})
}
addfile(1)
}
js代码
// 上传表格点击事件
chooseExcel(){
var that=this
wx.chooseMessageFile({
count: 1,
type:'file',
success(res){
var path=res.tempFiles[0].path;
console.log("选择excel文件成功",path)
that.uploadExcel(path);
}
})
},
// 上传表格
uploadExcel(path){
var that=this
wx.cloud.uploadFile({
cloudPath:new Date().getTime()+'.xls',
filePath:path, //文件路径
success:res=>{
console.log("上传成功",res.fileID)
that.jiexi(res.fileID)
},
fail:err=>{
console.log("上传失败",err)
}
})
},
// 解析并上传数据库
jiexi(fileId){
wx.cloud.callFunction({
name:"upload",
data:{
fileID:fileId,
openid:this.data.openid,
times:this.data.times
},
success(res){
console.log("解析并上传成功",res)
wx.showModal({
title: '温馨提示',
content: '商品信息上传成功',
success: function (res) {
if (res.confirm) {//这里是点击了确定以后
console.log('用户点击确定')
} else {//这里是点击了取消以后
console.log('用户点击取消')
}
}
})
},
fail(res){
console.log("解析失败",res)
}
})
},