咱们在开发小程序的过程当中,可能会有这样的需求:如何将云数据库里的数据批量导出到excel表里? 这个需求能够用强大的云开发轻松实现! 这里须要用到云函数,云存储和云数据库。能够说经过这一个例子,把小程序云开发相关的知识都用到了。下面就来介绍如何实现node
关于如何建立云开发小程序,这里我就再也不作具体讲解。不知道怎么建立云开发小程序的同窗,能够去翻看腾讯云云开发公众号内菜单【技术交流-视频教程】中的教学视频。数据库
咱们第一步建立好云函数之后,能够先在云函数里读取咱们的云数据库里的数据。npm
把读取user数据表的完整代码给你们贴出来。json
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({
env: "test-vsbkm"
})
// 云函数入口函数
exports.main = async(event, context) => {
return await cloud.database().collection('users').get();
}
复制代码
经过上面第二步能够看到咱们已经成功的拿到须要保存到excel的源数据,咱们接下来要作的就是把数据保存到excel小程序
npm install node-xlsx
复制代码
能够看出咱们安装完成之后,多了一个package-lock.json的文件 数组
下图是咱们的核心代码: 浏览器
for (let key in userdata) {
let arr = [];
arr.push(userdata[key].id);
arr.push(userdata[key].name);
arr.push(userdata[key].weixin);
alldata.push(arr)
}
复制代码
还有下面这段代码,是把excel保存到云存储用的bash
//4,把excel文件保存到云存储里
return await cloud.uploadFile({
cloudPath: dataCVS,
fileContent: buffer, //excel二进制文件
})
复制代码
下面把完整的excel里的index.js代码贴给你们,记得把云开发环境id换成你本身的。微信
const cloud = require('wx-server-sdk')
//这里最好也初始化一下你的云开发环境
cloud.init({
env: "test-vsbkm"
})
//操做excel用的类库
const xlsx = require('node-xlsx');
// 云函数入口函数
exports.main = async(event, context) => {
try {
let {userdata} = event
//1,定义excel表格名
let dataCVS = 'test.xlsx'
//2,定义存储数据的
let alldata = [];
let row = ['id', '姓名', '微信号']; //表属性
alldata.push(row);
for (let key in userdata) {
let arr = [];
arr.push(userdata[key].id);
arr.push(userdata[key].name);
arr.push(userdata[key].weixin);
alldata.push(arr)
}
//3,把数据保存到excel里
var buffer = await xlsx.build([{
name: "mySheetName",
data: alldata
}]);
//4,把excel文件保存到云存储里
return await cloud.uploadFile({
cloudPath: dataCVS,
fileContent: buffer, //excel二进制文件
})
} catch (e) {
console.error(e)
return e
}
}
复制代码
通过上面的步骤,咱们已经成功的把数据存到excel里,并把excel文件存到云存储里。能够看下效果。 app
下面是完整代码:
Page({
onLoad: function(options) {
let that = this;
//读取users表数据
wx.cloud.callFunction({
name: "getUsers",
success(res) {
console.log("读取成功", res.result.data)
that.savaExcel(res.result.data)
},
fail(res) {
console.log("读取失败", res)
}
})
},
//把数据保存到excel里,并把excel保存到云存储
savaExcel(userdata) {
let that = this
wx.cloud.callFunction({
name: "excel",
data: {
userdata: userdata
},
success(res) {
console.log("保存成功", res)
that.getFileUrl(res.result.fileID)
},
fail(res) {
console.log("保存失败", res)
}
})
},
//获取云存储文件下载地址,这个地址有效期一天
getFileUrl(fileID) {
let that = this;
wx.cloud.getTempFileURL({
fileList: [fileID],
success: res => {
// get temp file URL
console.log("文件下载连接", res.fileList[0].tempFileURL)
that.setData({
fileUrl: res.fileList[0].tempFileURL
})
},
fail: err => {
// handle error
}
})
},
//复制excel文件下载连接
copyFileUrl() {
let that=this
wx.setClipboardData({
data: that.data.fileUrl,
success(res) {
wx.getClipboardData({
success(res) {
console.log("复制成功",res.data) // data
}
})
}
})
}
})
复制代码
梳理下上面代码的逻辑:
到这里咱们就完整的实现了把数据保存到excel的功能了。
文章有点长,知识点有点多,可是你们理解上述内容后,就能够对小程序云开发的云函数、云数据库、云存储有一个较为完整的了解过程。
若是你想要了解更多关于云开发CloudBase相关的技术故事/技术实战经验,请扫码关注【腾讯云云开发】公众号~