您的位置:首页 > 数据库

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

2012-11-10 14:34 603 查看
'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

指示命令应该异步执行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐