Excel中使用SQL语句的四种方法
总结在 Excel 中使用 SQL 语句的四种方法,各种方法都有各自的适用场景,可以选择自己熟悉的或喜欢方式。本文以在 Excel 中操作 MS SQL 数据库的数据为例进行说明。MS SQL 的数据如下,使用微软 SQLExpress 版本。
方法 1: Excel 现有连接功能
点击浏览更多按钮,在出现下面的界面后,新建一个 sql server 的连接:
输入要连接的sql server服务器,以及连接方式:
在下一步,选择数据库,选择表:
然后一路下一步,将数据放在希望的工作表:
默认情况下,显示的是一个表,我们可以通过右键菜单进行修改:
进入的时候,是这样的:
我们将命令类型改为 SQL,然后在命令文本中写入合法的 sql 语句:
这样就可以了。这个方法的数据源也可以是 Excel 工作簿,灵活性还是不错的。但如果用 Excel 作为数据源,工作表名称后面需要加上$符号。
下面演示将 Excel 工作簿作为数据源。点击数据选项卡的现有连接,将类型改为所有文件或者Excel文件,直接找到有数据的 Excel 工作簿。
选择表格:
可以把 Excel 工作簿的数据源当做表格,用 SQL 语句操作:
显示的结果如下:
方法2: ADO
使用 ADO 操作数据,需要编写 VBA 代码,但灵活性更高,甚至可以封装成函数。有两个知识点:
- 连接字符串的写法
- 参照 ADO 库
连接字符串可以使用方法1的 OLEDB 连接字符串。也可以使用另外一种方法:新建一个扩展名为 udl 的文件,然后双击,出现下面的界面,填写好相应的字段:
点击测试连接,测试是否可以连接成功。然后用文本编辑器打开 udl 文件,获取连接字符串:
第二个知识点是在 VBE 环境中加载 ADO 库。方法如下,打开 Excel 文件后,按 ALT + F11 进入 VBE 环境,然后通过菜单工具->引用,选中 Microsoft ActiveX Data Object 库的应用,有不同的版本,可以选择高一点的版本:
以下是示例代码,代码比较简单,不做讲解。
Public Sub ImportData()Dim conn As New ADODB.Connectionconn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=SimpleStockManager;Data Source=LAPTOP-1VEJV1RM\SQLEXPRESS"Dim rst As New ADODB.Recordsetconn.Openrst.Open "select * from t_m_materials", conn, adOpenKeyset, adLockReadOnly' print headersDim i As IntegerDim leftTopCell As RangeSet leftTopCell = Sheet1.Range("A1")For i = 0 To rst.Fields.Count - 1leftTopCell.Offset(0, i).Value = rst.Fields(i).NameNext' import dataleftTopCell.Offset(1, 0).CopyFromRecordset rst
End Sub
方法3:利用 Power Query
首先获取数据库的连接:
填写服务器名称,数据库可以选填。
点击确定按钮,在下面的界面中选择 t_m_materials 表,然后点击加载按钮。
此时,加载的是表,按下 ALT + F12 进入 Power Query 编辑器,在高级编辑器中,将自动生成的代码进行改写,改写后 M 代码如下:
letSource = Sql.Database("LAPTOP-1VEJV1RM\SQLEXPRESS", "SimpleStockManager"),dbo_t_m_materials = Value.NativeQuery(Source, "select MaterialNo, MaterialDesc from t_m_materials")
indbo_t_m_materials
通过 M 语言的 Value.NativeQuery 函数,使用 SQL 语句获取数据。这种方法还是比较简单的。
方法4:pandas + xlwings
如果熟悉 Python 语言,那么使用 pandas 库,结合 xlwings 的功能,使用起来就更简单了。在安装了 pandas 库和 xlwings 库之后,先在 CMD 窗口中运行下面的命令,创建一个 xlsm 文件以及同名的 py 文件:
xlwings quickstart UseSql
打开 UseSql.py ,编写如下代码:
import xlwings as xw
from sqlalchemy import create_engine
import pandas as pdengine = create_engine('mssql+pymssql://username:pwd@localhost:10577/SimpleStockManager?charset=utf8')def main():# do nothing@xw.func
def read_sql(sql):df = pd.read_sql(sql, engine)return dfif __name__ == "__main__":xw.Book("UseSql.xlsm").set_mock_caller()main()
只需要几句代码,就编写了一个可以根据 sql 语句获取数据的函数。在 Excel 中使用效果如下:
相关文章:

Excel中使用SQL语句的四种方法
总结在 Excel 中使用 SQL 语句的四种方法,各种方法都有各自的适用场景,可以选择自己熟悉的或喜欢方式。本文以在 Excel 中操作 MS SQL 数据库的数据为例进行说明。MS SQL 的数据如下,使用微软 SQLExpress 版本。 方法 1: Excel 现…...

目标检测中的损失函数
损失函数是用来衡量模型与数据的匹配程度的,也是模型权重更新的基础。计算损失产生模型权重的梯度,随后通过反向传播算法,模型权重得以更新进而更好地适应数据。一般情况下,目标损失函数包含两部分损失,一个是目标框分…...
list库实现
list库实现的要点: 构建list类时,需要同时构建struct Node来存储节点信息,list类中只存储哨兵位节点信息,迭代器类需要template<T,Ptr,Ref>来构建const和非const迭代器,迭代器中也是存储节点信息。反向迭代器也…...

MFC工控项目实例二十三模拟量输入设置界面
承接专栏《MFC工控项目实例二十二主界面计数背景颜色改变》 1、在SenSet.h文件中添加代码 #include "BtnST.h" #include "ShadeButtonST.h"/ // SenSet dialogclass SenSet : public CDialog { // Construction public:SenSet(CWnd* pParent NULL); //…...
排序算法总结(三)希尔排序
访问www.tomcoding.com网站,学习Oracle内部数据结构,详细文档说明,下载Oracle的exp/imp,DUL,logminer,ASM工具的源代码,学习高技术含量的内容。 如果你在网上搜一下希尔排序,都会告…...
如何迁移 Linux 服务器 第一部分 - 系统准备
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 在许多情况下,您可能需要将数据和操作需求从一个服务器迁移到另一个服务器。您可能需要在新的数据中心实施解决方案&a…...

网络IO模型都有哪些
“网络IO模型有BIO、NIO、AIO ” “他们分别代表什么,有什么区别吗? BIO:同步阻塞IO。 NIO:同步非阻塞IO。 AIO:异步非阻塞IO。 “BIO为什么是同步阻塞IO,他阻塞的是谁跟谁之间的关联?”。 首先…...
数据结构: 数组在算法中的应用
数组是计算机科学中的一种基础数据结构,它在算法中有着广泛的应用,其关键要素是索引与索引对应的值。 请注意,这些代码示例需要适当的辅助函数(如 swap )和主函数来运行。此外,一些算法(如KMP算…...
js快速转换时间(时间戳转换成年月日时分秒)
1:js转换 1728270833000 转换为 2024-10-07 11:13:53 var date new Date(1728270833000); // 参数需要毫秒数,所以这里将秒数乘于 1000 Y date.getFullYear() -; M (date.getMonth()1 < 10 ? 0(date.getMonth()1) : date.getMonth()1) -; D…...

LeetCode15.三数之和
题目链接:15. 三数之和 - 力扣(LeetCode) 1.常规解法(会超时) 由于这道题需要排除相同的三元组,则可以先将目标数组从小到大排序,再遍历数组找到每个符合条件的三元组,若结果中不包…...

SpringBoot3.3 优雅启停定时任务
定时任务是非常常见的功能,在一个复杂的应用程序中,如何优雅地管理这些定时任务的启动与停止尤为重要。 Spring Boot 提供了强大的任务调度支持,通过@Scheduled注解可以轻松地创建定时任务,并且可以通过配置来灵活地管理这些任务的执行环境。在本文中,我们将深入探讨如何…...

数据结构之二叉搜索树(key模型与key_value模型)
二叉搜索树(key模型与key_value模型) 1. ⼆叉搜索树的概念2. ⼆叉搜索树的性能分析3. ⼆叉搜索树的插⼊4. ⼆叉搜索树的查找5. ⼆叉搜索树的删除6. ⼆叉搜索树的实现代码7. ⼆叉搜索树key和key/value使⽤场景7.1 key搜索场景:7.2 key/value搜…...
图说几何学2300年重大错误:附着在直线z上的直线段必是z的一部分
黄小宁 用泡沫塑料和油漆制成的铅球与真正的铅球,两者有不同的内部形状。同样,数学有长度相同但内部形状不同的伪≌直线段。 几何学有史2300年来一直认定附着在直线z上的直线段一定是z的一部分。其实这是2300年肉眼直观错觉——百年病态集论的症结。 …...
汽车网关(GW)技术分析
一、引言 在现代汽车电子系统中,汽车网关(Gateway,简称 GW)扮演着至关重要的角色。随着汽车电子技术的不断发展,汽车内部的电子控制单元(Electronic Control Unit,简称 ECU)数量不断…...

Telnet命令详解:安装、用法及应用场景解析
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…...
C++之LIST模拟实现(代码纯享版)
目录 文章目录 前言 一、代码 总结 前言 本文主要展示了模拟List的代码实现 一、代码 #pragma once #include<iostream> #include<assert.h> using namespace std; namespace zlh {template<class T>struct list_node{T _data;list_node<T>* _next;l…...

华为OD机试 - 括号匹配 - 栈(Python/JS/C/C++ 2024 E卷 100分)
华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…...

打破欧美10年芯片垄断,杨振宁教授关门弟子,仅用三年创造奇迹
有这么一位超级厉害的中国人,硬是把欧美那边垄断了十年的芯片技术给“撬”开了!说起来,这才是我们该追的真正明星啊!那么,这位大神到底是谁?又是怎么让欧美芯片圈儿里的人听到她的名字就心里发怵的呢&#…...
OpenCV视频I/O(20)视频写入类VideoWriter之用于将图像帧写入视频文件函数write()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::VideoWriter::write() 函数用于将图像帧写入视频文件。 该函数/方法将指定的图像写入视频文件。图像的大小必须与打开视频编写器时指定的大…...
音视频入门基础:FLV专题(14)——FFmpeg源码中,解码Script Tag的实现
一、引言 在《音视频入门基础:FLV专题(9)——Script Tag简介》中对Script Tag进行了简介,本文讲述FFmpeg源码中是怎样解码FLV文件的Script Tag,拿到里面的信息。 二、flv_read_packet函数 从《音视频入门基础&#x…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...