Ado直连Excel出错? 请教(50)

  • 主题发起人 主题发起人 坐井看天阔
  • 开始时间 开始时间

坐井看天阔

Unregistered / Unconfirmed
GUEST, unregistred user!
要用DELPHI中的ADO系列控件访问Excel数据文件,首先应该建立一些基本概念。你需要将一个Excel数据文件想象为一个关系数据库,Excel文件中的每个工作表就对应该数据库中的一个表,而工作表中的每一列当然就是表的列了。然后,按照下列面的秘诀进行就可以。    1.设置ADOConnection的ConnectionString  构造ConnectionString时,OLE DB的提供者要选择Microsoft Jet 4.0 OLE DB Provider作为ADO的驱动程序。这本来是用于连接Access数据库的驱动程序,但也可打开Excel文件。  连接的数据库名称当然就是你要打开的Excel文件,注意扩展名是*.xls,而不是*.mdb。  最关键的一点是,还要设置扩展属性Extended Properties为“Excel 8.0”,否则,测试连接时会报告无法识别数据格式的错误。Extended Properties的属性值在“所有”参数页中输入。  最后,设置完成后的ConnectionString中的各项参数为:  Provider=Microsoft.Jet.OLEDB.4.0  Data Source=MyExcelFile.xls  Extended Properties=Excel 8.0  Persist Security Info=False  2.设置ADODataSet或ADOTable  将ADODataSet或ADOTable连接到刚才的ADOConnection。如果不用ADOConnection,也可以参照上面的方法直接设置ADODataSet或ADOTable的ConnectionString属性。  对于ADODataSet,需要将CommandType属性设置为cmdTableDirect,而对于ADOTable,则将TableDirect属性设置为True。因为,访问Excel文件是直接的数据文件访问,不是通过SQL语句来操作游标访问的。如果不设置直接访问,则系统会报告SQL语句格式错误等信息。  然后,当你下拉ADODataSet中的CommandText属性或ADOTable的TableName属性时,就可以选择到要打开的工作表了。注意,表名后面多了加一个$符号。 3.打开ADODataSet或ADOTable------------------------------------------------------------------------------我按以上步骤做了,但是仍然出错。错误是:“Microsoft Jet数据库引擎打不开文件,它已经被别的用户以独占方式打开,或没有查看数据的权限。”我把此错误信息在百度中查了一下,说是要改权限,我的文件夹属性当中没有“安全”选项,于是我就按照查到的方法通过“工具--文件夹选项--查看--简单文件共享前的勾去掉”,结果仍然不行,请问这是为什么,该怎么解决?请高手指点!!!
 
一句SQL就应该搞定了啊SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="D:/MyExcelFile.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...sheet1$
 
OpenDataSource函数在网上有具体的说明。
 
不好意思,我还想请教:就是我用了Adoquery、datasource、dbgrid,我把语句放到Adoquery其中了,但是connection string无论我设置不设置(请问需不需要设置?)运行后都没有显示,请问这是为什么?
 
多人接受答案了。
 
后退
顶部