大家好,我使用ADO连接EXCEL表,Extended Properties=excel 8.0,单位计算机用的是WIN2000 FAMILY SERVER,连接已打开,就跳入内存,可在家里用的是WIN98,就没有这种现象,我测试了一下EXCEL的版本就是8.0,虽然我用的是OFFICE97的迷你版,家里用的是OFFICE97,不过我想好像于你用的EXCEL没有什么关系,驱动DELPHI应该自带。不知道什么原因,请高手解答
另外我也这样试过,用来的EXCEL文件使用EXCEL2000做的,但是不是在家里,也不是在单位的计算机上作的,别人给的,不过我把它的内容复制过来,连接复制后的文件,就不会跳到内存。谢谢回答
另外我也这样试过,用来的EXCEL文件使用EXCEL2000做的,但是不是在家里,也不是在单位的计算机上作的,别人给的,不过我把它的内容复制过来,连接复制后的文件,就不会跳到内存。谢谢回答
var
RegODBC:TRegistry;
RegDriver:TRegistry;
bData:array [0..0] of byte;
DataPath,DataDriver:String;
begin
//1、读取ODBC信息
DataPath:=ExtractFilePath(ParamStr(0));
RegDriver:=TRegistry.Create;
try
RegDriver.RootKey:=HKEY_LOCAL_MACHINE;
if RegDriver.KeyExists('Software\ODBC\ODBCINST.INI\Microsoft Excel Driver (*.xls)') then
begin
RegDriver.OpenKey('Software\ODBC\ODBCINST.INI\Driver do Microsoft Excel(*.xls)',True);
DataDriver:=RegDriver.ReadString('Driver');
end;
RegDriver.CloseKey;
RegDriver.Free;
Inherited;
except
ShowMessage(rsNotExcelProgram);
end;
//2、写ODBC
RegODBC:=TRegistry.Create;
With RegODBC do
begin
try
RootKey:=HKEY_LOCAL_MACHINE;
if OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',True) then
WriteString(ODBCName,'Microsoft Excel Driver (*.xls)')
else
begin
ShowMessage('增加ODBC数据源失败');
Exit;
end;
CloseKey; //配置ODBC 写入DSN配置信息
if OpenKey('SoftWare\ODBC\ODBC.INI\'+ODBCName,True) then
begin
WriteString( 'DBQ', Edit1.Text);//数据库目录定为程序运行目录下的DATABASE目录
WriteString( 'Description',rsODBCDesc );//数据源描述
WriteString( 'Driver', DataDriver );//驱动程序DLL文件由注册表取得已经安装的access数据库驱动路径
WriteInteger( 'DriverId', 790);//驱动程序标识
WriteString( 'FIL', 'excel 8.0;' );//Filter依据
WriteInteger( 'SafeTransaction', 0 );//支持的事务操作数目
WriteString( 'UID', '' );//用户名称
bData[0] := 0;
WriteBinaryData( 'Exclusive', bData, 1 );//非独占方式
WriteBinaryData( 'ReadOnly', bData, 1 );
end
else
begin
ShowMessage('增加ODBC数据源失败');
Exit;
end;
CloseKey;
//写入DSN数据库引擎配置信息
if OpenKey('SoftWare\ODBC\ODBC.INI\'+ODBCName+'\Engines\Excel',True) then
begin
WriteString( 'FirstRowHasNames', '01' );
WriteString( 'ImplicitCommitSync', '' );
WriteInteger( 'MaxScanRows',08);//缓冲区大小
WriteInteger( 'Threads', 3 );//支持的线程数目
WriteString( 'UserCommitSync', 'Yes' );
end
else
begin
ShowMessage('增加ODBC数据源失败');
Exit;
end;
finally
CloseKey;
ShowMessage('ODBC 添加成功');
Free;
end;
end;
end;
http://expert.csdn.net/Expert/topic/2870/2870197.xml?temp=.3623621
也诚心的希望你能帮我解答这个问题
谢谢