`

ADO连接excel表格,怎样访问数据?

 
阅读更多

VB是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能。但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。

  一、VB读写EXCEL表:

  VB本身提自动化功能可以读写EXCEL表,其方法如下:

  1、在工程中引用MicrosoftExcel类型库:

  从"工程"菜单中选择"引用"栏;选择MicrosoftExcel9.0ObjectLibrary(EXCEL2000),然后选择"确定"。表示在工程中要引用EXCEL类型库。

  2、在通用对象的声明过程中定义EXCEL对象:

DimxlAppAsExcel.Application
DimxlBookAsExcel.WorkBook
DimxlSheetAsExcel.Worksheet

  3、在程序中操作EXCEL表常用命令:

SetxlApp=CreateObject("Excel.Application")'创建EXCEL对象
SetxlBook=xlApp.Workbooks.Open("文件名")'打开已经存在的EXCEL工件簿文件
xlApp.Visible=True'设置EXCEL对象可见(或不可见)
SetxlSheet=xlBook.Worksheets("表名")'设置活动工作表
xlSheet.Cells(row,col)=值'给单元格(row,col)赋值
xlSheet.PrintOut'打印工作表
xlBook.Close(True)'关闭工作簿
xlApp.Quit'结束EXCEL对象
SetxlApp=Nothing'释放xlApp对象
xlBook.RunAutoMacros(xlAutoOpen)'运行EXCEL启动宏
xlBook.RunAutoMacros(xlAutoClose)'运行EXCEL关闭宏

  4、在运用以上VB命令操作EXCEL表时,除非设置EXCEL对象不可见,否则VB程序可继续执行其它操作,也能够关闭EXCEL,同时也可对EXCEL进行操作。但在EXCEL操作过程中关闭EXCEL对象时,VB程序无法知道,如果此时使用EXCEL对象,则VB程序会产生自动化错误。形成VB程序无法完全控制EXCEL的状况,使得VB与EXCEL脱节。

  二、EXCEL的宏功能:

  EXCEL提供一个VisualBasic编辑器,打开VisualBasic编辑器,其中有一工程属性窗口,点击右键菜单的"插入模块",则增加一个"模块1",在此模块中可以运用VisualBasic语言编写函数和过程并称之为宏。其中,EXCEL有两个自动宏:一个是启动宏(SubAuto_Open()),另一个是关闭宏(SubAuto_Close())。它们的特性是:当用EXCEL打含有启动宏的工簿时,就会自动运行启动宏,同理,当关闭含有关闭宏的工作簿时就会自动运行关闭宏。但是通过VB的自动化功能来调用EXCEL工作表时,启动宏和关闭宏不会自动运行,而需要在VB中通过命令xlBook.RunAutoMacros(xlAutoOpen)和xlBook.RunAutoMacros(xlAutoClose)来运行启动宏和关闭宏。

  三、VB与EXCEL的相互勾通:

  充分利用EXCEL的启动宏和关闭宏,可以实现VB与EXCEL的相互勾通,其方法如下:

  在EXCEL的启动宏中加入一段程序,其功能是在磁盘中写入一个标志文件,同时在关闭宏中加入一段删除此标志文件的程序。VB程序在执行时通过判断此标志文件存在与否来判断EXCEL是否打开,如果此标志文件存在,表明EXCEL对象正在运行,应该禁止其它程序的运行。如果此标志文件不存在,表明EXCEL对象已被用户关闭,此时如果要使用EXCEL对象运行,必须重新创建EXCEL对象。

  四、举例:

  1、在VB中,建立一个FORM,在其上放置两个命令按钮,将Command1的Caption属性改为EXCEL,Command2的Caption属性改为End。然后在其中输入如下程序:

DimxlAppAsExcel.Application'定义EXCEL类
DimxlBookAsExcel.Workbook'定义工件簿类
DimxlsheetAsExcel.Worksheet'定义工作表类
PrivateSubCommand1_Click()'打开EXCEL过程
 IfDir("D:/temp/excel.bz")=""Then'判断EXCEL是否打开
  SetxlApp=CreateObject("Excel.Application")'创建EXCEL应用类
  xlApp.Visible=True'设置EXCEL可见
  SetxlBook=xlApp.Workbooks.Open("D:/temp/bb.xls")'打开EXCEL工作簿
  Setxlsheet=xlBook.Worksheets(1)'打开EXCEL工作表
  xlsheet.Activate'激活工作表
  xlsheet.Cells(1,1)="abc"'给单元格1行驶列赋值
  xlBook.RunAutoMacros(xlAutoOpen)运行EXCEL中的启动宏
 Else
  MsgBox("EXCEL已打开")
 EndIf
EndSub

PrivateSubCommand2_Click()
 IfDir("D:/temp/excel.bz")<>""Then'由VB关闭EXCEL
  xlBook.RunAutoMacros(xlAutoClose)'执行EXCEL关闭宏
  xlBook.Close(True)'关闭EXCEL工作簿 
  xlApp.Quit'关闭EXCEL
 EndIf
 SetxlApp=Nothing'释放EXCEL对象
 End
EndSub


  2、在D盘根目录上建立一个名为Temp的子目录,在Temp目录下建立一个名为"bb.xls"的EXCEL文件。

  3、在"bb.xls"中打开VisualBasic编辑器,在工程窗口中点鼠标键选择插入模块,在模块中输入入下程序存盘:


Subauto_open()
 Open"d:/temp/excel.bz"ForOutputAs#1'写标志文件
 Close#1
EndSub
Subauto_close()
 Kill"d:/temp/excel.bz"'删除标志文件
EndSub

  4、运行VB程序,点击EXCEL按钮可以打开EXCEL系统,打开EXCEL系统后,VB程序和EXCEL分别属两个不同的应用系统,均可同时进行操作,由于系统加了判断,因此在VB程序中重复点击EXCEL按钮时会提示EXCEL已打开。如果在EXCEL中关闭EXCEL后再点EXCEL按钮,则会重新打开EXCEL。而无论EXCEL打开与否,通过VB程序均可关闭EXCEL。这样就实现了VB与EXCEL的无缝连接。

ADO打开EXCEL示例

DimConnAsNewADODB.Connection
DimrsAsNewADODB.Recordset
DimiAsInteger
DimsqlAsString

PrivateSubForm_Load()
OnErrorResumeNext
strName="f:/book.xls"'EXCEL文件名
strSheetName="sheet1"'EXCEL表名

Conn.Open"Provider=Microsoft.Jet.OLEDB.4.0;PersistSecurityInfo=False;DataSource="&strName&";ExtendedProperties='Excel8.0;HDR=Yes'"'连接EXCEL文件

sql="select*from["&strSheetName&"$]"'打开EXCEL表
rs.Opensql,Conn,3,3

MsgBoxrs.RecordCount
DoUntilrs.EOF
Fori=0Tors.Fields.Count-1
List1.AddItemrs.Fields.Item(i).Name
IfNotIsNull(rs.Fields.Item(i).value)Then
List2.AddItemrs.Fields.Item(i).value
Else
rs.Update
rs.Fields.Item(i).value="peter"&i
rs.Update
EndIf
Nexti
rs.MoveNext
Loop
EndSub

分享到:
评论

相关推荐

    VBA+ADO 连接Excel表格查询操作数据(SQL语句操作)

    VBA+ADO 连接Excel表格查询操作数据(SQL语句操作) SQL语句操作表格

    初学者Ado(Adodb)读取(访问)Excel数据

    初学者Ado(Adodb)读取(访问)Excel数据,有详细的说明,在VB.net2010上编译通过,绝对可以运行,希望能给初学都以帮助。 但这不是VB.net读取(访问)Excel数据的最好方法,最好的方法是应该vb.net平台进行改进后的ado.net...

    VC2005+ADO操作Excel文件

    与从Excel.exe导出类库相比,更方便,但是有局限性,当表格中同一列包含不同类型数据时,则读取数据可能出错,这时需要在连接字符串中将IMEX值设为1(导入模式),把所有数据都当作TEXT类型来处理,但是这样一来将只能...

    c#与excel表格之间的操作

    总结起来,其操作不外乎创建、打开、读写、保存(后退出/释放),而其操作方法,则主要有:通过ADO.NET数据连接方式、通过Excel对象模型“自动化”操作、使用中间数据格式如文本文件,XML等间接操作Excel、使用第三...

    ADO与SQL Server 2000

    ADO,即Active数据对象(Active Data Objects):实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口相连。用户可以使用任何一种ODBC数据源,即不仅适合于SQL ...

    数据导出到Excel的6种方法(含QueryTable,数据库,ADO,内存批量插入,VSFlexGrid).rar

    5.传统的方法,就是向Excel表格对应的单元格一个一个插入数据,此种方法是最原始的,也是最慢的 6.通过借助VSFlexGrid控件(一个相当相当好用的数据展示控件)的SaveGrid方法导出,导出过程瞬间完成,即使电脑上不...

    C#连接数据库源码下载

     实例262 连接Excel 367  实例263 连接Oracle数据库 368  9.4 数据库结构的读取与修改 369  实例264 读取SQL Server数据库结构 369  实例265 修改SQL Server数据库结构 372  9.5 数据录入 ...

    新诚软(原天星海沙)数据转换器 V1.0

    数据库时,转换器是通过BDE来进行连接的,而不在使用ADO连接,同时在Paradox连接中,一并将其 目录下面的dbf文件读出,主要也是为了方便使用者,因此需要用户机器上安装BDE的驱动程序。 免费版下载地址:...

    新诚软数据转换器 v1.1 (免费版)

    数据库时,转换器是通过BDE来进行连接的,而不在使用ADO连接,同时在Paradox连接中,一并将其 目录下面的dbf文件读出,主要也是为了方便使用者,因此需要用户机器上安装BDE的驱动程序。 免费版下载地址:...

    新诚软数据转换器 V12

    所有数据源均通过ADO进行连接,不同数据源的连接串全部可以由用户自定行定。 V12版本中作出了重大的调整,界面与功能上全部增强。同时支持中英文两种语言,加入Web转换器功能,实现转换器中的数据库通过Web进行发布...

    C#程序开发范例宝典9

    366 9.3 连接其他数据库 367 实例262 连接Excel 367 实例263 连接Oracle数据库 368 9.4 数据库结构的读取与修改 369 实例264 读取SQL Server数据库结构 369 实例265 修改SQL Server...

    PDMReader1.02

    PDMReader也具备ADO连接数据库的基本建议功能,并提供比如SQL脚本导出,excel,word,html,xls,txt文件导出等。 如果您或者您所在公司在数据库开发中使用SyBase公司的PowerDesigner产品进行Physical Data Model数据...

    asp.net Excel转换为SQL Server的方法

    1.功能分析 通过Microsoft.Jet.OLEDB.4.0方式可实现使用ADO.NET访问Excel的目的,如以下示例代码为连接Excel数据的字符串: 代码如下:string strOdbcCon = @”Provider=Microsoft.Jet.OLEDB.4.0;Persist Security ...

    Visual C#.NET 2008程序设计案例集锦 (源码)

    案例4.6 连接Excel电子表格 案例4.7 利用SQL语句向数据库表中插入数据 案例4.8 利用存储过程修改数据库中的数据 案例4.9 分页显示数据库表中的数据 案例4.10 动态查询数据库表中的数据 案例4.11 SQL Server服务...

    ACReport中国式报表控件2011(Ver 2.50)

    1.重要改进:新版本中Delphi下的VCL控件已经比较完善,封装良好,与Delphi无缝连接,改变了旧版中需要将Dataset中的数据复制到报表引擎中的实现方式,通过模拟ADO接口的方式直接支持BDE/ClientDataset/等非ADO方式的...

Global site tag (gtag.js) - Google Analytics