Delphi将excel数据导入到数据库中源码_第1页
Delphi将excel数据导入到数据库中源码_第2页
Delphi将excel数据导入到数据库中源码_第3页
Delphi将excel数据导入到数据库中源码_第4页
Delphi将excel数据导入到数据库中源码_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Delphi 将 excel 数据导入到数据库中源码procedure Tfrmexceltodata.Button4Click(Sender: TObject);constBeginRow= 1; BeginCol= 2; var iRE:Integer; iRow,iCol :Integer; /列、行 MsExcel,MsExcelWorkBook,MsExcelWorkSheet:Variant;adoquery1:TADOQuery;sqlstr1,sqlstr2:string;begin Try OpenDialog1.FileName:=*.xls; if not OpenDia

2、log1.Execute then begin Exit; end; if ExtractFileExt(OpenDialog1.FileName) .xls then begin MessageBox(0, 请选择正确的 excel 文件,PChar(提示),MB_OK or MB_ICONWARNING); Exit; end; MsExcel:=CreateOleObject(Excel.Application); MsExcel.visible:=true; MsExcelWorkBook:=MsExcel.WorkBooks.Open(OpenDialog1.FileName); E

3、xcept Exit; end; /开始从 EXCEL 文件读取相关信息,并导入数据库中的“文件登记表”表 Try Application.ProcessMessages;/防止进程阻塞 iRow:=BeginRow; iCol:=BeginCol; adoquery1:=TADOQuery.Create(Self); adoquery1.Connection:=frm_main.con1; sqlstr1:=insert into 文件登记表(编号,来文日期,来文单位,来文原编号,文件自编号,文件标题,页数,来文份数,文件大类,文件小类,文件年度,文件状态,填卡完毕,打印完毕,是否清退);

4、sqlstr2:=values (:bh,:lwrq,:lwdw,:lwybh,:wjzbh,:nrzy,:ys,:lwfs,:wjdl,:wjxl,:wjnd,:wjzt,:sywb,:pswb,:sfqt) ; getdh1; getlwbh; /取得文件自编号 while trim(msExcel.WorkSheetssheet1.CellsiCol,iRow.value) do begin with adoquery1 do begin Close; SQL.Clear; SQL.Add(sqlstr1); SQL.Add(sqlstr2); Parameters.ParamByNam

5、e(bh).Value :=StrToInt(djbh)+iCol-1; /Parameters.ParamByName(lwrq1).Value :=dtp1.DateTime; Parameters.ParamByName(lwrq).Value :=Trim(msExcel.WorkSheets1.CellsiCol,iRow.value); Parameters.ParamByName(lwdw).Value :=Trim(msExcel.WorkSheets1.CellsiCol,iRow+2.value); Parameters.ParamByName(lwybh).Value :

6、=Trim(msExcel.WorkSheets1.CellsiCol,iRow+3.value); Parameters.ParamByName(wjzbh).Value :=Trim(msExcel.WorkSheets1.CellsiCol,iRow+1.value); /Parameters.ParamByName(wjzbh).Value :=lwbh+inttostr(icol-1);/Trim(msExcel.WorkSheets1.CellsiCol,iRow+1.value); Parameters.ParamByName(nrzy).Value :=Trim(msExcel

7、.WorkSheets1.CellsiCol,iRow+4.value); Parameters.ParamByName(ys).Value :=1; Parameters.ParamByName(lwfs).Value :=1; Parameters.ParamByName(wjdl).Value :=cbb6.text; Parameters.ParamByName(wjxl).Value :=cbb7.text; / Parameters.ParamByName(wjnd).Value :=FormatDateTime(yyyy,now(); Parameters.ParamByName

8、(wjnd).Value :=cbb1.Text; Parameters.ParamByName(sywb).Value :=0; Parameters.ParamByName(pswb).Value :=0; Parameters.ParamByName(wjzt).Value :=未送阅签; Parameters.ParamByName(sfqt).Value :=0; ExecSQL; end; iCol:=iCol+1; end; MsExcel.Quit; Except MessageBox(self.Handle,数据导入失败!,系统提示,0); MsExcel.Quit; Exi

9、t; end;/end try MessageBox(self.Handle,数据导入成功!,系统提示,0); frmexceltodata.Close; end;请问,用请问,用 Delphi 如何写程序将如何写程序将 Excel 或或 txt 导入导入 oracle?请问各位,用 Delphi 如何写程序将 Excel 或 txt 导入 oracle,不用导入工具,写代码,谢谢!procedure TForm1.button1Click(Sender: TObject);vari,row,column:integer;beginTryExcelApplication1.Connect;Ex

10、ceptMessageDlg(Excel may not be installed,mtError, mbOk, 0);Abort;End;ExcelApplication1.Visible0:=True;ExcelApplication1.Caption:=Excel Application;ExcelApplication1.Workbooks.Add(Null,0);ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks1);ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets1 as _

11、Worksheet);Table1.Open;row:=1;While Not(Table1.Eof) dobegincolumn:=1;for i:=1 to Table1.FieldCount dobeginExcelWorksheet1.Cells.Itemrow,column:=Table1.fieldsi-1.AsString;column:=column+1;end;Table1.Next;row:=row+1;end;end;我用这代码,导不进数据库。还有怎样导入指定路径的文件?谢谢我用这代码,导不进数据库。还有怎样导入指定路径的文件?谢谢昵称昵称: panda831102 时间

12、时间: 2010-09-07 09:50:14excel 導入導入 sql 的,導的,導 oracle 的自己轉換修改一下代碼試試:的自己轉換修改一下代碼試試:Delphi(Pascal) codeprocedure TRES_DCC_ECRN_F.cxButton1Click(Sender: TObject);var ExcelApp,WorkBook:Olevariant; ExcelSheetCount,i,k:Integer;begin inherited; if RzButtonEdit1.Text then begin if (ExtractFileExt(RzButtonEdit

13、1.Text).xls) then begin MessageDlg(請選擇要導入的請選擇要導入的 Excel 檔案檔案!,mtWarning,mbOK,0); RzButtonEdit1.Clear; end else begin try Application.ProcessMessages; ExcelApp:=CreateOleObject(Excel.Application); WorkBook:=ExcelApp.WorkBooks.Open(RzButtonEdit1.Text); ExcelApp.Visible:=False; ExcelSheetCount:=WorkBoo

14、k.WorkSheets.Count; for i:=1 to ExcelSheetCount do begin Screen.Cursor:=crSQLWait; WorkBook.WorkSheetsi.Activate; a:=ExcelApp.Cells4,2.Value; b:=ExcelApp.Cells8,2.Value; c:=ExcelApp.Cells14,2.Value; d:=ExcelApp.Cells21,2.Value; e:=ExcelApp.Cells22,2.Value; f:=ExcelApp.Cells23,2.Value; if (Copy(Trim(

15、a),1,3)ECR) and (b) and (Copy(Trim(a),1,3)DCR) and (b) then begin MessageDlg(檔案格式錯誤檔案格式錯誤!,mtWarning,mbOK,0); InsertErrorLOG; Screen.Cursor:=crDefault; Exit; end; with adoq_ecrn do begin Close; SQL.Text:=select * from RES_ECR_TYPE where ECRNO=+ a+; Open; if RecordCount=1 then begin MessageDlg(請檢查請檢查

16、:導入檔案時編號導入檔案時編號+ a+的記錄重復的記錄重復!,mtWarning,mbOK,0); InsertRepeatLOG; Screen.Cursor:=crDefault; Exit; end; end; with adoq_ecrn do begin Close; SQL.Clear; SQL.Add(insert into RES_ECR_TYPE(ECRNO,DESOFCHANGE,RELEASEDATE,RESPEOPLE,ISSUEDEPT,MODEL) values(:a,:b,:c,:d,:e,:f); Parameters.ParamByName(a).Value:

17、=a; Parameters.ParamByName(b).Value:=b; Parameters.ParamByName(c).Value:=Trim(Copy(c,1,19); Parameters.ParamByName(d).Value:=d; Parameters.ParamByName(e).Value:=e; Parameters.ParamByName(f).Value:=f; ExecSQL; end; InsertECRLOG; ProgressBar1.Min:=0; ProgressBar1.Max:=ExcelSheetCount; for k:=33 to Wor

18、kBook.WorkSheetsi.usedrange.rows.count do begin g:=ExcelApp.CellsK,1.Value; q:=ExcelApp.Cellsk,2.Value; w:=ExcelApp.Cellsk,3.Value; v:=ExcelApp.Cellsk,4.Value; r:=ExcelApp.Cellsk,5.Value; t:=ExcelApp.Cellsk,6.Value; y:=ExcelApp.Cellsk,7.Value; u:=ExcelApp.Cellsk,8.Value; o:=ExcelApp.Cellsk,9.Value;

19、if (q)and(w) then with adoq_item do begin Close; SQL.Clear; SQL.Add(insert into RES_ECR_ITEM(GROUPID,ECRNO,ITEMNO,ITEMDESPTION,FZRELATION,CHANGETYPE,BEFORECHANGE,AFTERCHANGE,PROPOSE,REMARK) values(:g,:p,:q,:w,:v,:r,:t,:y,:u,:o); Parameters.ParamByName(g).Value:=g; Parameters.ParamByName(p).Value:=a;

20、 Parameters.ParamByName(q).Value:=q; Parameters.ParamByName(w).Value:=w; Parameters.ParamByName(v).Value:=v; Parameters.ParamByName(r).Value:=r; Parameters.ParamByName(t).Value:=t; Parameters.ParamByName(y).Value:=y; Parameters.ParamByName(u).Value:=u; Parameters.ParamByName(o).Value:=o; ExecSQL; Pr

21、ogressBar1.Position:=ProgressBar1.Position+1; end; end; Screen.Cursor:=crDefault; Application.ProcessMessages; ProgressBar1.Position:=0; RefreshECRN; RefreshGroupItem; SendToEmail; Zt:=1; end; finally ExcelApp.ActiveWorkBook.Saved:=True; WorkBook.Close; ExcelApp.Quit; end; end; end else begin Messag

22、eDlg(請選擇要導入的請選擇要導入的 Excel 檔案檔案!,mtWarning,mbOK,0); Exit; end;end;DELPHI 中把中把 EXCEL 中的数据导入到中的数据导入到 SQL 中中一直都是将数据从一直都是将数据从 SQL 导入到导入到 EXCEL 文件文件,前两天因为有需求前两天因为有需求,试着将试着将 EXCEL 文件导入文件导入到到 SQL,才发现两者的原理其实是一样的才发现两者的原理其实是一样的,如下代码如下代码,并附注释并附注释:procedure Tfom1.ExcelToSQLMenuItemClick(Sender: TObject);varExcel

23、ID,Sheet: Variant;sFileName :String;i,ExcelRowCount,OkNum,FailNum:integer;begin/指定文件指定文件OkNum:=0; /导入成功的数据导入成功的数据FailNum:=0; /导入失败的数据导入失败的数据 /指定要导入的指定要导入的 EXCEL 文件文件 With hrSysDataModule.MyOpenDialog do begin DefaultExt:=Xls; Filter :=Excel 工作簿文件(工作簿文件(*.xls)|*.Xls; if Execute then sFileName := FileName else exit; end; Try ExcelID := CreateOleObject( Excel.Application ); ExcelID.Visible :=False; /若为若为 true,则将显示并打开将要导入的则将显示并打开将要导入的 excel 文文件件 except on E: Exception do begin ExcelID.Quit; ExcelID := Unassigned; Application.Restore; Application.BringToFront; MessageBox(Self.H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论