微信小程序如何实现将数据导出生成excel

2023-10-27

码字不易,有帮助的同学希望能关注一下我的微信公众号:Code程序人生,感谢!代码自用自取。

在这里插入图片描述

这个需求也是我在接私活的时候遇到的,需求就是,要实现将指定数据库表的数据全部导出生成excel和按需导出,也就是导出全部数据,或者导出指定哪天的数据。

其实我一开始是没有思路的,但是我查了一些资料,发现强大的node是有处理excel表格的模块的。

生产环境的话,因为我为了方便还是选用的云开发,但是云开发其实在语法和内容上和node是没有区别的,无论是写法还是模块,都是相同或者类似的。虽然我没有看过云函数的底层实现源码,但是通过使用也能发现,它其实就是基于node做的封装,为我们提供了很多便利的API。

话不多说,我们直入主题。

const cloud = require('wx-server-sdk')
cloud.init({
  env:'你的云环境ID'
})
const xlsx = require('node-xlsx')    //导入Excel类库
const db = cloud.database()   //声明数据库对象
const _ = db.command
exports.main = async (event, context) => {   //主函数入口
    try {
        let schoolBusInfo = event.data;
        console.log(schoolBusInfo);
        let dataCVS = `schoolBusInfo-${Math.floor(Math.random()*1000000000)}.xlsx`
        //声明一个Excel表,表的名字用随机数产生
        let alldata = [];
        let row = ['车牌号', '日期','部门','姓名','联系方式']; //表格的属性,也就是表头说明对象
        alldata.push(row);  //将此行数据添加到一个向表格中存数据的数组中
//接下来是通过循环将数据存到向表格中存数据的数组中
        for (let key = 0; key<schoolBusInfo.length; key++) {
            let arr = [];
            arr.push(schoolBusInfo[key].carNum);
            arr.push(schoolBusInfo[key].Date);
            arr.push(schoolBusInfo[key].class);
            arr.push(schoolBusInfo[key].name);
            arr.push(schoolBusInfo[key].phone);
            alldata.push(arr)
         }
            var buffer = xlsx.build([{   
            name: "mySheetName",
            data: alldata
            }]); 
            //将表格存入到存储库中并返回文件ID
            return await cloud.uploadFile({
                cloudPath: dataCVS,
                fileContent: buffer, //excel二进制文件
            })
    } catch (error) {
        console.error(error)
    }
}

如果你是使用的node,可以仿照着这个形式,copy一下,不存在任何坑,以后有机会,我也发一下node版本的。

从上往下讲解一下代码

  • 其实最重要的就是引入了一个node-xlsx的模块,这个模块是用来处理excel文件的。
  • 这个let schoolBusInfo = event.data就是客户端发送过来的,需要导出的数据。
  • dataCVS是生成excel文件的名字。
  • row是数组里存放的是excel文件的表头,就是每一列的第一行的数据。
  • 然后就是对客户端传过来的数据进行一个循环遍历。
  • schollBusInfo[key].xxxx就是发送过来的数据的字段,和前面那个row表头代表的意义要一致。
var buffer = await xlsx.build([{   
name: "mySheetName",
data: alldata
}]); 
  • ↑↑↑这就是最后一步,进行表的构建,通过我们前面准备的数据,调用xlsx的build方法。

因为我使用的是云开发,我可以将生成的数据源存放到云存储里,然后返回给客户端一个云存储的存放地址。
在这里插入图片描述

这基本就是全部的一个思路,因为node为我们提供了node-xlsx这个模块,所有总体的代码编写没有太大问题。

其它语言肯定也存在这种类似的库和包,大家可以查一下资料。


有微信小程序课设、毕设需求联系个人QQ:505417246

关注下面微信公众号,可以领取微信小程序、Vue、TypeScript、前端、uni-app、全栈、Nodejs、Python等实战学习资料
最新最全的前端知识总结和项目源码都会第一时间发布到微信公众号,请大家多多关注,谢谢

关注公众号后,回复前端面试题,领取大量前端面试题汇总pdf资料

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序如何实现将数据导出生成excel 的相关文章

随机推荐

  • Chisel Tutorial(五)——Bundles与Vecs

    以下内容依据2015 7 10版的Chisel 2 2 Tutorial整理 此处的Bundles Vecs就不翻译了 免得因为翻译不准引起一些误解 童鞋们有没有好的建议 lt
  • SpringBoot+Hutool工具类Excel工具-ExcelUtil实现excel文件的导入导出

    Hutool会用的话极大了简化了操作Excel的过程 提高开发效率 废话少说上代码 excel文件导出 public void downLoadFile UserDto dto HttpServletResponse response St
  • kvm虚拟化简介

    1 KVM介绍 KVM是一个基于Linux内核的虚拟机 它属于完全虚拟化范畴 从Linux 2 6 20开始被包含在Linux内核中 KVM基于x86硬件虚拟化技术 它的运行要求Intel VT x或AMD SVM的支持 一般认为 虚拟机监
  • synchronized原理分析

    Java 高并发专题之synchronized关键字 1 synchronized作为jvm关键字有三个作用域 synchronized作用于实例方法 锁住的当前对象 只有当前对象被锁住 新new出来的对象不会被锁住 synchronize
  • 基于python+MobileNetV2算法模型实现一个图像识别分类系统

    一 目录 算法模型介绍 模型使用训练 模型评估 项目扩展 二 算法模型介绍 图像识别是计算机视觉领域的重要研究方向 它在人脸识别 物体检测 图像分类等领域有着广泛的应用 随着移动设备的普及和计算资源的限制 设计高效的图像识别算法变得尤为重要
  • 代理IP与Socks5代理:跨界电商智能爬虫的引擎与安全壁垒

    一 代理IP 智能爬虫的引擎 多地区数据采集 代理IP允许企业模拟不同地区的IP地址 轻松实现多地区数据采集 这为企业洞察全球市场需求提供了重要数据支持 规避反爬虫机制 代理IP通过随机切换IP地址 规避了网站的反爬虫机制 确保数据采集的稳
  • 7.31黄金最新行情走势分析及多空交易策略

    近期有哪些消息面影响黄金走势 黄金多空该如何研判 黄金消息面解析 上周有重磅数据美联储加息的消息 黄金受其影响波动比较频繁 总体空间40美金 但这个过程跌宕起伏 收线来看黄金在连续上涨三周后迎来一根小阴十字星线 多头动能有所减弱 上周四加息
  • 【读书笔记】Java NIO (中文版) 读书笔记

    概述 这本书讲解的一般吧 主要是讲解了 缓冲区 通道 选择器 正则表达式 字符集 主要是讲解了api的使用 以及部分系统知识 比较底层了 而且大部分都是代码的源码讲解 或者api使用的讲解 太细致了 学netty之前可以看看这个 或者两者互
  • 协同过滤推荐算法

    一 协同过滤思想简介 二 协同过滤算法原理介绍 三 基于用户的协同过滤算法描述 四 基于物品的协同过滤算法 基于物品的协同过滤算法的优缺点 一 协同过滤思想简介 协同过滤 从字面上理解 包括协同和过滤两个操作 首先我们在外出和朋友吃饭的时候
  • 【操作系统】王道考研 p54-56 文件共享、文件保护、文件系统的层次结构

    文件共享 文件保护 文件系统的层次结构 知识总览 以下是文件共享的内容 基于索引结点的共享方式 硬链接 用一个count来记录在使用这个文件的用户的个数 当用户删除文件 则用户目录的该文件目录项删除 并count 1 当count 0 则系
  • 安装Oracle EE

    前期 进入自己需要设置的目录 创建文件夹 文件夹授权 mkdir xxx chmod o w oracle oradata chmod 777 oracle oradata 安装ORACLE EE 1 查找镜像 docker search
  • 【Java基础】File类 IO流

    个人简介 gt 个人主页 是Lay的主页 gt 学习方向 JAVA后端开发 gt 种一棵树最好的时间是十年前 其次是现在 gt 往期文章 Java基础 面向对象进阶 二 gt 喜欢的话麻烦点点关注喔 你们的支持是我的最大动力 目录 1 Fi
  • SeetaFaceEngine安装和测试

    一 介绍 必须安装好opencv SeetaFace人脸识别引擎包括了搭建一套全自动人脸识别系统所需的三个核心模块 即 人脸检测模块SeetaFace Detection 面部特征点定位模块SeetaFace Alignment以及人脸特征
  • FRR编译及配置(旧版)

    本文最新状态可点击查看https turbock79 cn p 334 CSDN可点击查看https blog csdn net turbock article details 107039031 爬坑 本文基于官方文档进行编译 发现构建文
  • (详解)Vue3自定义指令

    目录 一 背景 二 提前预习 必看 2 1自定义指令生命周期 2 2 生命周期四个参数 三 自定义指令 3 1私有自定义指令 3 1 1定义指令 3 1 2使用自定义指令 3 2全局自定义指令 3 2 1定义指令 3 2 2使用自定义指令
  • iconfont 使用规则

    使用iconfont可以替代普通的单色小图标 无法替代有层次 渐变或多色的图标 这些还是要用位图来做 风险 需要修改的资源较多 基本所有页面要重新过一遍 可能影响到后续版本输出的进度 工作量预估 按各自负责模块内容 学铭2人日 瑞华3人日
  • 巨神奇,2013年的老Mac,竟直接装上macOS Ventura 13.1 Beta版

    写在前面 上期这篇文章 终于 老Mac可以跨级安装macOS Ventura了 中 我说了通过OpenCore Legacy Patcher可以跨级安装macOS Ventura 但却没给出一个切实的解决方法 本期我就说一下跨级安装的方法
  • 解决YOLOV5训练时P、R、mAP等值均为0的问题

    最近用YOLOV5训练自己的数据集 出现了训练失败的情况 比如box obj cls labels等均为nan或0 找了很多办法 其实就是cuda与PyTorch版本的问题 Epoch gpu mem box obj cls labels
  • 1603A - Di-visible Confusion

    1603A Di visible Confusion 题目 一个长度为N的数组从a1 a2 an 如果在存在不能被整除则可以删除 剩下的数变为a1 a2 an 1 求是否能使得数组为空 题解 每个数都会因为前一个数被删除而前移 所以遍历所有
  • 微信小程序如何实现将数据导出生成excel

    码字不易 有帮助的同学希望能关注一下我的微信公众号 Code程序人生 感谢 代码自用自取 这个需求也是我在接私活的时候遇到的 需求就是 要实现将指定数据库表的数据全部导出生成excel和按需导出 也就是导出全部数据 或者导出指定哪天的数据