分享

vb读取xls文件而不打开excel进程 ado数据库方法读取xls

 hdzgx 2019-12-06

'Read Excel File Using ADO
Public Function Read_Excel _
         (ByVal sFile _
          As String) As ADODB.Recordset
      '函数参数
      On Error GoTo fix_err '有错去fix_err那个标签
      Dim rs As ADODB.Recordset '搞了个对象:)
      Set rs = New ADODB.Recordset '设置了个对象rs
      Dim sconn As String '搞了个字串

      rs.CursorLocation = adUseClient '对象游标位
      rs.CursorType = adOpenKeyset '游标类型
      rs.LockType = adLockBatchOptimistic '对象之锁定(我想要独占!除非你换location)

      sconn = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & sFile '字串设置,sFile是传参数的,用excel驱动去读这个文件
      rs.Open "SELECT * FROM [sheet1$]", sconn '选取全部
      Set Read_Excel = rs '新对象完全等于rs旧对象
      Set rs = Nothing '干掉旧对象(临时)
      Exit Function
fix_err:
      Debug.Print Err.Description + " " + _
                  Err.Source, vbCritical, "Import"
      Err.Clear
End Function

于是你就有了一个对象Read_Excel ,可以使用本对象去查任何你要的东东;

找对象要找好对象:)

附录,对付对象的方法供参考:
rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N     将记录指针移到数据表第N行
rs.absolutepage=N         将记录指针移到第N页的第一行
rs.pagesize=N             设置每页为N条记录
rs.pagecount              根据 pagesize 的设置返回总页数
rs.recordcount            返回记录总数
rs.bof                    返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof                    返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete                 删除当前记录,但记录指针不会向下移动
rs.addnew                添加记录到数据表末端
rs.update                 更新数据表记录
---------------------------------------
Recordset对象方法
Open方法
recordset.Open Source,ActiveConnection,CursorType,LockType,Options
Source
Recordset对象可以通过Source属性来连接Command对象。Source参数可以是一个Command对象名称、一段SQL命令、一个指定的数据表名称或是一个Stored Procedure。假如省略这个参数,系统则采用Recordset对象的Source属性。
ActiveConnection
Recordset对象可以通过ActiveConnection属性来连接Connection对象。这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信(ConnectionString)的字符串参数。
CursorType
Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:
----------------------------------------------------------------------------------------------------------------------
常数                           常数值            说明
----------------------------------------------------------------------------------------------------------------------
adOpenForwardOnly        0          缺省值,启动一个只能向前移动的游标(Forward   Only)。
adOpenKeyset                 1          启动一个Keyset类型的游标。
adOpenDynamic             2         启动一个Dynamic类型的游标。
adOpenStatic                  3          启动一个Static类型的游标。
----------------------------------------------------------------------------------------------------------------------
以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下说明他们之间的区别。
----------------------------------------------------------------------------------------------------------------------
LockType
Recordset对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockType属性为预设值。LockType参数包adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:
----------------------------------------------------------------------------------------------------------------------
          常数                   常数值               说明
----------------------------------------------------------------------------------------------------------------------
adLockReadOnly            1      缺省值,Recordset以只读启动无法运 行AddNew、UpdatDelete
adLockPrssimistic          2     当数据源正在更新时,系统会暂时锁住其他用户动作保持数据一致
adLockOptimistic           3     当数据源正在更新时,系统并不会锁住其他用户的动作。
adLockBatchOptimistic 4     当数据源正在更新时,其他用户必须将 CursorLocation属性改为                                                            adUdeClientBatch才能对数据进行增、删、改的操作。
Options

常    量
 
说    明
 
adCmdText
 
指示提供者应将sCommandText赋值为命令的文本定义
 
adCmdTable
 
指示ADO应生成SQL查询,以便从sCommandText命名的表中返回所有行
 
adCmdTableDirect
 
指示提供者应从sCommandText命名的表中返回所有行
 
adCmdTable
 
指示提供者应将sCommandText赋值为表名
 
adCmdStoredProc
 
指示提供者应将sCommandText赋值为存储过程
 
adCmdUnknown
 
指示sCommandText参数中的命令类型未知
 
adExecuteAsync
 
指示命令应该异步执行

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多