小程序导出数据到excel表,借助云开发后台实现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换成你自己的。

const cloud = require('wx-server-sdk')
//这里最好也初始化一下你的云开发环境
cloud.init({env: "test-vsbkm"
})
//操作excel用的类库
const xlsx = require('node-xlsx');// 云函数入口函数
exports.main = async(event, context) => {try {let {userdata} = event//1,定义excel表格名let dataCVS = 'test.xlsx'//2,定义存储数据的let alldata = [];let row = ['id', '姓名', '微信号']; //表属性alldata.push(row);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)}//3,把数据保存到excel里var buffer = await xlsx.build([{name: "mySheetName",data: alldata}]);//4,把excel文件保存到云存储里return await cloud.uploadFile({cloudPath: dataCVS,fileContent: buffer, //excel二进制文件})} catch (e) {console.error(e)return e}
}

五、把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 = thiswx.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("文件下载链接", res.fileList[0].tempFileURL)that.setData({fileUrl: res.fileList[0].tempFileURL})},fail: err => {// handle error}})},//复制excel文件下载链接copyFileUrl() {let that=thiswx.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的功能了。

文章有点长,知识点有点多,但是大家理解上述内容后,就可以对小程序云开发的云函数、云数据库、云存储有一个较为完整的了解过程。


如果你想要了解更多关于云开发CloudBase相关的技术故事/技术实战经验,请扫码关注【腾讯云云开发】公众号~

转载于:https://www.cnblogs.com/CloudBase/p/11495819.html

借助云开发轻松实现后台数据批量导出丨实战相关推荐

  1. 小程序云开发_借助小程序云开发制作校园导览小程序丨实战

    导语 偌大校园,寻路犯难.没关系!本文教你借助云开发制作精美校园导览小程序,带你走遍校园的每个角落,发现不一样的风景. 背景 刚入学的新生要想不迷失在偌大的校园,除了依靠不怎么可靠的路边标识外,总会收 ...

  2. 借助小程序·云开发制作校园导览小程序丨实战

    背景 当你刚上大学的时候,要想不迷失校园,除了依靠不怎么可靠的路边标识外,总会收到那么一张卡通绘制的校园地图: 这种静态图片可以让我们快速地了解到所需的地理位置信息,但使用和思考过后,会发现以下问题: ...

  3. 基于小程序·云开发构建高考查分小程序丨实战

    2019高考报名人数达到了 1031 万的新高,作为一名三年前参考高考的准程序猿,赶在高考前,加班加点从零开始做了一款高考查分小程序,算是一名老学长送给学弟学妹们的高考礼.上线仅 1 个月,用户数就突 ...

  4. c#后台如何导出excel到本地_小程序导出数据到excel表,借助云开发后台实现excel数据的保存...

    我们在做小程序开发的过程中,可能会有这样的需求,就是把我们云数据库里的数据批量导出到excel表里.如果直接在小程序里写是实现不了的,所以我们要借助小程序的云开发功能了.这里需要用到云函数,云存储和云 ...

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

    目录 老规矩,先看效果图 实现思路 一,创建excel云函数 二,读取云数据库里的数据 三,安装生成excel文件的类库 node-xlsx 四,编写把数据保存到excel的代码, 五,把excel存 ...

  6. 导出测试点的信号名_小程序导出数据到excel表,借助云开发云函数实现excel数据的保存...

    我们在做小程序开发的过程中,可能会有这样的需求,就是把我们云数据库里的数据批量导出到excel表里.如果直接在小程序里写是实现不了的,所以我们要借助小程序的云开发功能了.这里需要用到云函数,云存储和云 ...

  7. js实现excel块拖拉数据_小程序导出数据到excel表,借助云开发云函数实现excel数据的保存...

    我们在做小程序开发的过程中,可能会有这样的需求,就是把我们云数据库里的数据批量导出到excel表里.如果直接在小程序里写是实现不了的,所以我们要借助小程序的云开发功能了.这里需要用到云函数,云存储和云 ...

  8. 【云速建站】后台数据批量导入导出

    [摘要] 主要分享了云速建站后台管理的批量导入数据操作方法,如产品分类.产品.淘宝在售产品等的批量导入 1      产品分类的导入导出 1.1 进入后台管理 首先登录云速建站控制台,进入后台管理-产 ...

  9. 借助云开发,利用订阅消息,云函数路由实现小程序好友一对一聊天,添加好友等仿微信功能

    微信小程序借助云开发,利用订阅消息,云函数路由实现小程序好友一对一聊天,添加好友等仿微信功能 这篇文章已经进行了更新,请点此进行查看 仿微信好友聊天 主要功能有 后续可能补充功能 详细介绍 注意 保存 ...

最新文章

  1. 搜狗CEO王小川:AI领域存在泡沫 但留下的是珍珠
  2. 如何惹毛一名开发者?
  3. 将本珊计算机组成原理,计算机组成原理,懂的老师帮忙解答下
  4. appium java 测试用例_如何在C#中使用Appium编写测试用例?
  5. ubuntu-E:Encountered a section with no Package: header的解决办法
  6. javascript --- 实现Ajax的代码
  7. php如何生成唯一随机数,PHP实现生成唯一会员卡号(不重复的随机数)
  8. 中国网吧 20 年往事,端游式微、手游主宰
  9. ASCII码表 0~127
  10. 全新防火墙6.0 DHCP线路上网配置
  11. html链接抓取,【SEO工具】网页超链接提取工具(无语网站链接抓取器)
  12. PS 2022,PR 2018,AE 2017【百度网盘链接,没套路】
  13. springboot 实现长链接转短链接
  14. 怎么制作QQ背景音乐链接
  15. STM32L476R快速入门——前期准备(项目设计专题)
  16. 交通运输部办公厅关于公布无车承运人试点考核合格企业名单的通知
  17. 动物判别系统python实现
  18. 阿里云独享虚拟主机,安装多个二级域名的网站
  19. [原创]持续给力:jQuery实现表格隔行变色效果案例详解
  20. RGP游戏的非主流应用——虚拟地图

热门文章

  1. java学习(135):map中泛型使用
  2. linux lnmp yum版安装
  3. 重庆邮电计算机科学分数线,2020重庆邮电大学录取分数线已公布
  4. 武汉科技大学计算机转专业吗,武汉科技大学普通本科生专业选择与转专业管理办法...
  5. linux winrar 安装目录,WinRAR 5.61发布,提供Linux版本下载,附安装方法
  6. Python模块学习
  7. 面向对象之反射、包装、(定制)
  8. php 获取某个月的周一
  9. 设置WordPress文章关键词自动获取,文章所属分类名称,描述自动获取文章内容,给文章的图片自动加上AlT标签...
  10. CCF - 201703-1 - 分蛋糕