问题现象:
1个xls文件,是程序从表格导出的,具体什么东西里面导出未知
用ado链接这个xls文件,报“外部表不是预期的格式” 的错误,
但是如果用Excel.exe打开这个xls文件,不做任何操作,再用ado链接,就没有问题另外,我试过用Excel程序打开,然后做了修改(有极端修改,全部删除,然后手动添加一行),再保存,还是不行但是很奇怪,只要这个xls文件打开着就没有问题。有人碰到过这个问题吗?
希望提供线索,
1个xls文件,是程序从表格导出的,具体什么东西里面导出未知
用ado链接这个xls文件,报“外部表不是预期的格式” 的错误,
但是如果用Excel.exe打开这个xls文件,不做任何操作,再用ado链接,就没有问题另外,我试过用Excel程序打开,然后做了修改(有极端修改,全部删除,然后手动添加一行),再保存,还是不行但是很奇怪,只要这个xls文件打开着就没有问题。有人碰到过这个问题吗?
希望提供线索,
象为一个关系数据库,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
如果实在不行,就在读入前程序打开excel,读入后在关闭excel