当前位置:首页 > 技术分析 > 正文内容

小程序云开发轻松实现后台数据批量导出功能

ruisui883个月前 (02-03)技术分析18

小程序导出数据到excel表,借助云开发后台实现excel数据的保存

实现思路

  • 1,创建云函数
  • 2,在云函数里读取云数据库里的数据
  • 3,安装node-xlsx类库(node类库)
  • 4,把云数据库里读取到的数据存到excel里
  • 5,把excel存到云存储里并返回对应的云文件地址
  • 6,通过云文件地址下载excel文件

一、创建excel云函数

关于如何创建云开发小程序,这里我就不再做具体讲解。不知道怎么创建云开发小程序的同学,可以去翻看腾讯云云开发公众号内菜单【技术交流-视频教程】中的教学视频。

创建云函数时有两点需要注意的,给大家说下

  • 1、一定要把app.js里的环境id换成你自己的
  • 2、你的云函数目录要选择你对应的云开发环境(通常这里默认选中的)不过你这里的云开发环境要和你app.js里的保持一致

二、读取云数据库里的数据

我们第一步创建好云函数以后,可以先在云函数里读取我们的云数据库里的数据。

  • 1、先看下我们云数据库里的数据
  • 2、编写云函数,读取云数据库里的数据(一定要记得部署云函数)
  • 3、成功读取到数据

把读取user数据表的完整代码给大家贴出来。

// 云函数入口文件const cloud = require('wx-server-sdk')cloud.init({ env: "test-vsbkm"})// 云函数入口函数exports.main = async(event, context) => { return await cloud.database.collection('users').get;}

三、安装生成excel文件的类库 node-xlsx

通过上面第二步可以看到我们已经成功的拿到需要保存到excel的源数据,我们接下来要做的就是把数据保存到excel

  • 1、安装node-xlsx类库
  • 这一步需要我们事先安装node,因为我们要用到npm命令,通过命令行

npm install node-xlsx

可以看出我们安装完成以后,多了一个package-lock.json的文件

四、编写把数据保存到excel的代码,

下图是我们的核心代码:

这里的数据是我们查询的users表的数据,然后通过下面代码遍历数组,然后存入excel。这里需要注意我们的id,name,weixin要和users表里的对应。

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保存到云存储用的

//4,把excel文件保存到云存储里 return await cloud.uploadFile({ cloudPath: dataCVS, fileContent: buffer, //excel二进制文件 })

下面把完整的excel里的index.js代码贴给大家,记得把云开发环境id换成你自己的。

五、把excel存到云存储里并返回对应的云文件地址

经过上面的步骤,我们已经成功的把数据存到excel里,并把excel文件存到云存储里。可以看下效果。

接着,就可以通过上图的下载地址下载excel文件了。

其实到这里就差不多实现了基本的把数据保存到excel里的功能了,但是为了避免每次导出数据都需要去云开发后台下载excel的麻烦,接下来介绍如何动态获取下载地址。

六、获取云文件地址下载excel文件

通过上图我们可以看出,我们获取下载链接需要用到一个fileID,而这个fileID在我们保存excel到云存储时,有返回,如下图。我们把fileID传给我们获取下载链接的方法即可。

  • 1、我们获取到了下载链接,接下来就要把下载链接显示到页面
  • 2、代码显示到页面以后,我们就要复制这个链接,方便用户粘贴到浏览器或者微信去下载。

下面是完整代码:

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 URLconsole.log 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 } }) } }) }})

梳理下上面代码的逻辑:

  • 1、先通过getUsers云函数去云数据库获取数据。
  • 2、把获取到的数据通过excel云函数把数据保存到excel,然后把excel保存的云存储。
  • 3、获取云存储里的文件下载链接。
  • 4、复制下载链接,到浏览器里下载excel文件。

到这里我们就完整的实现了把数据保存到excel的功能了。

来“中国网”(CIIC_China)官方微信,回复“部位”,告诉你一个减肥小秘诀

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/636.html

标签: node xlsx
分享给朋友:

“小程序云开发轻松实现后台数据批量导出功能” 的相关文章

Lindroid开源应用:在安卓手机 / 平板上安装 Linux发行版

IT之家 6 月 19 日消息,Erfan Abdi 本月发布了 Lindroid 开源应用程序,让用户可以在安卓手机上安装 GNU / Linux 发行版,在完全支持手机硬件的情况下可以运行 Linux 应用程序。Lindroid 开源应用程序就是将 Linux 放入容器中,使用 Halium 等...

如何在GitLab上回退指定版本的代码?GitLab回退指定版本问题分析

在Git中,回退到指定版本并不是删除或撤销之前的提交,而是创建一个新的提交,该提交包含指定版本的内容。这意味着您需要将当前代码更改与指定版本之间的差异进行比较,并将其合并到一个新的提交中。如果您没有更新本地代码,并且您希望将 GitLab 仓库回退到指定版本,您可以使用以下命令:git fetchg...

「Git迁移」三行命令迁移Git包含提交历史,分支,tag标签等信息

问题描述:公司需要将一个git远程服务器的全部已有项目迁移到一台新服务器的Gitlab中,其中需要包含全部的提交纪录,已有的全部分支与全部打tag标签,目前此工作已全部迁移完毕,特此记录一下操作步骤环境描述:1. 要迁移的远程Git:Gitblit2. 迁移目的Git:Gitlab3. 暂存代码的P...

高效使用 Vim 编辑器的 10 个技巧

在 Reverb,我们使用 MacVim 来标准化开发环境,使配对更容易,并提高效率。当我开始使用 Reverb 时,我以前从未使用过 Vim。我花了几个星期才开始感到舒服,但如果没有这样的提示,可能需要几个月的时间。这里有十个技巧可以帮助你在学习使用 Vim 时提高效率。1. 通过提高按键重复率来...

再来一波黑科技工具,低调使用

静读天下静读天下是一个特别优秀的电子书阅读器。它上面有多个在线书库,像古登堡计划,很多种优秀的书杂志,都可以下载来阅读。它还能智能识别章节功能,还支持外置的语音阅读功能。它支持多种文本格式,比如说txt,pdf,epub,mobi等等。为了便于阅读它还有10 种配色方式,还有夜间模式。不过免费版有广...

Vue实战篇|使用路由管理用户权限(动态路由)

权限控制是后台管理系统比较常见的需求,如果我们需要对某些页面的添加权限控制的话,那我们可以在路由管理中的权限做一些校验,没有通过权限校验的给出相应的提示或者直接跳转到报错页面。跟着我一起来学vue实战篇路由管理权限吧!权限校验函数getCurrentAuthority()函数用于获取当前用户权限,一...