小程序导出数据到excel表格,借助云开发后台保存excel数据我们可能有这样的需求小程序开发过程:将数据库中的数据批量导出到excel表中?这个需求用强大的云开发可以轻松实现!这里需要云函数、云存储和云数据库。可以说,通过这个例子,小程序云开发相关的知识都用到了。下面将介绍如何实现实现思路1、创建云函数2、在云函数中读取云数据库中的数据3、安装node-xlsx类库(节点类库)4、读取数据在云数据库中保存到excel5、将excel保存到云存储并返回对应的云文件地址6、通过云文件地址下载excel文件1、创建excel云函数关于如何创建云开发小程序,我就不说了这里详述解释。不会制作云开发小程序的同学可以去腾讯云开发公众号内部菜单【技术交流-视频教程】里面的教学视频。创建云函数有两点需要注意。告诉你1.一定要把app.js中的environmentid换成你自己的。2.对于你的云函数目录,选择你对应的云开发环境(一般这里默认选择)但是你这里的云开发环境要和你的app.js保持一致2.读取云数据库中的数据。第一步创建好云函数之后,我们就可以先在云函数中读取我们的数据了。云数据库中的数据。1.先看我们云数据库中的数据2.写云函数读取云数据库中的数据(一定要记得部署云函数)3.成功读取数据,给大家读取用户数据表的完整代码Post它。//云函数入口文件constcloud=require('wx-server-sdk')cloud.init({env:"test-vsbkm"})//云函数入口函数exports.main=async(event,context)=>{returnawaitcloud.database().collection('users').get();}3.安装生成excel文件的类库node-xlsx。通过上面的第二步,我们可以看到我们已经成功获取到了需要保存的文件。对于excel的源数据,接下来要做的就是将数据保存到excel1中,并安装node-xlsx类库。这一步需要我们提前安装好node,因为我们需要用到npm命令,通过命令行npminstallnode-xlsx就可以可以看到我们安装完成后多了一个package-lock.json文件4.编写代码将数据保存到excel中。下图是我们的核心代码:这里的数据就是我们查询到的users表的数据,然后通过下面的代码遍历数组,然后保存到excel中。这里需要注意我们的id,name,weixin要对应users表。for(letkeyinuserdata){letarr=[];arr.push(用户数据[key].id);arr.push(用户数据[key].name);arr.push(userdata[key].weixin);alldata.push(arr)}还有如下一段代码,用于将excel保存到云存储//4、将excel文件保存到云存储returnawaitcloud.uploadFile({cloudPath:dataCVS,fileContent:buffer,//excel二进制文件})接下来把excel中完整的index.js代码贴给大家,记得把云开发环境id换成自己的。constcloud=require('wx-server-sdk')//最好在这里初始化你的云开发环境cloud.init({env:"test-vsbkm"})//用来操作excel的类库constxlsx=require('node-xlsx');//云函数入口functionexports.main=async(event,context)=>{try{let{userdata}=event//1、定义excel表名letdataCVS='test.xlsx'//2、定义letalldata=[]用于存储数据;letrow=['id','name','微信ID'];//表属性alldata.push(row);for(letkeyinuserdata){letarr=[];arr.push(用户数据[key].id);arr.push(用户数据[key].name);arr.push(userdata[key].weixin);alldata.push(arr)}//3、将数据保存到excelvarbuffer=awaitxlsx.build([{name:"mySheetName",data:alldata}]);//4、将excel文件保存到云端returnawaitcloud.uploadFile({cloudPath:dataCVS,fileContent:buffer,//excel二进制文件})}catch(e){console.error(e)returne}}5.将excel保存到云存储并返回对应的云文件地址经过以上步骤,我们就成功的将excel中的数据进行了保存,将excel文件保存到了云存储中。你可以看到效果。然后就可以通过上图中的下载地址下载excel文件了。其实基本的数据保存到excel的功能到这里就实现的差不多了,但是为了避免每次导出数据都要去云开发后台下载excel的麻烦,接下来介绍下如何动态获取下载地址。6、获取云端文件地址,下载excel文件从上图我们可以看出,我们需要使用一个fileID来获取下载链接,而这个fileID会在我们将excel保存到云存储时返回,如下图所示。我们将fileID传递给获取下载链接的方法。1、我们已经获取到了下载链接,接下来我们需要在页面上显示下载链接。2、代码显示在页面上后,我们需要复制链接,方便用户粘贴到浏览器或微信中进行下载。以下是完整代码:Page({onLoad:function(options){letthat=this;//读取用户表数据wx.cloud.callFunction({name:"getUsers",success(res){console.log("读取成功",res.result.data)that.savaExcel(res.result.data)},fail(res){console.log("读取失败",res)}})},//保存数据到excel,并将excel保存到云存储中successfully",res)that.getFileUrl(res.result.fileID)},fail(res){console.log("Savefailed",res)}})},//获取云存储文件下载地址,这个地址有效期为一天getFileUrl(fileID){letthat=this;wx.cloud.getTempFileURL({fileList:[fileID],success:res=>{//获取临时文件URLconsole.log("文件下载链接",res.fileList[0].tempFileURL)that.setData({fileUrl:res.fileList[0].tempFileURL})},fail:err=>{//处理错误}})},//复制excel文件下载链接copyFileUrl(){letthat=thiswx.setClipboardData({data:that.data.fileUrl,success(res){wx.getClipboardData({success(res){console.log("Copysuccessful",res.data)//data}})}})}})梳理一下上面代码的逻辑:1.先去云数据库通过getUsers云函数获取数据2.通过excel云函数将获取到的数据保存到excel中,然后将excel保存到云存储中。3.获取云存储中的文件下载链接。4.复制下载链接,在浏览器中下载excel文件。到这里我们就完整的实现了保存数据到excel的功能。文章有点长,知识点也比较多,但是理解了以上内容后,可以对小程序云开发的云函数、云数据库、云存储有一个比较完整的了解。想了解更多云开发CloudBase相关的技术故事/技术实践经验,请扫描二维码关注【腾讯云开发】公众号~!
