在答题小程序中,如何将数据库里的排行榜数据导出为excel?
需要借助第三方工具包,没错,就是node-xlsx了。
node-xlsx不仅可以解析Excel文件从中取出数据,还能将数据生成Excel文件,因此我们可以将云数据库里面的数据取出来之后保存为Excel文件,然后再将保存的Excel文件上传到云存储。
1、安装node-xlsx
npm install node-xlsx
2、引入node-xlsx
const xlsx = require('node-xlsx');
3、查询数据
const dataList = await db.collection("rank").where({ score:_.gt(0) }).orderBy('score', 'desc').limit(100).get()
4、处理数据并导出为excel
const data = dataList.data
let sheet = []
let title = ['排名','姓名','支部','答题次数','累计总分']
await sheet.push(title)
for(let rowIndex in data){
let rowcontent = []
rowcontent.push(data[rowIndex].rank)
rowcontent.push(data[rowIndex].name)
rowcontent.push(data[rowIndex].dept)
rowcontent.push(data[rowIndex].num)
rowcontent.push(data[rowIndex].score)
await sheet.push(rowcontent)
}
const buffer = await xlsx.build([{name: "成绩排行榜", data: sheet}])
5、在云存储生成excel文档
await cloud.uploadFile({ cloudPath: '成绩排行榜.xlsx', fileContent: buffer, })
6、下载到本地