发布网友 发布时间:2022-04-23 00:39
共1个回答
热心网友 时间:2022-05-17 09:03
var
sTableName
:
String;begin
//1.用adoconnection组件链接excel,其中E_file.text中的内容是通过opendialog1.filename获得的excel文件路径
ADOcn.Close;
ADOcn.ConnectionString
:=
'Provider=Microsoft.Jet.OLEDB.4.0;Data
Source='
+
Trim(E_File.Text)+';Extended
Properties=Excel
8.0;Persist
Security
Info=False';
ADOcn.Open;
ADOCn.Connected
:=
true;
//2.adocn要和adoquery1要先链接好,然后将excel数据读出来并存储在数据集中(adoquery1),
sTableName
:=
'Sheet1';//excel工作表的名称
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('SELECT
*
FROM
['+sTableName
+'$]');
adoquery1.open;
adoquery1.first;
while
not
adoquery1.eof
do
begin
//3.向目标数据库中插入数据(用adoquery2来实现插入操作)
//adoquery2要保证通过adoconnection组件和access数据做好链接adoquery2.Connection属性要设置
成和access链接好的adoconnetion组件。
ADOCn.BeginTrans;//开始事务
try
adoquery2.close;
adoquery2.sql.clear;
//aaa为access中的表名,a,b,c,d,e,f,g,h,i为access表的字段名
adoquery2.sql.add('INSERT
INTO
aaa
(a,b,c,d,e,f,g,h,i)
VALUES
('''+adoquery1.FieldByName('a1').asstring+''','''+adoquery1.FieldByName('a2').asstring+''','''+adoquery1.FieldByName('a3').asstring+''','''+昨日收盘列需要插入的数据内容写在这里+''')');
//上面的sql语句中出现的'''++'''表示插入的是字符串类型,如果是数值类型就写成'++'
adoquery2.ExecSQL;
ADOCn.CommitTrans;//提交事务
except
ADOCn.RollbackTrans;//回滚事务
end;
adoquery1.next;
end;end;