全网最详细微信小程序云开发导出excel表格

前言

在进行微信小程序的云开发时,我们有时候可能需要将云数据库内的数据以excel表格的形式导出。但是目前在普遍流传一种使用云函数的方法进行处理的方法。我在进行多次尝试后,均不能成功,我所使用的为先将excel表格生成并上传至云存储内,再对云存储内的表格进行处理。其中,对于表格的上传至云存储具体请参考wx.cloud.uploadFile | 微信开放文档。同时,微信小程序云开发也对导出数据有相关的文档databaseMigrateExport | 微信开放文档。如果你不愿意看我的文章,也可以直接跳转到官方文档学习如何导出。因为我就是参考了官方文档进行的导出。

当然,如果你直接观看官方文档,那么你很有可能会踩到坑,这里还是希望你能观看我的文章。

具体代码:

wx.request({//先获取token
      url: 'https://api.weixin.qq.com/cgi-bin/token',
      data:{
        grant_type:"client_credential",
        appid:"wxd65bc8624b9cb26c",
        secret:this.data.secret,//小程序的密钥
      },
      success:(res)=>{
        this.setData({
          ACCESS_TOKEN:res.data.access_token
        })
        wx.showLoading({
          title: '导出中',
        })
        wx.request({//导出excel表格
          url: 'https://api.weixin.qq.com/tcb/databasemigrateexport?access_token='+res.data.access_token,
          method:"POST",
          data:{
            env:"cloud1-8g88f6d25e8f2bf7",
            file_path:"test_export.csv",
            file_type:2,
            query:"db.collection(\'user\').where({p_st:_.neq(0)}).field({ name: true,p_st:true }).get()"
          },
          success:(res)=>{
            setTimeout(()=>{//设置延时器待导出成功
              wx.request({
                url: 'https://api.weixin.qq.com/tcb/databasemigratequeryinfo?access_token='+this.data.ACCESS_TOKEN,
                method:"POST",
                data:{
                  env:"cloud1-8g88f6d25e8f2bf7",
                  job_id:res.data.job_id
                },
                success:(res)=>{
                  wx.hideLoading()
                  if(res.data.record_success==0){
                    wx.showToast({
                      title: '导出的数据为0',
                    })
                  } else{
                    wx.showToast({
                      title: '导出成功',
                    })
                    this.setData({
                      file_url:res.data.file_url
                    })
                  }
                },
              })
            },10000)
          }
        })
      }
    })

代码解释

在上诉代码中,我们的具体步骤大致为:获取access_token——》使用获取到的access_token与该小程序的密钥进行数据库的导出——》拿到导出的任务id查询导出进度——》当导出进度为成功时,复制下载地址。

其中env为自己的开发环境,file_type为导出的文件格式,当值为2时表示以excel格式导出,query为自己的条件查询语句。

易错点

在导出时,大家可能会遇到以下两个问题。

1:小程序密钥直接放在代码内在代码质量检查时不通过。这是因为小程序密钥为敏感信息,不能直接出现在小程序内。解决办法:将小程序密钥存放与云数据库中,并在使用时查询出来。

2:导出数据时,查询到的导出状态为”等待“。这是因为云开发的数据库导出需要一定的时间,我们必须等到其完成时才能获取到下载地址。解决办法:设置一个较长的延时器等待数据导出完毕再去取值,当然,这是一种治标不治本的方法,正确的方法应该是设置一个定时器,每隔多少毫秒去查询一次导出状态,直至其不为等待中。

感谢观看。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易烊子豪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值