Excel数据还可这样来查询:用SQL查询输出工作表指定区域更高效!

createh53个月前 (02-01)技术教程24

对于数据库编程的朋友而言,SQL结构化查询技术并不陌生,也非常好用,凭借SQL强大的功能可以有效实现对数据库的数据表数据的“增、删、改、查”操作。一般而言,比较高级的语言环境,例如Java、C#、ASP.NET、PHP、Python等都经常用到SQL方式访问数据库数据,而我们Office高级办公中Excel数据查询等办公操作较少用到过SQL方式,这主要是因为要使用SQL,还必须知道它的使用步骤,所以很多时候我们都是尽量运用Excel自身的查询函数进行或者至多就是进入VBA后台用简单的IF判断配合循环结构去完成数据查询。

数据量少的时候,用上面的IF判断配合循环结构去完成数据查询方便,也感觉不出来时间的耗费问题。当数据量很大时,可以明显感觉出时间的耗费问题,同时程序的判断语句也比较复杂。今天我们就要用简单的SQL技术在VBA环境中取代冗长的IF判断配合循环的方式,同时也大大提高了查询效率。不仅如此,还可将用它的查询结果输出到指定的地方:Excel内部的工作表区域或者列表控件。今天我们就先分享一下用SQL技术如何将查询结果输出到Excel内部的工作表区域吧!

使用SQL技术前,我们必须知道其步骤过程使用规范:1-创建数据访问的ADODB.Connection连接对象实例和ADODB.RecordSet数据记录集合对象实例;2-带条件的SQL字符串语句的的编辑; 3-数据连接对象实例的打开(例如:cnn.Open "Provider=Microsoft.ACE.OLEDB.15.0;Extended Properties=Excel 12.0;Data Source=" & DS_Path,其中:cnn-连接对象,DS_Path-数据源的完整路径);4-结构化查询语句执行(方式一:cnn.Excute (sql_str);方式二:rst.Open cnn, sql_str,A,B 其中:cnn是连接对象,sql_str是带条件的SQL字符串语句,A是数据记录游标模式,B是数据访问方式);5-将结构化查询的结果输出;6-关闭数据记录集合对象实例并置空、关闭数据连接对象实例并置空。

对于我们Office办公工作的朋友们而言,也许上面的ADODB不是很清楚是什么意思,我们有必要在这里普及下其知识,它的英文全称是“Active Data Objects DataBase”中文意思即是“活动数据对象数据库”。好了,现在我们就来以模糊查询方式如何实现SQL输出到Excel工作表的数据区域?

一、SQL数据操作之一“查询”操作的语句字符串书写规范

(一)语法格式:

"Select 字段名列表 From 访问的数据表 Where 条件列表 [Order by…] "

(二)几点说明:

1-“字段名列表”规范形如“字段名1[,字段名2[,字段名3…]]…等,若是所有字段则直接用*号

2-访问的数据表可以是数据库表或者指定的Excel的数据区域,例如Excel类型的数据源表的格式应该是中括号括起来(其他类型的数据库表不需要中括号括起来)的形如[Sheet1$A1:D21]样式,这里的$是Excel ODBC驱动程序识别Excel文件的工作表Sheet时追加的字符

3-条件列表是形如“Where 年龄>17 And 姓名=’张三’ Or 姓名 Like ‘%王%’”等形式,其中的“姓名 Like ‘%王%’”就是一种模糊查询条件(寻找含姓名中含有“王”的人,%是通配符)

4- Order by…是按照各种方式查询检索,可选可省写

二、准备一个待查询的Excel数据区域

我们输入下面一片简单的数据以备作查询使用,并添加一个查询交互按钮,再增设一个数据验证输入的单元格作为姓名查询的关键字输入或选择。如下图所示

三、体验通过SQL进行的模糊查询和精确查询的结果输出到Excel工作表给定的区域的情况

(一)在姓名查询关键字输入单元格中输入模糊的关键字。如下图所示

(二)点击<查询>按钮,将在结果区域出现模糊查询的结果数据。如下图所示

(三)通过该关键字数据验证单元格选定一个精确的姓名。如下图所示

(四)又再次点击<查询>按钮,将在结果区域出现出现精确查询的结果数据。如下图所示

(五)在数据验证单元格中如果未输入关键字或未选定关键字,则将出现空关键字输入的错误提示。如下图所示

(六)在数据验证单元格中如果输入的关键字不存在,则将出现数据记录未找到的的错误提示。如下图所示

看了上面的操作体验,接下来我们来看一下在VBA后台是如何实现的呢?下面,我们将呈现实现的功能代码,代码的每一句几乎我们都用绿色注释的非常清楚,便于大家学习交流。

四、通过SQL进行查询Excel数据结果输出到Excel工作表给定区域的功能代码截图

模块1中功能代码:

运用SQL进行查询Excel数据结果输出到Excel工作表给定区域的方法我们就给各位分享完毕了,在这里,我们分别用了模糊与精确查找两种方式实现了SQL查询Excel数据结果输出到Excel工作表给定区域。这种查询对于有大量Excel数据来讲有非常的现实的查询效率意义,大大地简化了繁琐的IF结构判断结合循环结构的检索,所有的条件都简化到SQL的Where子句中去即可。希望今天的分享能够为各位的数据查询提供这种更简洁的方法。

当然,有朋友会问:能否将Excel数据用SQL查询结果输出到像其他软件那样放在窗体上的像表格那样的控件中呈现呢?放心,我们会放在下一期作品中来解决这个问题,请大家平时留意关注!

最后,还是老话,非常感谢各位粉丝朋友对我的关注(头条号:跟我学Office高级办公)、推广和点评,有了各位的支持,我会带着各位的鼓励一如既往地推出更多有实用意义的作品,谢谢!

相关文章

Hutool Java工具类库导出Excel,超级简单

作者:程序猿的内心独白原文链接:http://suo.im/5Zxx2L前言在开发应用系统的时候,导出文件是必不可放的功能。以前用过POI、easyexcel等工具的导入导出功能,但总感觉太麻烦了,代...

java大牛告诉你这样导出excel更加简单高效

1.简述在java开发项目,我们经常会遇到将数据导出到Excel表格的需求 ,比较流行的使用POI、EasyExcel等。Apache POI是一个Java API,用于处理Microsoft Off...

【干货】如何使用Java实现百万数据的Excel导出功能?

Java作为一种常用的编程语言,在实现大量数据导出功能时具有很高的效率和可扩展性。本文将介绍如何使用Java实现百万数据的Excel导出功能。一、需求分析在很多实际应用场景中,我们需要将大量数据导出到...

程序员:超级简单导出Excel 工具,Hutool Java工具类库

前言在开发应用系统的时候,导出文件是必不可放的功能。以前用过POI、easyexcel等工具的导入导出功能,但总感觉太麻烦了,代码特别多,感觉并不是很好用。今天给大家介绍一款新工具,java工具类库H...

【Java技巧】高效数据传输:Java通过绑定快速将数据导出至Excel

前言把数据导出至 Excel 是很常见的需求,而数据的持久化,往往又放在数据库中。因此把数据库中的数据导出到 Excel中,成了非常普遍的一个需求。以关系型数据库为例,数据表是一个二维矩阵,但是为了易...

如何在SpringBoot中实现Excel数据导出功能?

在一些企业级的应用中,对于数据导出成Excel表格的需求是一个非常常见的需求,在SpringBoot中,我们可以借助于Apache POI库来实现这个需求,下面我们就来详细介绍一下如何在Spring...