• 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

        })



## 最后

分布式技术专题+面试解析+相关的手写和学习的笔记pdf

还有更多Java笔记分享如下:

![image](https://img-blog.csdnimg.cn/img_convert/b4fc11ba37aa181bf319f4e6fec9e2d3.webp?x-oss-process=image/format,png)

s;

    wx.cloud.getTempFileURL({

      fileList: [fileID],

      success: res => {

        // get temp file URL

        console.log("文件下载链接", res.fileList[0].tempFileURL)

        that.setData({

          fileUrl: res.fileList[0].tempFileURL

        })



## 最后

分布式技术专题+面试解析+相关的手写和学习的笔记pdf

还有更多Java笔记分享如下:

[外链图片转存中...(img-wnFeGLME-1721182005784)]

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐