我们在做小程序开发的过程中,可能会有这样的需求,就是把我们云数据库里的数据批量导出到excel表里。如果直接在小程序里写是实现不了的,所以我们要借助小程序的云开发功能了。这里需要用到云函数,云存储和云数据库。可以说通过这一个例子,把我们微信小程序云开发相关的知识都用到了。

老规矩,先看效果图


上图就是我们保存用户数据到excel生成的excel文件。

实现思路

  • 1,创建云函数

  • 2,在云函数里读取云数据库里的数据

  • 3,安装node-xlsx类库(node类库)

  • 4,把云数据库里读取到的数据存到excel里

  • 5,把excel存到云存储里并返回对应的云文件地址

  • 6,通过云文件地址下载excel文件

一,创建excel云函数

关于云函数的创建,我这里不多说了。如果你连云函数的创建都不知道,建议你去小程序云开发官方文档去看看。或者看下我录制的云开发入门的视频:https://edu.csdn.net/course/detail/9604

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

  • 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 = 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 URL        console.log("文件下载链接", res.fileList[0].tempFileURL)        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的功能了。

文章有点长,知识点有点多,但是大家把这个搞会以后,就可以完整的学习小程序云开发的:云函数,云数据库,云存储了。可以说这是一个综合的案例。

有什么不懂的地方,或者有疑问的地方,请在文章底部留言,我看到都会及时解答的。后面我还会出一系列关于云开发的文章,敬请关注。

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

  1. JS 打印 data数据_小程序导出数据到excel表

    小程序导出数据到excel表,借助云开发后台实现excel数据的保存 我们在开发小程序的过程中,可能会有这样的需求:如何将云数据库里的数据批量导出到excel表里? 这个需求可以用强大的云开发轻松实现 ...

  2. 公众号跳转小程序首次没有数据_小程序如何从“0”开始运营,变成获客神器...

    随着发展,越来越多的企业都感觉到获客难,获客成本高.而小程序的诞生恰恰解决了这些问题.合理的利用小程序的功能,可以帮助商家低成本高效获客,今天我们就来谈谈具体怎么用小程序来拉新引流. 合理的利用小程序 ...

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

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

  4. arcengine遍历属性表_小程序导出数据到excel表

    老规矩,先看效果图 上图就是我们保存用户数据到excel生成的excel文件. 实现思路 1,创建云函数 2,在云函数里读取云数据库里的数据 3,安装node-xlsx类库(node类库) 4,把云数 ...

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

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

  6. 为啥我的页面模板的from提交不了数据_小程序,组件与模板对比,及其简单使用

    接着上篇 小程序,如果你会这两种方式,代码就简洁了,重复代码也少了,这篇来说说组件(component)和模板(template). 一.为啥要用组件呢? 正如上篇说的,为了页面简洁和代码的重复利用, ...

  7. access 根据id删除数据_小程序云开发之数据库自动备份丨云开发101

    钻石有价,数据无价.我们通常会把重要的业务数据存放在数据库中,并需要对数据库做定时的自动备份工作,防止数据异常丢失,造成无法挽回的损失. 小程序云开发提供了方便的云数据库供我们直接使用,云开发使用了腾 ...

  8. js中怎么获取某个属性的值_小程序中 setData 详解

    前言 在小程序中各个页面之间是相互独立的,一个页面分为渲染层(视图层 webview),逻辑层(JavaScript),系统层(底层),在架构上,WebView和 JavascriptCore 都是独 ...

  9. excel与云mysql连接数据库_小程序读取excel表格数据,并存储到云数据库

    最近一直比较忙,答应大家的小程序解析excel一直没有写出来,今天终于忙里偷闲,有机会把这篇文章写出来给大家了. 老规矩先看效果图 效果其实很简单,就是把excel里的数据解析出来,然后存到云数据库里 ...

最新文章

  1. 【若依(ruoyi)】 Shiro 向 ShiroFilterFactoryBean 中添加自定义过滤器
  2. 运筹学上机实验 - 单纯形方法的两阶段法
  3. ROS笔记之回调函数
  4. sas编程技术教程 人大经济论坛sas培训
  5. Ms08-067漏洞抓鸡 方法
  6. stata抓取html,Stata 网页表格爬取示例
  7. 0x80131500打不开微软商店的解决办法
  8. bingo培训——软件设计
  9. matlab中im2bw
  10. DAS\NAS\SAN\IPSAN区别
  11. (最详细)VueApp项目实战4 - -详情页
  12. 模拟电磁曲射炮_H题 方案分析【2019年电赛】【刘新宇qq522414928】
  13. java servlet文件上传_JavaServlet的文件上传和下载
  14. 跳出打工圈!程序员要如何走上创业逆袭路,获得百万、千万?
  15. 仪器仪表行业分销渠道系统:实现渠道互联网化,与渠道商互利共赢
  16. 摄像头道路辅助判断函数(持续更新)
  17. 交流与直流电机 调速方法 分类 原理 优缺点 应用
  18. batch size对训练的影响
  19. 2022起重机械指挥考试试题及模拟考试
  20. Win11查看剪贴板历史记录的方法

热门文章

  1. html自动切换body背景,html中怎么用body元素设置背景颜色
  2. Redis HyperLogLog
  3. oracle树子类遍历父类_不懂数据库索引的底层原理?那是因为你心里没点b树
  4. Linux终端显示工作路径
  5. sourcetree 卡顿_哈曼卡顿Harman Kardon音响开奖!
  6. php位运算符与逻辑运算_位运算符及PHP中位运算的应用笔记
  7. JDBC之数据库的连接步骤(六步)
  8. LeetCode946-验证栈序列
  9. webform快速创建表单内容文件--oracle 数据库
  10. 清除sqlserver日志方法(不适合always on)