用delphi将excel数据导入到access中
主要工作如标题所写,但是有一个需要补充的问题.excel的数据和一个证券交易相关,包含了收盘价等数据.而要求access表中要有一个昨日收盘的列.在不修改excel的前提...
主要工作如标题所写,但是有一个需要补充的问题.excel的数据和一个证券交易相关,包含了收盘价等数据.而要求access表中要有一个昨日收盘的列.在不修改excel的前提下,有没有办法通过delphi来达到此要求?
展开
2013-08-15
展开全部
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;
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;
2013-08-15
展开全部
+''''+ xlspath+'''' 改为: +xlspath+不需要用引号引用excel文件路径。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |