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

news/2024/7/20 3:38:13 标签: nodejs, excel, 前端, 小程序

码字不易,有帮助的同学希望能关注一下我的微信公众号: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资料

在这里插入图片描述


http://www.niftyadmin.cn/n/1576445.html

相关文章

用位运算实现两个整数的加减乘除(根据网上内容整理)

一、整数加法用位运算实现加法也就是计算机用二进制进行运算&#xff0c;32位的CPU只能表示32位内的数&#xff0c;这里先用1位数的加法来进行&#xff0c;在不考虑进位的基础上&#xff0c;如下1 1 01 0 10 1 10 0 0很明显这几个表达式可以用位运算的“^”(按位异或)来…

TypeScript函数参数和返回类型定义

码字不易&#xff0c;有帮助的同学希望能关注一下我的微信公众号&#xff1a;Code程序人生&#xff0c;感谢&#xff01;代码自用自取。 这节主要学习一下函数的参数类型定义和返回值的定义&#xff0c;学完这节内容后&#xff0c;你会对函数的参数和返回值类型定义都有通透的了…

IIS中HTTP压缩概述

一. HTTP压缩概述 HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法。HTTP压缩采用通用的压缩算法如gzip等压缩HTML、JavaScript或CSS文件。压缩的最大好处就是降低了网络传输的数据量&#xff0c;从而提高客户端浏览器的访问速度。当然&#xff0c;同时也会增加一点点服…

TypeScript中数组类型的定义

码字不易&#xff0c;有帮助的同学希望能关注一下我的微信公众号&#xff1a;Code程序人生&#xff0c;感谢&#xff01;代码自用自取。 这期学习一下 TypeScript 中的数组类型&#xff0c;一般的数组类型定义我们已经接触过了&#xff0c;只是没有单独拿出来讲&#xff0c;所以…

day6 os模块

OS模块 提供对操作系统进行调用的接口 &#xff08;1&#xff09;os.getcwd() 获取当前工作目录&#xff0c;即当前python脚本工作的目录路径 >>> os.getcwd() 获取Python当前脚本工作的目录路径  /home/zhuzhu &#xff08;2&#xff09;os.chdir("dirn…

TypeScript中元组的使用和类型约束

码字不易&#xff0c;有帮助的同学希望能关注一下我的微信公众号&#xff1a;Code程序人生&#xff0c;感谢&#xff01;代码自用自取。 TypeScript 中提供了元组的概念&#xff0c;这个概念是JavaScript中没有的。但是不要慌张&#xff0c;其实元组在开发中并不常用&#xff0…

mysql改动默认的环境的字符集为utf-8

mysql改动环境的默认字符集为utf-8(当然你也能够设置成别的&#xff0c;国际点还是utf-8好) 假设不把mysql字符集统一下。后面还是有点麻烦的 首先得在服务里关掉mysql的服务(一定要先关掉mysql服务再改动) 然后到你的mysql的安装路径。假设是自己定义就找到自己定义的路…

在vue+node环境下实现对数据以excel形式导出并下载

首先业务需求&#xff0c;就是在后台管理系统中可以查询当前数据表&#xff0c;现在要加一个功能&#xff0c;可以把当前查询到的数据以excel形式导出&#xff0c;并供管理员下载。 需求明确之后&#xff0c;我们就要进行功能的实现&#xff0c;这个需求主要内容在后端接口的编…