当前位置: 首页 > news >正文

微信小程序云开发实现利用云函数将数据库表的数据导出到excel中

实现目标

将所有订单信息导出到excel表格中

 思路

1、在页面中bindtap绑定一个导出点击事件daochu()

2、先获取所有订单信息,并将数据添加到List数组中

3、传入以List数组作为参数,调用get_excel云函数

4、get_excel云函数利用node-xlsx第三方库,在云函数所在目录npm install安装node-xlsx

5、在云函数导入const xlsx = require('node-xlsx'),并设置表格第一行的列数据

6、循环List数组将数据依次添加到第二行、第三行、第四行等等。

7、云函数返回生成excel的临时地址

8、在页面js获取到该临时地址并预览excel表格

完整代码

saveexcel.js

const app = getApp()
Page({/*** 页面的初始数据*/data: {},daochu() {var that = thiswx.showLoading({title: '正在加载',})var List = []wx.cloud.database().collection('yxb_nmkq_order').count().then(async function name(res) {console.log(res.total)var batchTimes = Math.ceil(res.total / 20)for (let index = 0; index < batchTimes; index++) {console.log("第" + index + "次循环");//异步转同步var itemlist = await that.getitemlist(index)List = List.concat(itemlist)}that.setData({List: List})console.log("处理完毕", List);wx.cloud.callFunction({// 要调用的云函数名称name: 'nmkq_get_excel',// 传递给云函数的event参数data: {List: that.data.List}}).then(res => {console.log("云函数结束");console.log(res);that.saveExcel(res.result.fileID)}).catch(err => {// handle errorwx.hideLoading({success: (res) => {wx.showToast({title: '下载失败!',icon: 'none'})},})})})},getitemlist(index) {return new Promise((rev, rej) => {wx.cloud.database().collection('yxb_nmkq_order').skip(index * 20).limit(20).get({success: function (res) {// res.data 包含该记录的数据console.log(res.data)rev(res.data)}})})},saveExcel(fileID) {var that = thiswx.cloud.getTempFileURL({fileList: [fileID],success: res => {that.setData({fileUrl: res.fileList[0].tempFileURL})console.log("最后的地址" + that.data.fileUrl);wx.downloadFile({url: that.data.fileUrl,success: (res) => {that.setData({httpfile: res.tempFilePath})console.log("找不到这个地址?" + that.data.httpfile);//预览文件wx.openDocument({filePath: that.data.httpfile,showMenu: true,success: res => {console.log("预览成功");wx.hideLoading({success: (res) => {},})},fail: err => {console.log(err);}})},fail: (err) => {console.log('读取失败', err)wx.showToast({title: '读取失败!',})}})},fail: err => {console.log(err);wx.showToast({title: '下载失败2!',icon: 'none'})}})},})

 saveexcel.json

{"usingComponents": {},"navigationBarTitleText": "数据导出excel"
}

  saveexcel.wxml


<view style="width: 100%;display: flex;justify-content: center;">
<button style="width: 80%;margin: 20rpx 0;" bindtap="daochu">导出</button>
</view>

云函数写法:

云函数目录/index.js

// 云函数入口文件
const cloud = require('wx-server-sdk')
const xlsx = require('node-xlsx')cloud.init()// 云函数入口函数
exports.main = async (event, context) => {console.log(event);try {let List = event.List//2,定义存储数据的let alldata = [];let row = ['记录号', '订单号', '用户id', '商品名称', '付款价格', '手机号', '姓名', '数量', '备注', '创建时间', '状态值']; //表属性alldata.push(row);for (var i = 0; i < List.length; i++) {let arr = [];arr.push(List[i]._id);arr.push(List[i].orderId);arr.push(List[i].user._id);arr.push(List[i].shop.title);arr.push(List[i].fkprice);arr.push(List[i].phone);arr.push(List[i].username);arr.push(List[i].number);arr.push(List[i].bz);arr.push(List[i].time));arr.push(List[i].status);alldata.push(arr)}console.log(alldata);//3,把数据保存到excel里var buffer = await xlsx.build([{name: "mySheetName",data: alldata}]);console.log(buffer);//4,把excel文件保存到云存储里return await cloud.uploadFile({cloudPath: Date.now() + 'shuju.xlsx',fileContent: buffer, //excel二进制文件})} catch (e) {console.error(e)return e}
}

如果这篇文章对您有所帮助,给个小赞赞吧🌹

相关文章:

微信小程序云开发实现利用云函数将数据库表的数据导出到excel中

实现目标 将所有订单信息导出到excel表格中 思路 1、在页面中bindtap绑定一个导出点击事件daochu() 2、先获取所有订单信息&#xff0c;并将数据添加到List数组中 3、传入以List数组作为参数&#xff0c;调用get_excel云函数 4、get_excel云函数利用node-xlsx第三方库&#…...

python 字符串(str)、列表(list)、元组(tuple)、字典(dict)

学习目标: 1:能够知道如何定义一个字符串; [重点] 使用双引号引起来: 变量名 "xxxx" 2:能够知道切片的语法格式; [重点] [起始: 结束] 3:掌握如何定义一个列表; [重点] 使用[ ]引起来: 变量名 [xx,xx,...] 4:能够说出4个列表相关的方法; [了解] ap…...

【源码】SpringBoot事务注册原理

前言 对于数据库的操作&#xff0c;可能存在脏读、不可重复读、幻读等问题&#xff0c;从而引入了事务的概念。 事务 1.1 事务的定义 事务是指在数据库管理系统中&#xff0c;一系列紧密相关的操作序列&#xff0c;这些操作作为一个单一的工作单元执行。事务的特点是要么全…...

技巧:合并ZIP分卷压缩包

如果ZIP压缩文件文件体积过大&#xff0c;大家可能会选择“分卷压缩”来压缩ZIP文件&#xff0c;那么&#xff0c;如何合并zip分卷压缩包呢&#xff1f;今天我们分享两个ZIP分卷压缩包合并的方法给大家。 方法一&#xff1a; 我们可以将分卷压缩包&#xff0c;通过解压的方式…...

数据挖掘 | 实验三 决策树分类算法

文章目录 一、目的与要求二、实验设备与环境、数据三、实验内容四、实验小结 一、目的与要求 1&#xff09;熟悉决策树的原理&#xff1b; 2&#xff09;熟练使用sklearn库中相关决策树分类算法、预测方法&#xff1b; 3&#xff09;熟悉pydotplus、 GraphViz等库中决策树模型…...

Python机器学习预测区间估计工具库之mapie使用详解

概要 在数据科学和机器学习领域,预测的不确定性估计是一个非常重要的课题。Python的mapie库是一种专注于预测区间估计的工具,旨在提供简单易用的接口来计算和评估预测的不确定性。通过mapie库,用户可以为各种回归和分类模型计算预测区间,从而更好地理解模型预测的可靠性。…...

Linux基础指令磁盘管理002

LVM&#xff08;Logical Volume Manager&#xff09;是Linux系统中一种灵活的磁盘管理和存储解决方案&#xff0c;它允许用户在物理卷&#xff08;Physical Volumes, PV&#xff09;上创建卷组&#xff08;Volume Groups, VG&#xff09;&#xff0c;然后在卷组上创建逻辑卷&am…...

Python怎么添加库:深入解析与操作指南

Python怎么添加库&#xff1a;深入解析与操作指南 在Python编程中&#xff0c;库&#xff08;Library&#xff09;扮演着至关重要的角色。它们为我们提供了大量的函数、类和模块&#xff0c;使得我们可以更高效地编写代码&#xff0c;实现各种功能。那么&#xff0c;Python如何…...

Python | 虚拟环境的增删改查

mkvirtualenv创建虚拟环境 mkvirtualenv是用于在Pyhon中创建虚拟环境的命令。它通过使用vitualenv库来创建一个隔离的Python环境&#xff0c;以便您可以安装特定版本的Python包&#xff0c;而不会影响全局Python环境。 使用方法: 安装virtualenv&#xff1a;pip install vir…...

【MySQL数据库】:MySQL内外连接

目录 内外连接和多表查询的区别 内连接 外连接 左外连接 右外连接 简单案例 内外连接和多表查询的区别 在 MySQL 中&#xff0c;内连接是多表查询的一种方式&#xff0c;但多表查询包含的范围更广泛。外连接也是多表查询的一种具体形式&#xff0c;而多表查询是一个更…...

C# FTP/SFTP 详解及连接 FTP/SFTP 方式示例汇总

文章目录 1、FTP/SFTP基础知识FTPSFTP 2、FTP连接示例3、SFTP连接示例4、总结 在软件开发中&#xff0c;文件传输是一个常见的需求。尤其是在不同的服务器之间传输文件时&#xff0c;FTP&#xff08;文件传输协议&#xff09;和SFTP&#xff08;安全文件传输协议&#xff09;成…...

二、【源码】实现映射器的注册和使用

源码地址&#xff1a;https://github.com/mybatis/mybatis-3/ 仓库地址&#xff1a;https://gitcode.net/qq_42665745/mybatis/-/tree/02-auto-registry-proxy 实现映射器的注册和使用 这一节的目的主要是实现自动注册映射器工厂 流程&#xff1a; 1.创建MapperRegistry注册…...

Android Compose 十:常用组件列表 监听

1 去掉超出滑动区域时的拖拽的阴影 即 overScrollMode 代码如下 CompositionLocalProvider(LocalOverscrollConfiguration provides null) {LazyColumn() {items(list, key {list.indexOf(it)}){Row(Modifier.animateItemPlacement(tween(durationMillis 250))) {Text(text…...

Wireshark 如何查找包含特定数据的数据帧

1、查找包含特定 string 的数据帧 使用如下指令&#xff1a; 双引号中所要查找的字符串 frame contains "xxx" 查找字符串 “heartbeat” 示例&#xff1a; 2、查找包含特定16进制的数据帧 使用如下指令&#xff1a; TCP&#xff1a;在TCP流中查找 tcp contai…...

【深度学习入门篇一】阿里云服务器(不需要配环境直接上手跟学代码)

前言 博主刚刚开始学深度学习&#xff0c;配环境配的心力交瘁&#xff0c;一塌糊涂&#xff0c;不想配环境的刚入门的同伴们可以直接选择阿里云服务器 阿里云天池实验室&#xff0c;在入门阶段跑个小项目完全没有问题&#xff0c;不要自己傻傻的在那配环境配了半天还不匹配&a…...

app,waf笔记

API攻防 知识点&#xff1a; 1、HTTP接口类-测评 2、RPC类接口-测评 3、Web Service类-测评 内容点&#xff1a; SOAP&#xff08;Simple Object Access Protocol&#xff09;简单对象访问协议是交换数据的一种协议规范&#xff0c;是一种轻量级的、简单的、基于XML&#…...

数据仓库之维度建模

维度建模&#xff08;Dimensional Modeling&#xff09;是一种用于数据仓库设计的方法&#xff0c;旨在优化查询性能并提高数据的可读性。它通过组织数据为事实表和维度表的形式&#xff0c;提供直观的、易于理解的数据模型&#xff0c;使业务用户能够轻松地进行数据分析和查询…...

解决远程服务器连接报错

最近使用服务器进行数据库连接和使用的时候出现了一个报错&#xff1a; Error response from daemon: Conflict. The container name “/mysql” is already in use by container “1bd3733123219372ea7c9377913da661bb621156d518b0306df93cdcceabb8c4”. You have to remove …...

通过电脑查看Wi-Fi密码的方法,提供三种方式

式一&#xff1a; 右击桌面右下角的网络图标&#xff0c;依次选择【网络和Internet设置】、【WLAN】、【网络和共享中心】。点击已连接的无线网络。依次点击【无线属性】、【安全】&#xff0c;勾选下方【显示字符】即可。 方式二&#xff1a; 在开始菜单输入“cmd”进入命令…...

Nvidia 目前的市值为 3.01 万亿美元,超过苹果Apple

人工智能的繁荣将英伟达的市值推高到足以使其成为全球第二大最有价值的公司。 英伟达已成为全球第二大最有价值的公司。周三下午&#xff0c;这家芯片制造巨头的市值达到 3.01 万亿美元&#xff0c;领先于苹果公司的 3 万亿美元。 喜好儿网AIGC专区&#xff1a;https://heehe…...

用langchain搭配最新模型ollama打造属于自己的gpt

langchain 前段时间去玩了一下langchain,熟悉了一下大模型的基本概念&#xff0c;使用等。前段时间meta的ollama模型发布了3.0,感觉还是比较强大的&#xff0c;在了解过后&#xff0c;自己去用前后端代码&#xff0c;调用ollama模型搭建了一个本地的gpt应用。 核心逻辑 开始搭…...

工业互联网基本概念及关键技术(295页PPT)

资料介绍&#xff1a; 工业互联网的核心是通过工业互联网平台把设备、生产线、工厂、供应商、产品和客户紧密地连接融合起来。这种连接能够形成跨设备、跨系统、跨厂区、跨地区的互联互通&#xff0c;从而提高效率&#xff0c;推动整个制造服务体系智能化。同时&#xff0c;工…...

Python pandas openpyxl excel合并单元格,设置边框,背景色

Python pandas openpyxl excel合并单元格&#xff0c;设置边框&#xff0c;背景色 1. 效果图2. 源码参考 1. 效果图 pandas设置单元格背景色&#xff0c;字体颜色&#xff0c;边框 openpyxl合并单元格&#xff0c;设置丰富的字体 2. 源码 # excel数字与列名互转 import o…...

【vue3|第7期】 toRefs 与 toRef 的深入剖析

日期&#xff1a;2024年6月6日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xff…...

git代码冲突处理软件P4Merge

文章目录 1. 下载安装2. 配置脚本参考链接 1. 下载安装 下载地址&#xff1a;https://www.perforce.com/downloads/helix-visual-client-p4v 下载教程&#xff1a;http://blog.csdn.net/wirelessqa/article/details/9035215 这里下载之前需要注册。 2. 配置脚本 编写一个全局…...

Unity物体材质属性Offset动态偏移

Unity物体材质属性Offset动态偏移 MeshRenderer mr;float offset;public float scrollSpeed 0.5F;private void Start(){mr GetComponent<MeshRenderer>();}void Update(){offset -Time.time * scrollSpeed;mr.material.mainTextureOffset new Vector2(0, -offset);}…...

【数据结构】筛选法建堆

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…...

DevExpress Installed

一、What’s Installed 统一安装程序将DevExpress控件和库注册到Visual Studio中&#xff0c;并安装DevExpress实用工具、演示应用程序和IDE插件。 Visual Studio工具箱中的DevExpress控件 Visual Studio中的DevExpress菜单 Demo Applications 演示应用程序 Launch the Demo…...

解决QT QMessageBox 弹出需点击两次才能关闭问题

放个链接不迷路&#xff1a;添加链接描述...

Milvus--向量数据库

Milvus 是一个开源的向量数据库&#xff0c;专为高维向量数据的存储、查询和检索而设计。它支持多种类型的向量数据&#xff0c;如浮点数向量、整数向量等&#xff0c;并且提供了强大的向量相似度计算功能。Milvus采用分布式架构&#xff0c;可以轻松地扩展到大规模数据集&…...