一、需求:微信小程序云数据库数据导出
解决方案1:导出为excel文件,利用excel里的数据分析功能分析(本文章采取的方法)
解决方案2:利用ECharts实现数据可视化(需求没这么高,就没用此法)
二、步骤:
1.创建云函数
1.1创建云函数(excelExport);
1.2终端输入 npm install node-xlsx (如果你是新手,别忘了下载Node.js);
1.3下面是云函数的index.js文件中的内容;
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({ env: '填你字节的' }) // 使用当前云环境
const xlsx = require('node-xlsx')
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
try {
let schoolExcel = await db.collection('users').where({}).get() //将数据库中的的数据添加到我们自定义的excel表格中!
let dataCVS = `schoolExcel-${Math.floor(Math.random()*100000000)}.xlsx`
let alldata = []
let row = ['姓名', '学号', '做题时间', '分数']
alldata.push(row)
for (let key = 0; key < schoolExcel.data.length; key++) {
let all = [];
all.push(schoolExcel.data[key].name)
all.push(schoolExcel.data[key].username)
all.push(schoolExcel.data[key].record[0].date)
all.push(schoolExcel.data[key].record[0].score)
alldata.push(all)
}
var buffer = xlsx.build([{
name: 'mySheetName',
data: alldata
}]);
//上传到云存储
return await cloud.uploadFile({
cloudPath: dataCVS,
fileContent: buffer
})
} catch (error) {
console.error(error)
}
}
2.实现导出的JS函数
可以给某个按钮绑定一个tap事件(getExcelURL)
getExcelURL() {
wx.cloud.callFunction({
name: "excelExport", //你自己的云函数名字
data: {}
})
.then(res => {
console.log(res)
//获取下载地址
wx.cloud.getTempFileURL({
fileList: [res.result],
success: res => {
console.log("excel文件下载连接获取成功:", res.fileList[0].tempFileURL)
this.setData({
tempFileURL: res.fileList[0].tempFileURL
})
wx.setClipboardData({ //设置微信剪贴板内容
data: this.data.tempFileURL,
success(res) {
wx.getClipboardData({ //获取微信剪贴板内容
success(res) {
console.log('复制成功:', res.data)
}
})
}
})
}
})
})
}