[微信开发]小程序实现上传到云存储,解析Excel表并添加到云开发数据库
[微信开发]小程序实现上传到云存储,解析Excel表并添加到云开发数据库
共有一下步骤:
一、选择Excel文件
二、上传文件到云存储
三、下载node.js并部署npm
四、在云开发里面创建一个新的空的表
五、创建并编写云函数
六、利用wx.cloud.callFunction调用我们编辑的云函数
七、测试
八、全部代码
九、过程中使用到的一些文章
一、选择Excel文件:
先看看我的excel:
①界面添加一个按钮,为按钮添加一个监听事件chooseExcel;
<button bindtap="chooseExcel">选择excel</button>
②chooseExcel利用wx.chooseMessageFile打开文件夹,选择Excel文件,拿到文件地址;
//选择excel表
chooseExcel(){
let that = this;
wx.chooseMessageFile({
count: 1,
//extension: [],
type: 'file',
success: (result) => {
console.log("选择Excel表成功!",result);
let path = result.tempFiles[0].path;
//that.uploadExcel(path);//调用上传Excel到云存储的方法
},
fail: (res) => {},
complete: (res) => {},
})
},
二、上传文件到云存储:
利用wx.cloud.uploadFile以及上面的文件地址,上传Excel表到云存储,拿到云存储的数据地址;
//上传Excel到云存储
uploadExcel(path){
let that = this;
wx.cloud.uploadFile({
cloudPath : new Date().getTime() + '.xls',
filePath : path,
success:function(res){
console.log("上传Excel到云存储成功!",res);
//that.parseExcel(res.fileID);//解析Excel表
},
fail:function(err){
console.log("上传Excel到云存储失败!",err);
}
})
},
三、下载node.js并部署npm:
这里就不讲了,需要的就去下面别人写的文章的链接看看吧:
node.js和npm的安装与环境配置(2021最新版)_npm install_小绵杨Yancy的博客-CSDN博客
四、在云开发里面创建一个新的空的表:
我这里的名字叫:testExcel
五、创建并编写云函数:
①新建一个Node.js云函数
②在终端打开刚创建的云函数:
③输入 npm install node-xlsx 安装依赖,有进度条说明正在安装:
④等待一会儿,安装好后,在index.js中写:
const cloud = require('wx-server-sdk')
cloud.init({
env : cloud.DYNAMIC_CURRENT_ENV//本来这里是空的,但有时候如果老是解析失败,可能是有的电脑需要在云函数里也要初始化云开发环境
})
var xlsx = require('node-xlsx');
const db = cloud.database()
exports.main = async(event, context) => {
let {
fileID
} = event
//1,通过fileID下载云存储里的excel文件
const res = await cloud.downloadFile({
fileID: fileID,
})
const buffer = res.fileContent
const all_excel_data = [] //用来存储所有的excel数据
//2,解析excel文件里的数据
var sheets = xlsx.parse(buffer); //获取到所有sheets
sheets.forEach(function(sheet) {
console.log(sheet['name']);
for (var rowId in sheet['data']) {
//console.log(rowId);
var row = sheet['data'][rowId]; //第几行数据
if (rowId > 0 && row) { //第一行是表格标题,所以我们要从第2行开始读
//3,把解析到的数据存到excelList数据表里
all_excel_data.push({
name: row[0],
sex: row[1],
age : row[2],
city : row[3],
number: row[4]
})
}
}
});
// 一起添加所有数据 注意填写自己的表名!
var result=await db.collection('testExcel').add({data:all_excel_data}).then(res=>{
return res
}).catch(err=>{return err})
return result
}
⑤同步云函数!
六、利用wx.cloud.callFunction调用我们编辑的云函数:
//解析Excel表
parseExcel(fileId){
wx.cloud.callFunction({
name : 'excel',
data : {
fileID : fileId
},
success(res){
console.log("解析Excel表成功!",res);
},
fail(err){
console.log("解析Excel表失败!",err);
}
})
},
七、测试。点击按钮,选择excel进行测试:
这里可以看到我们在res中有一个数组,然后我们再去表里看看:
成功!
八、附上全部代码:
1.wxml:
<!--pages/demo02/demo02.wxml-->
<button bindtap="chooseExcel">选择excel</button>
2.js:
// pages/demo02/demo02.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
//选择excel表
chooseExcel(){
let that = this;
wx.chooseMessageFile({
count: 1,
//extension: [],
type: 'file',
success: (result) => {
console.log("选择Excel表成功!",result);
let path = result.tempFiles[0].path;
//that.uploadExcel(path);//调用上传Excel到云存储的方法
},
fail: (res) => {},
complete: (res) => {},
})
},
//上传Excel到云存储
uploadExcel(path){
let that = this;
wx.cloud.uploadFile({
cloudPath : new Date().getTime() + '.xls',
filePath : path,
success:function(res){
console.log("上传Excel到云存储成功!",res);
//that.parseExcel(res.fileID);//解析Excel表
},
fail:function(err){
console.log("上传Excel到云存储失败!",err);
}
})
},
//解析Excel表
parseExcel(fileId){
wx.cloud.callFunction({
name : 'excel',
data : {
fileID : fileId
},
success(res){
console.log("解析Excel表成功!",res);
},
fail(err){
console.log("解析Excel表失败!",err);
}
})
},
})
3.excel中的index.js:
const cloud = require('wx-server-sdk')
cloud.init({
env : cloud.DYNAMIC_CURRENT_ENV//本来这里是空的,但有时候如果老是解析失败,可能是有的电脑需要在云函数里也要初始化云开发环境
})
var xlsx = require('node-xlsx');
const db = cloud.database()
exports.main = async(event, context) => {
let {
fileID
} = event
//1,通过fileID下载云存储里的excel文件
const res = await cloud.downloadFile({
fileID: fileID,
})
const buffer = res.fileContent
const all_excel_data = [] //用来存储所有的excel数据
//2,解析excel文件里的数据
var sheets = xlsx.parse(buffer); //获取到所有sheets
sheets.forEach(function(sheet) {
console.log(sheet['name']);
for (var rowId in sheet['data']) {
//console.log(rowId);
var row = sheet['data'][rowId]; //第几行数据
if (rowId > 0 && row) { //第一行是表格标题,所以我们要从第2行开始读
//3,把解析到的数据存到excelList数据表里
all_excel_data.push({
name: row[0],
sex: row[1],
age : row[2],
city : row[3],
number: row[4]
})
}
}
});
// 一起添加所有数据 注意填写自己的表名!
var result=await db.collection('testExcel').add({data:all_excel_data}).then(res=>{
return res
}).catch(err=>{return err})
return result
}
九、过程中使用到的一些文章:
1.
小程序读取excel表格数据,并存储到云数据库 | 微信开放社区
2.
node.js和npm的安装与环境配置(2021最新版)_npm install_小绵杨Yancy的博客-CSDN博客
感谢!
更多推荐
所有评论(0)