利用Excel轻松查询数据库表格(excel查询表格数据库数据库数据库)

随着互联网的高速发展,各种信息系统的数据量也在不断增加。此时,如何高效地查询所需数据,成为一个极为重要的问题。当今更受欢迎的数据库软件是MySQL,在其中,利用Excel处理数据查询是一种常见的做法。在这篇文章中,我们将会介绍如何利用Excel轻松地查询MySQL中的数据库表格。

之一步:建立数据库

我们将以XAMPP为例,介绍如何建立MySQL数据库。首先下载并安装XAMPP,打开xampp-control.exe。按照以下步骤建立数据库:

1. 打开网页:

http://localhost/phpmyadmin/

2. 点击“新建”,创建一个新的数据库。

3. 创建一个新的表格。

4. 在表格中创建若干个字段(如姓名、年龄等),并将数据填入。

第二步:连接数据库

在Excel中,连接MySQL数据库的前提是安装MySQL的ODBC驱动程序。我们在这里以MySQL ODBC 8.0 Unicode Driver为例。请记住,在32位Excel中,只能选择32位驱动程序;在64位Excel中,必须选择64位驱动程序。

在连接之前,你需要获取你的MySQL服务器地址、端口、用户名以及密码,以及你在之一步中所创建的数据库名。连接步骤如下:

1. 打开Excel,点击“数据”选项卡中的“从其他来源”、“从ODBC”选项。

2. 点击“选项”,选择“特定的D-S-N”。

3. 点击“添加”,选择ODBC数据源。

4. 在驱动程序列表中,选择你安装的MySQL ODBC驱动程序的版本,并点击“完成”。

5. 在数据源名称(DSN)中,填入自己定义的名称,如“mysql_odbc”。

6. 填写连接服务器的详细信息,包括服务器名称、端口号、数据库名称,以及认证方式等。

7. 点击“测试”进行测试连接。

8. 如果成功连接,确认所有信息都正确,然后点击“确定”。Excel已经连接到你的MySQL数据库。

第三步:查询数据库表格

在Excel中,使用SQL查询语言查询MySQL数据库非常容易。下面,我们将用SELECT语句查询之一步建立的数据库表格。

假设我们有如下一张表格:

![image.png](attachment:image.png)

我们想查询年龄小于25岁的人的姓名和年龄,步骤如下:

1. 新建一个工作表,在A1单元格输入如下的SQL查询语句:

SELECT 姓名, 年龄 FROM people WHERE 年龄

2. 点击右上角的查询按钮,Excel将向MySQL数据库发送查询请求,并返回结果。

![image-2.png](attachment:image-2.png)

通过这种方法,我们可以在Excel中轻松实现对MySQL数据库的查询功能。同时,根据具体需要,我们还可以利用Excel图表功能,将查询结果可视化,帮助我们更加清晰地理解并处理数据。

成都网站建设公司-创新互联为您提供网站建设、网站制作、网页设计及定制高端网站建设服务!

如何利用EXCEL建立一个可查询的数据库

当然可以 参考下面视频里的模糊查询功能,数据量不是旅配弯很大的话 用函数就可以,数据量大需要用VBA或者SQL 这的看拆闷具体表的结构

【视频教程】ExceL函数高级应卖樱用 多条件模糊搜索查询系统系统

提供一个方法作参考败拦槐,此方法一般适用于数据量不大的表格(在3000行内效果比较好),如果数据量大的,要么直衡返接对商品名称列进行筛选,要么用VBA了,但VBA我不会^_^。

I2单元格输入数组公式,输入完成后不要察友直接回车,要按三键  CTRL+SHIFT+回车  然后右拉再下拉。

=INDEX(A:A,ALL(IF($A$2:$A$3000=$H$2,ROW($2:$3000),4^8),ROW(A1)))&””

我把文件传上来,请点击这回答右下角绿色的“点击下载”按钮,下载文件看看效果。

极其流行,同样也是竞争力极其大的一种商业模改哪式。虽然国内软件开发公司都发展壮大起来了,但是各地软件开发公司的实力及资质仍然参差不齐。

今天给大家谈谈app开发有名的公司,软件开发的公司有很多,但是实名的有多少呢?大家应该都不清楚吧,放心!看完这篇文章你绝对清楚!

系统软件开发有名的公司:

华盛恒辉:这家公司是国内知名的软件开发公司,公司成立十余年了,在软件开发方面有很大的建树,拥有齐全的技术团队,所有的技术人员都是一线城市工作三年以上拥有丰富的开发经验,专门为企业打造品牌软件,提供一站式软件建设方案。非常不错可以去试一试。

致力于为企业提供全面、系统的开发制作方案。在开发、建设到运营推广领域拥有丰富经验,我们通过建立对目标客户和用户行为的分析,整合高质量设计和极其新技术,为您打造创意十足、有价值的企业品牌中歼芹。

在军工领域,合作客户包括:中央军委联合参谋(原总参)、中央军委后勤保障部(原总后)、中央军委装备发展部(原总装)、装备研究所、战略支援、军事科学院、研究所、航天科工集团、中国航天科技集团、中国船舶工业集团、中国船舶重工集团、之一研究所、训练器材所、装备技术研究所等单位。

在民用领域,公司大力拓展民用市场,目前合作的客户包括中国中铁电气化局集团、中国铁道科学研究院、济南机务段、东莞轨道交通公司、京港地铁、中国国电集团、电力科学研究院、水利部、国家发改委、中信银行、华为公司等大型客户。

五木恒润:这家公司也是实名的,也有自己的官网,在行业内也是属于拔尖的以来开发公司,公司也有技术开发团队和运营团队,据说技术人员也是只招收3年以上开发经验的技术,在实力这块也是不用担心。

五木恒润拥有员工300多人,技术人员占90%以上,是一家专业的军工信息化建设服务单位,为军工单位提供完整的信息化解决方案。公司设有股东会、董事会、监事会、工会等上层机构,同时设置总经理职位,由总经理管理公司的具体事务。公司下设有研发部、质量部、市场部、财务部、人事部等机构。公司下辖成都研发中心、西安卖毕研发中心、沈阳办事处、天津办事处等分支机构。

盈软科技:盈软科技有限公司。公司提供:技术研发、技术服务、技术咨询、成果:计算机软硬件这家公司也是实力比较强的开发公司,公司的小程序开发只做定制版的,没有模板开发。公司也有开发技术团队,拥有丰富的开发经验。

欣芸科技:杭州欣芸网络科技有限公司于2023年04月23日成立,提供:信息技术咨询服务;技术服务、技术开发、技术咨询、技术交流、技术、技术推广;软件开发;软件外包服务;网络与信息安全软件开发;物联网技术研发;信息系统运行维护服务;人工智能通用应用系统;信息系统集成服务。

上传带行列宽帆埋号的有数据示例的表格截图,清楚说明已知条件,轿迹达成什么样的结果,结果和已知条件有怎样的

勾稽关系

,才能有针对慎蚂性地给你准确的答案。

这个要用access建立数据库

如何更新Excel的数据库查询函数库

更新一下之前写的Excel的数据库类,将其改成函数的形式,调用更简单(省却了生成类实例的步骤)。现在这个代码在工作中用了一年多,已经比较健壮。若有问题,请留言指出或与我联系。

这些代码有如下优势:

•无需任何配置。在VBA中新建模块,并晌兆哗把代码复制转帖过去即可使用。

•有以下函数:执行数据库语句、查询数据库、结果复制到单元格(Excel中最常用)、将Excel表格上传到数据库。基本覆盖Excel中对数据库的常用操作。

•会在立即窗口显示数据库错误信息,方便查错。

•在数据库连接字符串字典中配好数据库连接信息后,数据库访问时可直接使用配好的链接字符串。

具体的函数用法已经写在下面代码注释里。简单描述一下:

•dqQueryToArray(sql, connection_string) 查询数据库,返回一个二维数组

•dbQueryOne(sql, connection_string) 查询数据库,返回单个变量。

•dbQueryToCell(sql, range, connection_string, withHeader) 查询数据库后,将结果显示在range开始的区域中;withHeader控制是否显示列名。

•dbExec(sql, necction_string) 执行数据库语句;无返回值

•dbInsertRange(table, range, connection_string, is_empty) 将本Excel文件的range区域里的数据插入到数据库的表table。其中is_empty控制在上传数据前是否清空宴行table的原数据。

其它就看一下代码吧:

‘ EXCEL的ADO数据库操作函数库

‘ 这些代码应该放在Excel的VBA模块中,类模块的名字为database,并以以下形式引用:

‘ res = dbQueryToArry(sql, connection_string)

‘ ‘ 返回sql的查询结果,结果为一个二维数组

‘ res = dbQueryOne(sql, connection_string)

‘ ‘ 返回sql的查询结果,但只返回之一个数据(相当于数据库查询结果的左上角那个数据)

‘ dbQueryToCell sql, save_to_range, connection_string, withHeader

‘ ‘ 将sql的查询结果直接写入到以save_to_range开头的单元格区域中

‘ ‘ withHeader控制是否复制表头,默认为true(复制表头)

‘ 其中参数sql为数据库查询语句,connection_string为数据库连接字符猜掘串。

‘ 比如要连接SQL数据库,并已经设置ODBC,连接字符串为:

‘ “Provider=MSDASQL;DSN=odbc_name;UID=username;PWD=password;database=database_name;”

‘ 如果未设置ODBC,连接字符串为:

‘ “driver={SQL Server};server=service_name_or_ip;uid=username;pwd=password;database=database_name;”

‘ 其中最后面的database变量可省略。对于SQL Server,推荐使用后一种方法。

‘ 如果数据来源为Excel文件,connection_string参数可省略

‘ 其它功能:内置数据库的连接字符串、查询存储过程

‘ Author: ,v4

‘ url:

Private sqlDict As Object ‘ 缓存数据

Private cnn As Object, rst As Object, lastConn As String

Private Sub dbInitialize()

If Not sqlDict Is Nothing Then Exit Sub

Set sqlDict = CreateObject(“scripting.Dictionary”)

lastConn = “”

‘ 在这里可以缓存一些常用的数据库信息,这样在查询数据库时可以直接调用

‘ 比如dbQueryToArry(sql, “this”)

With sqlDict

.Add “SQL服务器”, _

“Provider=MSDASQL;DSN=odbc_name;UID=username;PWD=password;database=database_name;”

.Add “SQL服务器(无需配置ODBC)”, _

“driver={SQL Server};server=ip;uid=username;pwd=password;database=database_name;”

.Add “this”, “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & ThisWorkbook.FullName & _

“;Extended Properties=Excel ” & Application.Version & “;”

End With

End Sub

‘ 查询数据库,返回RecordSet对象

‘ sql: 数据库查询语句

‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,

‘ 利用内设的数据库连接信息

Public Function dbQuery(sql As String, _

Optional ByVal sqlConnectString As String = “this”) As Object ‘ ADODB.Recordset

dbConnectSQL sqlConnectString

On Error GoTo errorhander

rst.Open sql, cnn

Set dbQuery = rst

errorhander:

dbDisplayError sql

End Function

‘ 查询数据库,返回一个数组

‘ sql: 数据库查询语句

‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,

‘ 利用内设的数据库连接信息

Public Function dbQueryToArray(sql As String, _

Optional ByVal sqlConnectString As String = “this”)

dbConnectSQL sqlConnectString

On Error GoTo errorhander

rst.Open sql, cnn

dbQueryToArray = rst.GetRows()

errorhander:

DisplayError sql

End Function

‘ 查询数据库,返回单个数值

‘ sql: 数据库查询语句

‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,

‘ 利用内设的数据库连接信息

Public Function dbQueryOne(sql As String, _

Optional ByVal sqlConnectString As String = “this”)

dbConnectSQL sqlConnectString

On Error GoTo errorhander

rst.Open sql, cnn

dbQueryOne = rst.Fields.Item(0).value

errorhander:

dbDisplayError sql

End Function

‘ 查询数据库,返回单个数值

‘ sql: 数据库查询语句

‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,

‘ 利用内设的数据库连接信息

Public Function dbQueryToCell(sql$, Optional rng As Excel.Range, _

Optional ByVal sqlConnectString$ = “this”, _

Optional withHeader As Boolean = True)

On Error GoTo error_handler

dbConnectSQL sqlConnectString

rst.Open sql, cnn

Set rng = rng.Cells(1, 1)

If withHeader = True Then

Dim i As Long

For i = 0 To rst.Fields.Count – 1

rng.Offset(0, i).value = rst.Fields(i).Name

Next

rng.Offset(1, 0).CopyFromRecordset rst

Else

rng.CopyFromRecordset rst

End If

error_handler:

dbDisplayError sql

End Function

‘ 执行任意数据库语句,无返回结果。如需返回结果,请使用Query、QueryOne、QueryToCell等函数

‘ sql: 数据库查询语句

‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,利用内设的数据库连接信息

Sub dbExec(ByVal sql As String, _

Optional ByVal sqlConnectString As String = “this”)

dbConnectSQL sqlConnectString

On Error GoTo errorhander

cnn.Execute sql

errorhander:

dbDisplayError sql

End Sub

‘ 这个函数用来上传一个Excel区域到数据库,数据表必须事先建好,并且包括Excel区域的之一行

‘ Database.InsertRange(table, rng, sqlConnectString, isEmpty)

‘ table:Excel数据将上传到这个表内

‘ rng: 将被上传的Excel区域

‘ sqlConnectString: 数据库连接字符串

‘ isEmpty: 是否清空原有表格数据

Public Function dbInsertRange(table$, rng As Excel.Range, Optional ByVal sqlConnectString$ = “this”, _

Optional isEmpty As Boolean = False)

dbConnectSQL sqlConnectString

On Error Resume Next

If isEmpty Then dbExec “delete from ” & table, sqlConnectString$

Dim r As Long, sqlHead$, i As Long

‘ 首选根据isEmpty选项,删除原表内所有数据

For i = 1 To rng.Columns.Count

sqlHead = sqlHead & “,”

Next i

‘ 其次,依次拆入每行

‘ 目前每一行都需运行一个SQL语句,效率较低,如果数据量较大,可能会引起Excel死机

sqlHead = “insert into ” & table & ” (” & mid(sqlHead, 2,) & “) values “

For r = 2 To rng.rows.Count

Dim sql$

sql = “”

For i = 1 To rng.Columns.Count

Dim v

v = rng.Cells(r, i).value()

If IsError(v) Then v = “”

If IsDate(v) Then

sql = sql & “,'” & Format(v, “yyyy-mm-dd”) & “‘”

ElseIf v “” And IsNumeric(v) Then

sql = sql & “,” & v

Else

sql = sql & “,'” & v & “‘”

End If

Next i

dbExec sqlHead & ” (” & mid(sql, 2,) & “)”, sqlConnectString$

Next r

End Function

‘ 查询存储过程,返回的是ADODB.RecordSet对象

Public Function dbQueryStoredProc(procName$, para, _

Optional ByVal sqlConnectString As String = “this”, _

Optional returnPara As Boolean = True) As Object ‘ADODB.Recordset

On Error GoTo errorhander

dbConnectSQL sqlConnectString

With com

.ActiveConnection = cnn

.CommandType = adCmdStoredProc

.CommandText = procName

‘ 获取存储过程的参数定义

.Parameters.Refresh

‘ 如果存在输出参数,则删除它,默认之一个为输出参数

On Error Resume Next

If returnPara Then .Parameters.Delete 0

‘ 设置输入参数的值

If IsArray(para) Then

Dim i

For i = 0 To UBound(para)

.Parameters.Item(i).value = para(i)

Next i

End If

‘ 改变输入参数大小

Dim tmpp

For Each tmpp In .Parameters

tmpp.Size = 255

Next tmpp

‘ 获取参数返回值

Set dbQueryStoredProc = .Execute()

End With

errorhander:

DisplayError sql

End Function

Private Sub dbClose()

‘ 当类被注销时,断开数据库连接

On Error Resume Next

If cnn.State 0 Then cnn.Close

End Sub

‘ 连接数据库

‘ 此处首先检查cnn是否已经连接到想要连接的数据库,如果已经连接,将不产生任何操作

‘ 本Database对象在对象存续过程中,不会主动断开;

‘ 只有在对象注销之时,才断开数据库,如需断开数据库连接,请set db = nothing

Private Function dbConnectSQL(ByVal sqlConnectString$) As String

On Error Resume Next

Call dbInitialize

If sqlDict.Exists(LCase(sqlConnectString)) Then

sqlConnectString = sqlDict.Item(LCase(sqlConnectString))

End If

If rst Is Nothing Then Set rst = CreateObject(“ADODB.Recordset”)

If cnn Is Nothing Then Set cnn = CreateObject(“ADODB.Connection”)

If cnn.State 1 Or lastCnn sqlConnectString Then

cnn.Close

Set cnn = Nothing

Set cnn = CreateObject(“ADODB.Connection”)

cnn.Open sqlConnectString

lastConn = sqlConnectString

End If

dbConnectSQL = sqlConnectString

End Function

‘ 显示查询数据库过程中出现的错误信息,信息被显示在立即窗口。

Private Sub dbDisplayError(sql$)

Dim e

If cnn.Errors.Count > 0 Then

Debug.Print cnn.Errors.Count & ” errors found when exec “”” & sql & “”””

For Each e In cnn.Errors

Debug.Print “Error info: ” & e.description & ” Source: ” & e.Source

Next e

End If

End Sub

  更新一下之前写的Excel的数据库类,将其改成函数的形式,调用更简单(省却了生成类实例的步骤)。现在这个代码在工作中用了一年多,已经比较健壮。若有问题,请留言指出或与我联系。

  这些代码有如下优势:

  无需任何配置。在VBA中新建模块,并把代码复制转帖过去即可使用。

  有以下函数:执行数据库语句、查询数据库、结果复制到单元格(Excel中最常用)、将Excel表格上传到数州州桥据库。基本覆盖Excel中对数据库的常用操作。

  会在立即窗口显示数据库错误信息,方便查错。

  在数据库连接字符串字典中配好数据库连接信息后,数据库访问时可直接使用配好的链接字符串。

  具体的函数用法已经写在下面代码注释里。简单描述一下:

  dqQueryToArray(sql, connection_string)查询数据库,返回一个二维数组

  dbQueryOne(sql, connection_string)查询数据库,返回单个变量。

  dbQueryToCell(sql, range, connection_string, withHeader)查询数据库后,将结果显示在range开始的区域中;withHeader控制是否显示列名。

  dbExec(sql, necction_string)执行数据库语句;无返回值

  dbInsertRange(table, range, connection_string, is_empty)将本Excel文件的range区域里的数据插入到数据库的表table。其中is_empty控制在上传数据前是否清空table的原数据。

  其它就看一下代码吧:

  ’ EXCEL的ADO数据库操作函数库

‘ 这些代码应该放在Excel的VBA模块中,类模块的名字为database,并以以下形式引用:

‘ res = dbQueryToArry(sql, connection_string)

‘ ‘ 返回sql的查询结果,结果为一个二维数组

‘ res = dbQueryOne(sql, connection_string)

‘ ‘ 返回sql的查询结果,但只返回之一个数据(相当于数据库查询结果的左上角那个数据)

‘ dbQueryToCell sql, save_to_range, connection_string, withHeader

‘ ‘ 将册猛sql的查询结果直接写入到以save_to_range开头的单元格区域中

‘ ‘ withHeader控制是否复制表头,默认为true(复制表头)

‘ 其中参数sql为数据库查询语句,connection_string为数据库连接字符串。

‘ 比如要连接SQL数据库,并已经设置ODBC,连接字符串为:

‘ “Provider=MSDASQL;DSN=odbc_name;UID=username;PWD=password;database=database_name;”

‘ 如果未设置ODBC,连接字符串为:

‘ “driver={SQL Server};server=service_name_or_ip;uid=username;pwd=password;database=database_name;”

‘ 其中最后面的database变量可省略。对于SQL Server,推荐使用后一种方法。

‘ 如果数据来源为Excel文件,connection_string参数可省略

‘ 其它功能:内置数据库的连接字符串、查询存储过程

‘ Author: ,v4

‘ url:

Private sqlDict As Object’ 缓存数据

Private cnn As Object, rst As Object, lastConn As String

Private Sub dbInitialize()

If Not sqlDict Is Nothing Then Exit Sub

Set sqlDict = CreateObject(“scripting.Dictionary”)

lastConn = “”

‘ 在这里可以缓存一些常用的数据库信息迹慧,这样在查询数据库时可以直接调用

‘ 比如dbQueryToArry(sql, “this”)

With sqlDict

.Add “SQL服务器”, _

“Provider=MSDASQL;DSN=odbc_name;UID=username;PWD=password;database=database_name;”

.Add “SQL服务器(无需配置ODBC)”, _

“driver={SQL Server};server=ip;uid=username;pwd=password;database=database_name;”

.Add “this”, “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & ThisWorkbook.FullName & _

“;Extended Properties=Excel ” & Application.Version & “;”

End With

End Sub

‘ 查询数据库,返回RecordSet对象

‘ sql: 数据库查询语句

‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,

‘ 利用内设的数据库连接信息

Public Function dbQuery(sql As String, _

Optional ByVal sqlConnectString As String = “this”) As Object’ ADODB.Recordset

dbConnectSQL sqlConnectString

On Error GoTo errorhander

rst.Open sql, cnn

Set dbQuery = rst

errorhander:

dbDisplayError sql

End Function

‘ 查询数据库,返回一个数组

‘ sql: 数据库查询语句

‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,

‘ 利用内设的数据库连接信息

Public Function dbQueryToArray(sql As String, _

Optional ByVal sqlConnectString As String = “this”)

dbConnectSQL sqlConnectString

On Error GoTo errorhander

rst.Open sql, cnn

dbQueryToArray = rst.GetRows()

errorhander:

DisplayError sql

End Function

‘ 查询数据库,返回单个数值

‘ sql: 数据库查询语句

‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,

‘ 利用内设的数据库连接信息

Public Function dbQueryOne(sql As String, _

Optional ByVal sqlConnectString As String = “this”)

dbConnectSQL sqlConnectString

On Error GoTo errorhander

rst.Open sql, cnn

dbQueryOne = rst.Fields.Item(0).value

errorhander:

dbDisplayError sql

End Function

‘ 查询数据库,返回单个数值

‘ sql: 数据库查询语句

‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,

‘ 利用内设的数据库连接信息

Public Function dbQueryToCell(sql$, Optional rng As Excel.Range, _

Optional ByVal sqlConnectString$ = “this”, _

Optional withHeader As Boolean = True)

On Error GoTo error_handler

dbConnectSQL sqlConnectString

rst.Open sql, cnn

Set rng = rng.Cells(1, 1)

If withHeader = True Then

Dim i As Long

For i = 0 To rst.Fields.Count – 1

rng.Offset(0, i).value = rst.Fields(i).Name

Next

rng.Offset(1, 0).CopyFromRecordset rst

Else

rng.CopyFromRecordset rst

End If

error_handler:

dbDisplayError sql

End Function

‘ 执行任意数据库语句,无返回结果。如需返回结果,请使用Query、QueryOne、QueryToCell等函数

‘ sql: 数据库查询语句

‘ sqlConnectString: 数据库连接信息,或者直接指定数据库,比如”Wind”、”JYDB”等,利用内设的数据库连接信息

Sub dbExec(ByVal sql As String, _

Optional ByVal sqlConnectString As String = “this”)

dbConnectSQL sqlConnectString

On Error GoTo errorhander

cnn.Execute sql

errorhander:

dbDisplayError sql

End Sub

‘ 这个函数用来上传一个Excel区域到数据库,数据表必须事先建好,并且包括Excel区域的之一行

‘ Database.InsertRange(table, rng, sqlConnectString, isEmpty)

‘ table:Excel数据将上传到这个表内

‘ rng: 将被上传的Excel区域

‘ sqlConnectString: 数据库连接字符串

‘ isEmpty: 是否清空原有表格数据

Public Function dbInsertRange(table$, rng As Excel.Range, Optional ByVal sqlConnectString$ = “this”, _

Optional isEmpty As Boolean = False)

dbConnectSQL sqlConnectString

On Error Resume Next

If isEmpty Then dbExec “delete from ” & table, sqlConnectString$

Dim r As Long, sqlHead$, i As Long

‘ 首选根据isEmpty选项,删除原表内所有数据

For i = 1 To rng.Columns.Count

sqlHead = sqlHead & “,”

Next i

‘ 其次,依次拆入每行

‘ 目前每一行都需运行一个SQL语句,效率较低,如果数据量较大,可能会引起Excel死机

sqlHead = “insert into ” & table & ” (” & mid(sqlHead, 2,) & “) values “

For r = 2 To rng.rows.Count

Dim sql$

sql = “”

For i = 1 To rng.Columns.Count

Dim v

v = rng.Cells(r, i).value()

If IsError(v) Then v = “”

If IsDate(v) Then

sql = sql & “,'” & Format(v, “yyyy-mm-dd”) & “‘”

ElseIf v “” And IsNumeric(v) Then

sql = sql & “,” & v

Else

sql = sql & “,'” & v & “‘”

End If

Next i

dbExec sqlHead & ” (” & mid(sql, 2,) & “)”, sqlConnectString$

Next r

End Function

‘ 查询存储过程,返回的是ADODB.RecordSet对象

Public Function dbQueryStoredProc(procName$, para, _

Optional ByVal sqlConnectString As String = “this”, _

Optional returnPara As Boolean = True) As Object’ADODB.Recordset

On Error GoTo errorhander

dbConnectSQL sqlConnectString

With com

.ActiveConnection = cnn

.CommandType = adCmdStoredProc

.CommandText = procName

‘ 获取存储过程的参数定义

.Parameters.Refresh

‘ 如果存在输出参数,则删除它,默认之一个为输出参数

On Error Resume Next

If returnPara Then .Parameters.Delete 0

‘ 设置输入参数的值

If IsArray(para) Then

Dim i

For i = 0 To UBound(para)

.Parameters.Item(i).value = para(i)

Next i

End If

‘ 改变输入参数大小

Dim tmpp

For Each tmpp In .Parameters

tmpp.Size = 255

Next tmpp

‘ 获取参数返回值

Set dbQueryStoredProc = .Execute()

End With

errorhander:

DisplayError sql

End Function

Private Sub dbClose()

‘ 当类被注销时,断开数据库连接

On Error Resume Next

If cnn.State 0 Then cnn.Close

End Sub

‘ 连接数据库

‘ 此处首先检查cnn是否已经连接到想要连接的数据库,如果已经连接,将不产生任何操作

‘ 本Database对象在对象存续过程中,不会主动断开;

‘ 只有在对象注销之时,才断开数据库,如需断开数据库连接,请set db = nothing

Private Function dbConnectSQL(ByVal sqlConnectString$) As String

On Error Resume Next

Call dbInitialize

If sqlDict.Exists(LCase(sqlConnectString)) Then

sqlConnectString = sqlDict.Item(LCase(sqlConnectString))

End If

If rst Is Nothing Then Set rst = CreateObject(“ADODB.Recordset”)

If cnn Is Nothing Then Set cnn = CreateObject(“ADODB.Connection”)

If cnn.State 1 Or lastCnn sqlConnectString Then

cnn.Close

Set cnn = Nothing

Set cnn = CreateObject(“ADODB.Connection”)

cnn.Open sqlConnectString

lastConn = sqlConnectString

End If

dbConnectSQL = sqlConnectString

End Function

‘ 显示查询数据库过程中出现的错误信息,信息被显示在立即窗口。

Private Sub dbDisplayError(sql$)

Dim e

If cnn.Errors.Count > 0 Then

Debug.Print cnn.Errors.Count & ” errors found when exec “”” & sql & “”””

For Each e In cnn.Errors

Debug.Print “Error info: ” & e.description & ” Source: ” & e.Source

Next e

End If

End Sub

更新一下之前写的Excel的数据库类,将其改成函数的形式,调用更简单(省却了生成类实例的步骤)。无需任何配置。在VBA中新建模块,并把代码复制转帖亮纤过去即可使用。

有以下函数:执行数据库语句、查询数据库、结果复制到单元格(Excel中最常用)、将Excel表格上传到数据库。基本覆盖Excel中对数据库的常用操作。

会在立即窗口显示数据库错误信息,方便查错。

在数据库连接字符串字典中配好数据库连接信息后,数据库访问时可直接使用配好余卜的链接字符串。

具体的函数用法已经写在下面代码注释里。简单描述一下:

dqQueryToArray(sql, connection_string) 查询数据库,返回一个二维数组

dbQueryOne(sql, connection_string) 查询数据库,返回单个变量。

dbQueryToCell(sql, range, connection_string, withHeader) 查询数据库后,将结果显示在range开始的区域中敬毁仿;withHeader控制是否显示列名。

dbExec(sql, necction_string) 执行数据库语句;无返回值

dbInsertRange(table, range, connection_string, is_empty) 将本Excel文件的range区域里的数据插入到数据库的表table。其中is_empty控制在上传数据前是否清空table的原数据。

更新一下之前写的Excel的数据库类,将其改成函数的形式,调用更简单(省却了生成类实例的步骤)。现在这个代码在工作中用了一尺厅年多,已经比较健壮。

无需任何配置。在VBA中新建模块,并把代码复制转帖过去即可使用。

有以下函数:执行数据库语句、查询数据库、结果复制到单元格(Excel中最常用)、将Excel表格上传到数据库。基本覆盖Excel中对数据库的常用操作。

会在立即窗口显示数据库错误信息和迟,方便查错。

EXCEL数据查询问题?

您可以使用以下VBA函数来实现在B2单元格输入单日日期,或者一个日期范围,sheet1的数据亮哗跟着变化的功能:

vbnet

Sub UpdateData()

Dim ws As Worksheet

Dim lastRow As Long

Dim lastCol As Long

Dim i As Long

‘获取当前工作表

Set ws = ThisWorkbook.Worksheets(“Sheet1”)

‘获取最后一行和最后一列

lastRow = ws.Cells(Rows.Count, “A”).End(xlUp).Row

lastCol = ws.Cells(Rows.Count, “A”).End(xlUp).Column

‘输入单日日期

ws.Cells(1, 1).Value = “”

‘输入日期范围

ws.Cells(1, 2).Value = “”

ws.Cells(1, 3).Value = “”

ws.Cells(1, 4).Value = “”

‘更新数据

ws.Range(“B2”).Value = “”

‘循环遍历罩慎所有行和列

For i = 2 To lastRow

If ws.Cells(i, 1).Value “” Then

ws.Cells(i, 1).Offset(0, 1).Value = ws.Cells(i, 1).Value

End If

Next i

End Sub

这个函数首先获取当前工作表,然后获取最后一行和最后一列。接下来,它输入单日日期,并指定日期范围。最后,它更新B2单元格的值,并循环遍历所有行和列,以便将日期物键敬范围应用到所有行和列。

要想动态刷新查询范围日期的话,升斗用VBA是可行的,如果你不想用VBA(就是你说的宏),那么就可用数据菜单下的“自吵腔磨其它来源”建立一个与数据库工作薄的连接,这种需要懂一点SQL数据库查询语句。如果上面两圆睁种都不适用的话,那么还有第三种,纯函数公式法,只用函数公式查询的话,需要保证你那个数据库工作薄是打开状态才可以链接到数据的。

你提问时说有什么函数可以解决,就是想问纯公式法吧?这个不难的,就像同一个工作薄中查询不同工作表的数据一样。你在你的E列的公式上直接输入查询数据库工作薄的公式就可以了。具体公式要知道数据库工作薄的格式和内容才能列出来。

下面这句例子是在E1引用数据库工作薄A1的内容。以这句为参考,相信你自己能写出来对应的查询公式的:

(假设在同一个目录下,而且文件名为数据库,引用的是Sheet1这个工作表的A1)

E1公式:=’Sheet1′!G35关于excel查询表格数据库数据库数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

创新互联-老牌IDC、云计算及IT信息化服务领域的服务供应商,业务涵盖IDC(互联网数据中心)服务、云计算服务、IT信息化、AI算力租赁平台(智算云),软件开发,网站建设,咨询热线:028-86922220

网页标题:利用Excel轻松查询数据库表格(excel查询表格数据库数据库数据库)
文章URL:http://www.csdahua.cn/qtweb/news15/414415.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网