求EXCEL导入MSSQL数据库代码,可以用的,效率比较高的!
时间:2011-10-25
来源:互联网
Delphi(Pascal) code
var ASql, APath: String; ExcelApp: Variant; AInt: Integer; begin if messagebox(Self.Handle,'你确定要导入直送的数据吗?','系统提示',mb_yesno+mb_iconquestion)=idyes then begin If OpenDialog1.Execute Then APath := OpenDialog1.FileName Else Exit; If not FileExists(APath) Then Begin messagebox(self.Handle,'你选择的文件不存,请核对','提示信息',mb_iconinformation); Exit; End; Try Application.ProcessMessages; ExcelApp := CreateOleObject('Excel.Application'); ExcelApp.Workbooks.Open(APath); ExcelApp.WorkSheets[1].Activate; ASql := 'select * from hy_zs where 1=2'; ADOQuery1.Close; ADOQuery1.SQL.Text := ASql; ADOQuery1.Open; For AInt := 2 To ExcelApp.ActiveSheet.UsedRange.rows.count Do //AInt 起始行数,重哪行开始导入,Aint初始值就是几 Begin ADOQuery1.Append; ADOQuery1.FieldByName('Invoice').AsString := ExcelApp.Cells[AInt, 1].Value; //Aint是第几行,后面的数字是第几列, ADOQuery1.FieldByName('Zsdate').AsDateTime := ExcelApp.Cells[AInt, 2].Value; ADOQuery1.Post; End; Finally ExcelApp.WorkBooks.Close; ExcelApp.quit; messagebox(self.Handle,'直送数据导入成功,请核对','提示信息',MB_ICONINFORMATION); End; end;
作者: Calm_life 发布时间: 2011-10-25
SELECT * INTO 临时表 FROM [Sheet1$] IN "'+ EXCEL的全路径文件名 + '" "EXCEL 8.0;"
Sheet1是EXCEL的表名
然后再把临时表的插入到正式表中 INSERT INTO SELECT语句
语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1
要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。
然后 DROP TABLE 表名
删除临时表
ACCESS大概就是这样操作的了
作者: ADSLAN 发布时间: 2011-10-25
作者: D_Parent 发布时间: 2011-10-25
提供一个EXCEL导入ACCESS的给你参考下
SELECT * INTO 临时表 FROM [Sheet1$] IN "'+ EXCEL的全路径文件名 + '" "EXCEL 8.0;"
Sheet1是EXCEL的表名
然后再把临时表的插入到正式表中 INSERT INTO SELECT语句
语句形式为:Insert into Table2(field1,field2,...……
Delphi(Pascal) code
if OpenDialog1.Execute then begin ADOQuery2.Connection:=ADOConnection1; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Append('insert into User_qx select * from OPENROWSET(');//将这个‘表’字改为你的数据库中的表名 ADOQuery2.SQL.Append(quotedstr('MICROSOFT.JET.OLEDB.4.0')); ADOQuery2.SQL.Append(','+quotedstr('Excel 8.0;HDR=YES;DATABASE='+OpenDialog1.FileName)+' ,sheet1$)'); ADOQuery2.ExecSQL; showmessage('ok'); end;
这种方法不行,本机可以,远程客户端就不行了...求其它方法
作者: Calm_life 发布时间: 2011-10-25
作者: Calm_life 发布时间: 2011-10-25
作者: wgywell 发布时间: 2011-10-25
作者: Calm_life 发布时间: 2011-10-25
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28