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

Excel VBA ——从MySQL数据库中导出一个报表-笔记

本文主要涉及:

VBA中数据库连接参数改成从配置文件获取
VBA连接MySQL数据库
VBA读MySQL数据库
演示两种写入工作簿的代码实现

系统环境:

Windows 10 64bit
Excel 365 64bit
WAMP(3.2.2.2 64bit)集成的MariaDB版本为10.4.10(MariaDB的操作方法和MySQL相同,这里不做区分)
  1. VBA连接MySQL前的环境配置

如果还没有用VBA连接过mysql数据库,请参照前篇 VBA连接MySQL数据库
2. VBA报表的优势

其实VBA报表的最大优势就是——它是在Excel表格中实现的!

有些办公场景中,不光需要你出报表,并且呈报的时候还要改excel表格格式,这时vba的优势就体现出来了。你可以首先在office中改好需要的样式,然后使用vba填充数据即可,单纯使用vba填入数据是不会破坏版面的各种样式的,这比其他语言的排版更有优势,代码量更少,且所见即所得,减少版面调整的时间!
3. VBA代码示例
3.1  直接复制数据集的写法

Sub 直接复制()'设置数据库连接对象Set conn = CreateObject("Adodb.Connection")'设置数据库记录集对象Set rs = CreateObject("Adodb.Recordset")serverIP = Sheet1.Range("J2").ValueserverDB = Sheet1.Range("J6").ValueserverUID = Sheet1.Range("J3").ValueserverPWD = Sheet1.Range("J4").Value'配置连接串conn.ConnectionString = "Driver={MySQL ODBC 8.0 Unicode Driver};Server=" & serverIP & ";DB=" & serverDB & ";UID=" & serverUID & ";PWD=;OPTION=3;"conn.Open'拼接sql语句,写成这样子方便检查sql语句,也可以全部写到一行里sqlStr = " SELECT "sqlStr = sqlStr & " tp_auth.id, "sqlStr = sqlStr & " tp_auth. NAME, "sqlStr = sqlStr & " tp_hobby.content "sqlStr = sqlStr & " FROM "sqlStr = sqlStr & " tp_auth, "sqlStr = sqlStr & " tp_hobby "sqlStr = sqlStr & " WHERE "sqlStr = sqlStr & " tp_auth.id = tp_hobby.user_id "'从test数据库的YGXM表中取出所有数据rs.Open sqlStr, conn'设置表头Range("A1:C1").Value = Array("ID", "Name", "content")'将数据输出到工作表Range("A2").CopyFromRecordset rs'关闭连接rs.Close: Set rs = Nothingconn.Close: Set conn = Nothing
End Sub

优点:操作简单

缺点:所有的结果顺序都必须在sql语句中调试好,在写入单元格前如果要修改列的次序,相当于要在结果数组中直接操作数组,相对繁琐
3.2 利用数组转储的写法

Sub 数组转储()'设置数据库连接对象Set conn = CreateObject("Adodb.Connection")'设置数据库记录集对象Set rs = CreateObject("Adodb.Recordset")serverIP = Sheet1.Range("J2").ValueserverDB = Sheet1.Range("J6").ValueserverUID = Sheet1.Range("J3").ValueserverPWD = Sheet1.Range("J4").Value'配置连接串conn.ConnectionString = "Driver={MySQL ODBC 8.0 Unicode Driver};Server=" & serverIP & ";DB=" & serverDB & ";UID=" & serverUID & ";PWD=;OPTION=3;"conn.Open'拼接sql语句,写成这样子方便检查sql语句,也可以全部写到一行里sqlStr = " SELECT "sqlStr = sqlStr & " tp_auth.id, "sqlStr = sqlStr & " tp_auth. NAME, "sqlStr = sqlStr & " tp_hobby.content "sqlStr = sqlStr & " FROM "sqlStr = sqlStr & " tp_auth, "sqlStr = sqlStr & " tp_hobby "sqlStr = sqlStr & " WHERE "sqlStr = sqlStr & " tp_auth.id = tp_hobby.user_id "'从test数据库的YGXM表中取出所有数据rs.Open sqlStr, conn'设置表头Range("A1:C1").Value = Array("ID", "Name", "content")'使用数组存储记录集—————————————————————————————————————————————————————————————————————————————————————————————Dim arrRecord(1 To 1000000, 1 To 3)  '数组第一个参数代表数据集的行数,第二个代表列数i = 1Do While Not rs.EOF '当数据指针未移到记录集末尾时,循环下列操作'把数据集指定的字段,依次写入数组指定的列,顺序不必和sql结果相同arrRecord(i, 1) = rs("id")arrRecord(i, 2) = rs("NAME")arrRecord(i, 3) = rs("content")rs.MoveNext '把指针移向下一条记录i = i + 1 'i加1,准备把下一记录相关字段的值保存到工作表的下一行Loop '循环'将数组复制到单元格——————————————————————————————————————————————————————————————————————————————————————————————Sheet1.Range("$A$2:$C$1000000") = arrRecordrs.Close: Set rs = Nothingconn.Close: Set conn = NothingEnd Sub

相关文章:

Excel VBA ——从MySQL数据库中导出一个报表-笔记

本文主要涉及: VBA中数据库连接参数改成从配置文件获取 VBA连接MySQL数据库 VBA读MySQL数据库 演示两种写入工作簿的代码实现系统环境: Windows 10 64bit Excel 365 64bit WAMP(3.2.2.2 64bit)集成的MariaDB版本为10.4.10&#…...

金融OCR领域实习日志(一)——OCR技术从0到1全面调研

一、OCR基础 任务要求: 工作原理 OCR(Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相)检查纸上打印的字符,经过检测暗、亮的模式肯定其形状,而后用…...

ELK日志解决方案

ELK日志解决方案 ELK套件日志系统应该是Elasticsearch使用最广泛的场景之一了,Elasticsearch支持海量数据的存储和查询,特别适合日志搜索场景。广泛使用的ELK套件(Elasticsearch、Logstash、Kibana)是日志系统最经典的案例,使用Logstash和Be…...

嵌入式学习-驱动

嵌入式的一些基本概念 CPU与MCU的区别 CPU(中央处理器,central processing unit) 指集成了运算器、控制器、寄存器、高速缓存等功能模块的芯片,负责执行计算机程序指令的处理器。MCU(单片微型计算机或单片机,microco…...

系统架构17 - 软件工程(5)

软件工程 软件测试测试原则测试方法静态测试动态测试黑盒测试白盒测试灰盒测试自动化测试 测试阶段单元测试集成测试系统测试性能测试验收测试其它测试AB测试Web测试链接测试表单测试 测试用例设计黑盒测试用例白盒测试用例 调试 系统维护遗留系统系统转换转换方式数据转换与迁…...

空气质量预测 | Python实现基于线性回归、Lasso回归、岭回归、决策树回归的空气质量预测模型

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 政府机构使用空气质量指数 (AQI) 向公众传达当前空气污染程度或预测空气污染程度。 随着 AQI 的上升,公共卫生风险也会增加。 不同国家有自己的空气质量指数,对应不同国家的空气质量标准。 对于空气质量预测,…...

MYSQL数据库基本操作-DQL-基本查询

一.概念 数据库管理系统一个重要功能就是数据查询。数据查询不应是简单返回数据库中存储的数据,还应该根据需要对数据进行筛选以及确定数据以什么样的格式显示。 MySQL提供了功能强大,灵活的语句来实现这些操作。 MySQL数据库使用select语句来查询数据…...

gdb 调试 - 在vscode图形化展示在远程的gdb debug过程

前言 本地机器的操作系统是windows,远程机器的操作系统是linux,开发在远程机器完成,本地只能通过ssh登录到远程。现在目的是要在本地进行图形化展示在远程的gdb debug过程。(注意这并不是gdb remote !!&am…...

Android 13.0 SystemUI下拉状态栏定制二 锁屏页面横竖屏时钟都居中功能实现二

1.前言 在13.0的系统rom定制化开发中,在关于systemui的锁屏页面功能定制中,由于在平板横屏锁屏功能中,时钟显示的很大,并且是在左旁边居中显示的, 由于需要和竖屏显示一样,所以就需要用到小时钟显示,然后同样需要居中,所以就来分析下相关的源码,来实现具体的功能 如图…...

docker 部署xxl-job

docker 部署xxl-job XXL-JOB github地址 https://github.com/xuxueli/xxl-job XXL-JOB 文档地址 https://www.xuxueli.com/xxl-job/ XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品…...

Kafka(九)跨集群数据镜像

目录 1 跨集群镜像的应用场景1.1 区域集群和中心集群1.2 高可用(HA)和灾备(DR)1.3 监管与合规1.4 云迁移1.5 聚合边缘集群的数据 2 多集群架构2.1 星型架构2.2 双活架构2.2 主备架构2.2.1 如何实现Kafka集群的故障转移2.2.1.1 故障转移包括的内容1. 灾难恢复计划2. 非计划内的故…...

第3讲 谈谈final、finally、 finalize有什么不同?

参考 三者区别 final final 是 java 关键字可修饰变量(类成员变量、类静态变量、局部变量和形参):表示不可修改当前变量的值(这里的值可以是地址,也可以是基本类型的值)#(注意:fi…...

MC3172 串口模块

MC3172 支持12个串口对应关系如下 串口模块初始化 第一个是uart0~11 inpin RX 脚 管脚号 outpin TX脚 管脚号 baud 波特率 read_ptr ,数据读取指针 void uart_init(u32 uart_num,u8 in_pin,u8 out_pin,u32 baud,u8* read_ptr) {INTDEV_SET_CLK_RST(uart_num,(INTDEV_RUN|…...

VUE3 加载自定义SVG文件

网上代码通篇一律,需要修改多处地方,特别是component下还要创建一个index.vue的组件,奇奇怪怪。 要在 Vue 项目中使用 svg-sprite-loader 来管理 SVG 图标,你需要执行以下几个步骤: npm install svg-sprite-loader -…...

【数据分析】numpy基础第五天

文章目录 前言Z-Score标准化Z-Score应用示例 Min-Max归一化Min-Max应用示例 总结 前言 第五天是我们的numpy学习计划中的最后一天。 在数据处理和数据分析中,数据预处理是非常重要的一步。我们不可能完全靠肉眼来分析数据,总会有用到各种算法模型的时候…...

CSS 双色拼接按钮效果

<template><view class="sss"><button> <!-- 按钮 --><view class="span"> 按钮 </view> <!-- 按钮文本 --></button></view></template><script></script><style>body {b…...

T05垃圾收集算法与垃圾收集器ParNew CMS

垃圾收集算法与垃圾收集器ParNew & CMS 垃圾收集算法 #### f 分代收集理论 当前虚拟机的垃圾收集都采用分代收集算法。根据对象存活周期不同将内存分为几块&#xff0c;一般将java堆分为新生代和老年代&#xff0c;然后根据各个年代的特点选择不同的垃圾收集算法。 在新…...

每日一道面试题:Java中序列化与反序列化

写在开头 哈喽大家好&#xff0c;在高铁上码字的感觉是真不爽啊&#xff0c;小桌板又拥挤&#xff0c;旁边的小朋友也比较的吵闹&#xff0c;影响思绪&#xff0c;但这丝毫不影响咱学习的劲头&#xff01;哈哈哈&#xff0c;在这喧哗的车厢中&#xff0c;思考着这样的一个问题…...

论文阅读:Vary-toy论文阅读笔记

目录 引言整体结构图方法介绍训练vision vocabulary阶段PDF数据目标检测数据 训练Vary-toy阶段Vary-toy结构数据集情况 引言 论文&#xff1a;Small Language Model Meets with Reinforced Vision Vocabulary Paper | Github | Demo 说来也巧&#xff0c;之前在写论文阅读&…...

【Linux】开始使用 vim 吧!!!

Linux 1 what is vim &#xff1f;2 vim基本概念3 vim的基本操作 &#xff01;3.1 vim的快捷方式3.1.1 复制与粘贴3.1.2 撤销与剪切3.1.3 字符操作 3.2 vim的光标操作3.3 vim的文件操作 总结Thanks♪(&#xff65;ω&#xff65;)&#xff89;感谢阅读下一篇文章见&#xff01;…...

Ubuntu22.04桌面版root登录避坑指南:从密码设置到SSH远程连接完整流程

Ubuntu 22.04桌面版root权限全流程实战&#xff1a;从密码安全到SSH调优 刚接触Ubuntu桌面环境时&#xff0c;很多开发者会遇到这样的困境&#xff1a;图形界面操作需要频繁输入sudo密码&#xff0c;而某些系统级配置又必须使用root账户。本文将带你用工程师思维解决这个痛点&a…...

VisionPro相机控制进阶:用C#实现拍照、实时流与图像保存的完整工作流

VisionPro相机控制进阶&#xff1a;用C#构建工业级图像采集工作流 在工业自动化领域&#xff0c;稳定可靠的图像采集系统是质量检测、尺寸测量和缺陷识别的基础。VisionPro作为工业视觉领域的标杆工具&#xff0c;配合C#强大的开发能力&#xff0c;可以构建出高性能的相机控制…...

AudioSeal小白入门:无需代码,用90年代复古界面快速加密你的音频

AudioSeal小白入门&#xff1a;无需代码&#xff0c;用90年代复古界面快速加密你的音频 1. 什么是AudioSeal&#xff1f; AudioSeal是Meta公司开发的一款前沿音频水印技术&#xff0c;它能在不影响音质的前提下&#xff0c;将数字签名"隐形"嵌入到音频文件中。想象…...

告别Keil:用VS Code + EIDE打造高效C51开发环境

1. 为什么我们要放弃Keil&#xff1f; 如果你接触过C51单片机开发&#xff0c;Keil μVision这个名字一定不会陌生。作为单片机开发领域的"老前辈"&#xff0c;Keil几乎成了教学和入门的标准工具。但说实话&#xff0c;每次打开那个灰蒙蒙的界面&#xff0c;我都感觉…...

PvZ Toolkit 技术指南:从游戏修改到体验重塑

PvZ Toolkit 技术指南&#xff1a;从游戏修改到体验重塑 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 价值定位&#xff1a;为什么选择 PvZ Toolkit&#xff1f; 当你在《植物大战僵尸》无尽模式…...

Qwen3-TTS-VoiceDesign一文详解:speech_tokenizer作用机制与语音表征可视化

Qwen3-TTS-VoiceDesign一文详解&#xff1a;speech_tokenizer作用机制与语音表征可视化 1. 引言&#xff1a;从文字到声音的魔法转换 你有没有想过&#xff0c;为什么现在的AI语音合成听起来越来越像真人&#xff1f;为什么只需要用文字描述"温柔的成年女性声音"&a…...

GIS小白也能搞定!用QGIS加载2023版全国自然保护区SHP数据的保姆级教程

GIS小白也能搞定&#xff01;用QGIS加载2023版全国自然保护区SHP数据的保姆级教程 第一次接触GIS软件时&#xff0c;看着满屏的专业术语和复杂界面&#xff0c;很多人都会感到无从下手。但别担心&#xff0c;今天我们就用最通俗易懂的方式&#xff0c;带你一步步完成全国自然保…...

3个技巧让LibreTranslate翻译模型部署速度提升80%

3个技巧让LibreTranslate翻译模型部署速度提升80% 【免费下载链接】LibreTranslate Free and Open Source Machine Translation API. Self-hosted, offline capable and easy to setup. 项目地址: https://gitcode.com/GitHub_Trending/li/LibreTranslate LibreTranslat…...

OpenClaw安全审计:nanobot镜像的网络安全加固与入侵检测

OpenClaw安全审计&#xff1a;nanobot镜像的网络安全加固与入侵检测 1. 为什么需要关注OpenClaw的安全防护 上周我在本地部署nanobot镜像时&#xff0c;突然发现服务器CPU占用率异常飙升。查看日志才发现有大量来自境外IP的异常请求正在尝试暴力破解我的OpenClaw管理端口。这…...

Nunchaku-flux-1-dev快速上手:Python环境配置与基础调用代码详解

Nunchaku-flux-1-dev快速上手&#xff1a;Python环境配置与基础调用代码详解 你是不是也对最近火热的AI绘画模型感到好奇&#xff0c;想自己动手试试&#xff0c;但一看到复杂的代码和配置就头疼&#xff1f;别担心&#xff0c;今天我们就来聊聊如何从零开始&#xff0c;用Pyt…...