基于微信小程序云开发平台云数据库导出Excel文件

一、需求:微信小程序云数据库数据导出

解决方案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)
                  }
                })
              }
            })
          }
        })
      })
  }

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
微信小程序开发数据库提供了导出数据的接口,可以通过函数将数据导出Excel 格式。以下是一个简单的示例代码,可以将指定集合中的数据导出Excel 文件并返回给前端: ```javascript // 函数入口文件 const cloud = require('wx-server-sdk') const xlsx = require('node-xlsx') cloud.init() // 函数入口函数 exports.main = async (event, context) => { const db = cloud.database() const collection = db.collection(event.collection) // 查询指定集合中的数据 const result = await collection.get() // 将数据转换为 Excel 文件 const data = [ ['_id', 'name', 'age'], ...result.data.map(item => [item._id, item.name, item.age]) ] const buffer = xlsx.build([{ name: 'Sheet1', data }]) // 返回 Excel 文件 return { statusCode: 200, headers: { 'Content-Type': 'application/octet-stream', 'Content-Disposition': `attachment; filename="${event.collection}.xlsx"` }, body: buffer.toString('base64') } } ``` 前端代码调用函数并下载 Excel 文件: ```javascript wx.cloud.callFunction({ name: 'exportExcel', data: { collection: 'users' }, success: res => { wx.downloadFile({ url: 'data:application/octet-stream;base64,' + res.result.body, success: res => { wx.saveFile({ tempFilePath: res.tempFilePath, success: res => { wx.showToast({ title: '导出成功' }) } }) } }) } }) ``` 需要注意的是,由于 Excel 文件较大,可能会导致函数返回的数据过大而出现错误。可以通过分页查询或者增加限制条件来避免这个问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值