小程序导出数据到excel表,借助云开发后台实现excel数据的保存
目录
老规矩,先看效果图
实现思路
一,创建excel云函数
二,读取云数据库里的数据
三,安装生成excel文件的类库 node-xlsx
四,编写把数据保存到excel的代码,
五,把excel存到云存储里并返回对应的云文件地址
六,获取云文件地址下载excel文件
我们在做小程序开发的过程中,可能会有这样的需求,就是把我们云数据库里的数据批量导出到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,总不能每次都去云开发后台吧。所以我们接下来要动态的获取这个下载地址。
六,获取云文件地址下载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的功能了。
文章有点长,知识点有点多,但是大家把这个搞会以后,就可以完整的学习小程序云开发的:云函数,云数据库,云存储了。可以说这是一个综合的案例。
有什么不懂的地方,或者有疑问的地方,请在文章底部留言,我看到都会及时解答的。后面我还会出一系列关于云开发的文章,敬请关注
小程序导出数据到excel表,借助云开发后台实现excel数据的保存相关推荐
- c#后台如何导出excel到本地_小程序导出数据到excel表,借助云开发后台实现excel数据的保存...
我们在做小程序开发的过程中,可能会有这样的需求,就是把我们云数据库里的数据批量导出到excel表里.如果直接在小程序里写是实现不了的,所以我们要借助小程序的云开发功能了.这里需要用到云函数,云存储和云 ...
- 小程序短信验证码登录,1分钟实现小程序发短信功能,借助云开发10行代码实现短信验证码登录小程序
老规矩先看效果图 普通短信 验证码短信 今天被云开发官方告知,云开发支持发短信功能了,然后就迫不及待的来尝下鲜. 进入官方文档一看,云开发给咱们开发者的福利还真不小. 不仅仅可以很方便的使用短信功能, ...
- 微信小程序仿网易云音乐(使用云开发,提供源码)
微信小程序仿网易云音乐(使用云开发,提供源码)!!!!!!!!!!! 源码: 链接:https://pan.baidu.com/s/1z_ZnRVbT4vjEENimi8yBQQ 提取码:u0o3 一 ...
- 微信小程序:物流运费计算模块(云开发)
// 目前想要搭建一个商城类型的小程序,官方貌似还没有响应计算运费的API: // 找了半天貌似也都只有描写UI这块怎么写的,关键是运费每家公司的计算标准都不太一样,并且也没有一个准确的价格 // 于 ...
- 小程序(四):微信登录功能的实现+云开发数据库
目录 好文推荐: 完整代码gitee仓库查看:https://gitee.com/CMD-UROOT/xzyy.git 一.微信登录 1.点击按钮(或其他),获取用户信息(昵称.头像等). 2.通过微 ...
- 微信小程序超出代码大小限制,使用云开发调用文件+js动态调取(实例)
微信小程序代码上传大小有限制(可能是因为个人),但是提供了方便的云开发,有云数据库.数据存放.云函数,等功能.基础版还是免费的! 我在页面中需要调用13张图片,但是上传.预感.真机调试时都以" ...
- javaSE中的数据导出到Excel表、javaEE中后台生成Excel文件到浏览器端下载
整个项目中导出数据到.Excel的源码 import java.io.BufferedOutputStream; import java.io.FileInputStream; import java ...
- 小程序里显示附近的位置,云开发数据库实现附近的人,按照位置远近排序,附近多少公里内的好友
最近好多同学问石头哥附近的人如何实现.今天呢,就借助这篇文章,给大家做一个系统的解答. 老规矩,先看效果图 可以看到我们在地图上显示了附近的一些标记点. 接下来就教大家如何实现附近的位置. 一,创建数 ...
- JS 打印 data数据_小程序导出数据到excel表
小程序导出数据到excel表,借助云开发后台实现excel数据的保存 我们在开发小程序的过程中,可能会有这样的需求:如何将云数据库里的数据批量导出到excel表里? 这个需求可以用强大的云开发轻松实现 ...
最新文章
- 史上最详细的RocketMq 下单支付案例 分享
- leetCode刷题-第二题两数之和
- 通信距离与哪些因素相关?为什么模块通信距离和厂家宣传的不一样?
- 黑马程序员_7k面试题交通管理系统
- pytorch线性回归(笔记一)
- 基础接口 java_java基础中的 接口方法的问题
- USB转串口线突然不好用了
- php 导入excal,php导入excel php使用phpexcel导入excel文件
- 初中生学计算机应用有什么好方面,计算机有哪些专业 初中毕业学习相关专业有发展吗...
- TLSF 内存分配算法详解
- c语言常见关键字汇总
- 了解python中的进程,线程和协成
- Java基础--数值和字符串
- C语言递归函数 写一个程序实现一个函数PrintN,使得传入一个正整数为N的参数后,能顺序打印从1到N的全部正整数
- dw选项卡怎么设置,dw表单中怎么设置方框里面打对勾
- uniapp项目运行到小米平板调试
- canvas绘制象棋谱
- how2j网站前端项目——天猫前端(第一次)学习笔记4
- 常用电子元器件应用要点及识别方法
- 编译原理(龙书)学习笔记 第一章