【VB6|第22期】用SQL的方式读取Excel数据

这篇具有很好参考价值的文章主要介绍了【VB6|第22期】用SQL的方式读取Excel数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

日期:2023年8月7日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006


【VB6|第22期】用SQL的方式读取Excel数据,Excel,VB6,sql,excel,Jet.OLEDB,.xls,.xlsx



一、前言

Microsoft Excel 是广泛使用的电子表格软件, 在 VB6 中,读取 Excel 数据是常见的任务,可以用于数据处理、信息展示等。本文将介绍通过 第三方库(Jet.OLEDB 读取 Excel 数据,话不多说,直接上教程。

二、使用第三方库(Jet.OLEDB)

Jet.OLEDB 是一种广泛使用的数据访问技术,我们可以通过它来读取 Excel 数据。这种方法通常被大家认定为只可以读取早期版本的 Excel 文件(Excel 97-2003,格式:.xls),难道真的不可以读取高版本的数据了吗?这里留个疑问,我们继续…

(2-1)添加引用

首先,我们在工程引用中添加 Microsoft ActiveX Data Objects xx.x Library的引用。
【VB6|第22期】用SQL的方式读取Excel数据,Excel,VB6,sql,excel,Jet.OLEDB,.xls,.xlsx
这个是采用了 前期绑定(静态绑定) 的方式,如果换乘 后期绑定(动态绑定) 的方式,就不需要添加引用,直接CreateObject获得对象实例就可以。

(2-2)创建对象实例

  • 前期绑定(静态绑定) 创建方式
Dim CN As New ADODB.Connection
Dim RS As New ADODB.Recordset
  • 后期绑定(动态绑定) 创建方式
Set CN = CreateObject("adodb.connection")
Set RS = CreateObject("adodb.recordset")

(2-3)数据连接字符串解析(重点)

数据连接字符串如下所示:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<path>;Extended Properties=""Excel 8.0;HDR=Yes;"";
  • Provider: 指定要使用的数据提供程序。在这里,我们使用了 Microsoft Jet OLEDB 4.0 提供程序,该提供程序用于访问 Microsoft Excel 文件。
  • Data Source: 指定 Excel 文件的路径。你需要将 <path> 替换为实际的Excel 文件路径,比如 D:\example.xls
  • Extended Properties: 用于指定连接的扩展属性。在这里,我们设置为 Excel 8.0;HDR=Yes; ,其参数说明如下:
Extended Properties 参数说明
Excel 8.0 表示连接使用 Excel 97-2003 的文件格式。
Excel 12.0 表示连接使用 Excel 2007 及以上的文件格式,但是这个参数,不过不可用于Microsoft Jet OLEDB 4.0 提供程序
HDR=Yes 表示第一行的数据包含列标题
HDR=No 表示第一行的数据将被当作普通数据,而不是列标题。

(2-4)读取.xls格式的数据

【VB6|第22期】用SQL的方式读取Excel数据,Excel,VB6,sql,excel,Jet.OLEDB,.xls,.xlsx
【VB6|第22期】用SQL的方式读取Excel数据,Excel,VB6,sql,excel,Jet.OLEDB,.xls,.xlsx

示例代码:

Private Sub CmdJet_Click()
On Error Resume Next
'函数说明:使用第三方库(Jet.OLEDB)读取Excel数据(.xls格式)
'创建作者:Commas
'创建时间:2023-08-06
'修改时间:
'------传参说明------
'------传参说明------

    'Excel文件的路径
    Dim sXLPath As String
    
    'sXLPath = App.Path & "\example.xlsx"
    sXLPath = App.Path & "\example.xls"

    ' NO1:前期绑定(静态绑定)
    ' 需要添加对Microsoft ActiveX Data Objects xx.x Library的引用(版本号根据ADO版本变化)
    Dim CN As New ADODB.Connection
    Dim RS As New ADODB.Recordset
    ' NO2:后期绑定(动态绑定)
'''    Dim CN As Object 'New ADODB.Connection
'''    Dim RS As Object 'New ADODB.Recordset
'''    Set CN = CreateObject("adodb.connection")
'''    Set RS = CreateObject("adodb.recordset")
    
    Dim CNStr As String
    Dim sqlQuery As String
    
    ' 连接到Excel文件
    
    CNStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={path};Extended Properties=""Excel 8.0;HDR=Yes;"";"
    'CNStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={path};Extended Properties=""Excel 12.0;HDR=Yes;"";"
    
    CNStr = Replace(CNStr, "{path}", sXLPath)
    CN.Open CNStr
    
    ' 构造SQL查询语句
    sqlQuery = "SELECT * FROM [Sheet1$A1:C5];"
    
    ' 执行查询并将结果保存到记录集(Recordset)
    RS.Open sqlQuery, CN
    
    ' 将数据读取到数组中
    Dim aryData() As Variant
    aryData = RS.GetRows
    
    RS.Close
    CN.Close
    
    '输出,获取二维数组的行数和列数
    Dim rows As Long, cols As Long
    rows = UBound(aryData, 1) + 1  ' 行数
    cols = UBound(aryData, 2) + 1 ' 列数
    
    ' 遍历二维数组
    Dim i As Long, j As Long
    For i = 0 To rows - 1
        For j = 0 To cols - 1
            ' 访问二维数组中的元素
            Debug.Print "aryData(" & i & ", " & j & ") = " & aryData(i, j)
        Next j
    Next i
End Sub

返回结果:

aryData(0, 0) = 张三
aryData(0, 1) = 李小龙
aryData(0, 2) = 王五
aryData(0, 3) = 赵六
aryData(1, 0) = 技术部
aryData(1, 1) = 技术部
aryData(1, 2) = 市场部
aryData(1, 3) = 销售部
aryData(2, 0) = 18
aryData(2, 1) = 19
aryData(2, 2) = 20
aryData(2, 3) = 21

(2-5)读取.xlsx格式的数据

尝试一:

数据连接字符串:

sXLPath = App.Path & "\example.xlsx"
CNStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={path};Extended Properties=""Excel 8.0;HDR=Yes;"";"
CNStr = Replace(CNStr, "{path}", sXLPath)

测试结果:
【VB6|第22期】用SQL的方式读取Excel数据,Excel,VB6,sql,excel,Jet.OLEDB,.xls,.xlsx
尝试二:

数据连接字符串:

 sXLPath = App.Path & "\example.xlsx"
CNStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={path};Extended Properties=""Excel 12.0;HDR=Yes;"";"
CNStr = Replace(CNStr, "{path}", sXLPath)

测试结果:
【VB6|第22期】用SQL的方式读取Excel数据,Excel,VB6,sql,excel,Jet.OLEDB,.xls,.xlsx

三、结束语

经测试,我们会发现 Microsoft.Jet.OLEDB.4.0 确实只支持读取旧版本的 Excel 文件(即 .xls 格式的数据)。这是因为Microsoft Jet OLEDB 4.0 是一个较旧的数据提供程序,最初用于访问 Access数据库和旧版本的 Excel 文件,而新版本 Excel 文件使用了不同的数据存储格式,所以它并不支持直接读取的。

实际上,Microsoft.Jet.OLEDB.4.0 也可以读取新版 Excel 文件的。鉴于文章篇幅问题,下期我再出一期关于Microsoft.Jet.OLEDB.4.0 读取新版本 Excel 文件(即 .xlsx 格式的数据)的文章,出文速度看各位大佬的点赞速度了哈。


参考文章:

  • 《Microsoft OLE DB Provider for Microsoft Jet》

版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/132128714文章来源地址https://www.toymoban.com/news/detail-641280.html

到了这里,关于【VB6|第22期】用SQL的方式读取Excel数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 将excel数据导入到SQL server数据库

    将要导入的excel表格数据如下,第一行数据默认为数据库表中的字段,所以这个必须要有,否则无法映射导入。 选择你要导入数据的数据库,右键选择任务,再点击导入文件 点击下一步 选择Microsoft Excel 点击预览选择你要导入的表,选择对应版本,但是一般导入就会预设好,

    2024年02月06日
    浏览(49)
  • VBA-自定义面板,使用SQL查询Excel数据

    定制插件,实现用户打开任意一个工作簿,写sql对Excel中的数据进行查询 需求 筛选日期小于’2023-4-24’,按group字段分组,求和各分组下的销售额,返回结果集新建工作表写入 数据源 现在有两个表, 一个用户的销售金额表,记录用户不同日期的销售金额,其中date字段是日期

    2024年02月01日
    浏览(35)
  • python连接sql server查询数据输出excel

    要将Python连接SQL Server查询的数据输出到Excel文件,你可以使用 pyodbc 库和 pandas 库。首先,你需要安装这些库,可以使用以下命令: 接下来,你可以使用以下代码将SQL Server查询的数据导出到Excel文件: 在这个示例中,你需要将 your_server_name 、 your_database_name 、 your_username 和

    2024年01月24日
    浏览(45)
  • Excel导入数据,未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

    .NET在导入Excel时,使用了一个Microsoft.Jet.OLEDB.4.0 是数据接口技术,然后客户端未安装对应的插件,导致无法正常导入数据到数据库 显示报错:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 在对应的 IIS 应用程序池中,设置应用程序池默认属性 /常规 /启用32位应用程序

    2024年02月13日
    浏览(45)
  • Excel 2019访问SQL Server数据库的实现过程

    源之:https://vip.kingdee.com/article/288066926977041920?productLineId=11 在日常ERP系统实施过程中,往往会遇到客户的一些个性化需求,比如有些客户习惯用Excel电子表格来查看ERP系统中的数据,业余拓展学习了一下,借助ODBC可以实现这个需求。 一、ODBC数据管理和SQL数据库之间的连接的建

    2024年02月11日
    浏览(60)
  • 将excel数据导入到SQL server数据库,SQL server引入导入excel报表,如何解决“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”问题

    目录 版本: 文章主要内容:  未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序 新版本不同的设置的地方:   SQL server2018、excel 2016 1、将excel数据导入到SQL server数据库, 2、SQL server引入导入excel报表, 3、如何解决“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序

    2024年02月11日
    浏览(56)
  • 如何将Excel数据导入到MS SQL Server已定义的数据表中

    1. 前提:已经在SQL Server中定义了所要导入数据的表(如stock,salvaging和out_stock三张表)的结构。 2. 如图,选择要导入数据的数据库(例如dlqx数据库),右键-任务-导入数据。  2. 进入向导后,点击“下一步”。  3. (1)选择 数据源 ,这里选择Microsoft Excel,如图所示 (2)点击

    2024年02月04日
    浏览(43)
  • 用sql将excel文件导入数据库(Microsoft.ACE.OLEDB.12.0)

    1、将xlsx(或者xls文件,需要将文件后缀修改)文件数据插入数据库中 2、将csv文件数据插入数据库中 其中, \\\"HDR=yes;\\\"是说Excel文件的第一行是列名而不是数据,\\\"HDR=no;\\\"正好与前面的相反。 \\\"IMEX=1 \\\"如果列中的数据类型不一致,使用\\\"IMEX=1\\\"可必免数据类型冲突。 3、判断路径下是

    2024年02月12日
    浏览(39)
  • 技巧:给excel某列数据加双引号和逗号,用于sql中in()查询

    就是需求给过来一个excel,我们要用其中的某一列作为条件去查询数据库,删数据或者改数据。 这种小需求写代码去解析excel不值得,直接写sql搞定。 在首尾加上单引号或者双引号就可以使用in(…)来查询。 excel-给某列数据加双引号和逗号,excel公式里转义 Excel中对特殊字符的

    2024年02月14日
    浏览(89)
  • UNITY--读取Excel的几种方式

    目录 一.DLL插件读取 1.1.Excel存放位置 1.2.使用示例 1.3.Excel格式  1.4.输出显示  1.5.所需插件 二.Excel转成Asset文件,再进行读取 2.1Excel文件存放位置 2.2 编辑模式生成Asset文件,并保存到指定位置  2.3创建ExcelRead脚本,读取Excel内容 2.4 创建数据存储脚本 2.5  编辑器生成Asset 与属

    2024年01月20日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包