在Delphi中如何用ado直接调用excel(50分)

  • 主题发起人 主题发起人 天爱
  • 开始时间 开始时间

天爱

Unregistered / Unconfirmed
GUEST, unregistred user!
  我在书上看到这样一种方法:
构造ConnectionString时,OLE DB的提供者要选择Microsoft Jet 4.0 OLE DB Provider作为ADO的驱动程序。这本来是用于连接Access数据库的驱动程序,但也可打开Excel文件。连接的数据库名称当然就是你要打开的Excel文件,注意扩展名是*.xls,而不是*.mdb。设置扩展属性Extended Properties为“Excel 8.0”,。Extended Properties的属性值在“所有”参数页中输入。 将ADODataSet或ADOTable连接到刚才的ADOConnection。如果不用ADOConnection,也可以参照上面的方法直接设置ADODataSet或ADOTable的ConnectionString属性。对于ADOTable,则将TableDirect属性设置为True。因为,访问Excel文件是直接的数据文件访问,不是通过SQL语句来操作游标访问的。如果不设置直接访问,则系统会报告SQL语句格式错误等信息。
  然后,当你下拉ADODataSet中的CommandText属性或ADOTable的TableName属性时,就可以选择到要打开的工作表了。注意,表名后面多了加一个$符号。
以上是我在别处看到的方法,我这样做了以后,当把ADOTable的active属性设为true时,系统提示"无效的参数量",为什么?
 
你参考这点代码,
是使用ado打开excel的。
var no,i,J:integer;
tt:TStrings;
SheetName:string; //
// filedname:array[1..50] of string;
begin
with datam.DataM1 do //首先查找数据库中是否已经存在。如果存在,则修改已经存在的数据。
begin
ADOConnection2.Close;
ADOConnection2.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=Excel Files;'+
'DBQ='+FileName+';DriverId=790;MaxBufferSize=2048;PageTimeout=5;"';
ADOConnection2.Open;
tt:=TStringList.Create;
ADOConnection2.GetTableNames(tt,true);
SheetName:=tt.Strings[0];
// tt.Free;
ExcelQuery1.Close;
ExcelQuery1.SQL.Clear;
ExcelQuery1.SQL.Add('select * from ['+SheetName+'] '); //全部数据
ExcelQuery1.Open; //打开EXCEL文件.
if ExcelQuery1.IsEmpty then Exit; //excel中无数据,无法载入.
 
好像不支持新版excel文件了
 
后退
顶部