小程序按一定顺序导出excel表格

目录

项目场景

问题描述

解决方案:

前提一:让我们每一个记录都有一个专门的rank值

前提二:编写云函数

题外话


项目场景

有时候我们需要导出数据库里面的数据,并且将它们导成xlsx的文件,数据库里面的数据是按照录入时间来排列的,类似栈的概念,先提交的数据就会在栈底,而后提交的数据就会在栈顶。我们不能人为的去给它设置一定的排列顺序,那么我们该怎么做呢?一键导出excel的相关步骤之前有说过,链接在下方,现在让我们专注于如何让这个excel表格有规律的排列。小程序一键导出数据库中excel表格出现延迟的解决方案以及文件拼接时间戳的方法_hiddenSharp429的博客-CSDN博客


问题描述

在不能在云开发的数据库中改变记录的前提条件下,导出的数据我想让它按照这样的形式来排列。排列的第一要素是时间,次要素是时间段。我们应该如何来实现这样的功能呢


解决方案:

先在云函数中运用orderBy将数据排列好再将其导出!!

注意 要用number属性来排列。

前提一:让我们每一个记录都有一个专门的rank值

        如这里12-09 10:00的记录,它的rank值就是12091000(注意上传到数据库里的时候不要传成string属性了,要number属性。可以在add到数据库里时用类型转换来将string变成number)

前提二:编写云函数

//这个函数是用来获取预约集合里面的数据的,并没有存储到excel里
// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
       env:'你的环境id'
})

// 云函数入口函数
exports.main = async (event, context) => {
       return await cloud.database().collection('appointment')
       .where({
              state:1,
         })
       .orderBy('rank','asc')
       .get()
}

用rank值来排序,排序方式(asc)是升序。

const cloud = require('wx-server-sdk')
cloud.init({
  env: "你的环境id"
})
//操作excel用的类库
const xlsx = require('node-xlsx');

// 云函数入口函数
exports.main = async(event, context) => {
  try {
    let {userdata} = event
    
    //1,定义excel表格名
    let dataCVS = '预约.xlsx'
    //2,定义存储数据的
    let alldata = [];
    let row = ['日期','时间段', '组织', '预约老师','预约事项','预约人','手机号']; //表属性
    alldata.push(row);

    for (let key in userdata) {
      let arr = [];
      arr.push(userdata[key].day);
      arr.push(userdata[key].hour);
      arr.push(userdata[key].g1_orderInstitute);
      arr.push(userdata[key].g1_orderTeacher);
      arr.push(userdata[key].content);
      arr.push(userdata[key].subscriber);
      arr.push(userdata[key].subscriberPhone);
      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
  }
}


题外话

主要的思想就是这些,如果有疑问欢迎大家留言讨论,你如果觉得这篇文章对你有帮助可以给我一个免费的赞吗?我们之间的交流是我最大的动力!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hiddenSharp429

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值