Delphi將excel數(shù)據(jù)導入到數(shù)據(jù)庫中源碼
《Delphi將excel數(shù)據(jù)導入到數(shù)據(jù)庫中源碼》由會員分享,可在線閱讀,更多相關(guān)《Delphi將excel數(shù)據(jù)導入到數(shù)據(jù)庫中源碼(11頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、文檔供參考,可復制、編制,期待您的好評與關(guān)注! 1 / 11Delphi 將 excel 數(shù)據(jù)導入到數(shù)據(jù)庫中源碼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.F
2、ileName:=*.xls; if not OpenDialog1.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
3、.Open(OpenDialog1.FileName); Except Exit; end;文檔供參考,可復制、編制,期待您的好評與關(guān)注! 2 / 11 /開始從 EXCEL 文件讀取相關(guān)信息,并導入數(shù)據(jù)庫中的“文件登記表”表 Try Application.ProcessMessages;/防止進程阻塞 iRow:=BeginRow; iCol:=BeginCol; adoquery1:=TADOQuery.Create(Self); adoquery1.Connection:=frm_main.con1; sqlstr1:=insert into 文件登記表(編號,來文日期,來文單位,來文
4、原編號,文件自編號,文件標題,頁數(shù),來文份數(shù),文件大類,文件小類,文件年度,文件狀態(tài),填卡完畢,打印完畢,是否清退); 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.Clea
5、r; SQL.Add(sqlstr1); SQL.Add(sqlstr2); Parameters.ParamByName(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.Ce
6、llsiCol,iRow+2.value);文檔供參考,可復制、編制,期待您的好評與關(guān)注! 3 / 11 Parameters.ParamByName(lwybh).Value :=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(msEx
7、cel.WorkSheets1.CellsiCol,iRow+1.value); Parameters.ParamByName(nrzy).Value :=Trim(msExcel.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
8、; / Parameters.ParamByName(wjnd).Value :=FormatDateTime(yyyy,now(); Parameters.ParamByName(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:=i
9、Col+1; end; MsExcel.Quit; Except MessageBox(self.Handle,數(shù)據(jù)導入失??!,系統(tǒng)提示,0); MsExcel.Quit; Exit; end;/end try MessageBox(self.Handle,數(shù)據(jù)導入成功!,系統(tǒng)提示,0); frmexceltodata.Close; 文檔供參考,可復制、編制,期待您的好評與關(guān)注! 4 / 11end;請問,用請問,用 Delphi 如何寫程序?qū)⑷绾螌懗绦驅(qū)?Excel 或或 txt 導入導入 oracle?請問各位,用 Delphi 如何寫程序?qū)?Excel 或 txt 導入 oracle,不
10、用導入工具,寫代碼,謝謝!procedure TForm1.button1Click(Sender: TObject);vari,row,column:integer;beginTryExcelApplication1.Connect;ExceptMessageDlg(Excel may not be installed,mtError, mbOk, 0);Abort;End;ExcelApplication1.Visible0:=True;ExcelApplication1.Caption:=Excel Application;ExcelApplication1.Workbooks.Add(
11、Null,0);ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks1);ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets1 as _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:=co
12、lumn+1;end;Table1.Next;row:=row+1;end;end;我用這代碼,導不進數(shù)據(jù)庫。還有怎樣導入指定路徑的文件?謝謝我用這代碼,導不進數(shù)據(jù)庫。還有怎樣導入指定路徑的文件?謝謝文檔供參考,可復制、編制,期待您的好評與關(guān)注! 5 / 11昵稱昵稱: panda831102 時間時間: 2010-09-07 09:50:14excel 導入導入 sql 的,導的,導 oracle 的自己轉(zhuǎn)換修改一下代碼試試:的自己轉(zhuǎn)換修改一下代碼試試:Delphi(Pascal) codeprocedure TRES_DCC_ECRN_F.cxButton1Click(Sender: TO
13、bject);var ExcelApp,WorkBook:Olevariant; ExcelSheetCount,i,k:Integer;begin inherited; if RzButtonEdit1.Text then begin if (ExtractFileExt(RzButtonEdit1.Text).xls) then begin MessageDlg(請選擇要導入的請選擇要導入的 Excel 檔案檔案!,mtWarning,mbOK,0); RzButtonEdit1.Clear; end else begin try Application.ProcessMessages;
14、ExcelApp:=CreateOleObject(Excel.Application); WorkBook:=ExcelApp.WorkBooks.Open(RzButtonEdit1.Text); ExcelApp.Visible:=False; ExcelSheetCount:=WorkBook.WorkSheets.Count; for i:=1 to ExcelSheetCount do begin Screen.Cursor:=crSQLWait; WorkBook.WorkSheetsi.Activate; a:=ExcelApp.Cells4,2.Value; b:=Excel
15、App.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(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
16、; Exit; end; with adoq_ecrn do文檔供參考,可復制、編制,期待您的好評與關(guān)注! 6 / 11 begin Close; SQL.Text:=select * from RES_ECR_TYPE where ECRNO=+ a+; Open; if RecordCount=1 then begin MessageDlg(請檢查請檢查:導入檔案時編號導入檔案時編號+ a+的記錄重復的記錄重復!,mtWarning,mbOK,0); InsertRepeatLOG; Screen.Cursor:=crDefault; Exit; end; end; with adoq_e
17、crn 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:=a; Parameters.ParamByName(b).Value:=b; Parameters.ParamByName(c).Value:=Trim(Copy(c,1,19); Parameters.ParamByName(d).Va
18、lue:=d; Parameters.ParamByName(e).Value:=e; Parameters.ParamByName(f).Value:=f; ExecSQL; end; InsertECRLOG; ProgressBar1.Min:=0; ProgressBar1.Max:=ExcelSheetCount; for k:=33 to WorkBook.WorkSheetsi.usedrange.rows.count do begin g:=ExcelApp.CellsK,1.Value; q:=ExcelApp.Cellsk,2.Value; w:=ExcelApp.Cell
19、sk,3.Value; v:=ExcelApp.Cellsk,4.Value; r:=ExcelApp.Cellsk,5.Value; t:=ExcelApp.Cellsk,6.Value; y:=ExcelApp.Cellsk,7.Value;文檔供參考,可復制、編制,期待您的好評與關(guān)注! 7 / 11 u:=ExcelApp.Cellsk,8.Value; o:=ExcelApp.Cellsk,9.Value; if (q)and(w) then with adoq_item do begin Close; SQL.Clear; SQL.Add(insert into RES_ECR_IT
20、EM(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; Parameters.ParamByName(q).Value:=q; Parameters.ParamByName(w).Value:=w; Parameters.ParamB
21、yName(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; ProgressBar1.Position:=ProgressBar1.Position+1; end; end; Screen.Cursor:=crDefault; Applicat
22、ion.ProcessMessages; ProgressBar1.Position:=0; RefreshECRN; RefreshGroupItem; SendToEmail; Zt:=1; end; finally ExcelApp.ActiveWorkBook.Saved:=True; WorkBook.Close; ExcelApp.Quit; end; end; end else begin MessageDlg(請選擇要導入的請選擇要導入的 Excel 檔案檔案!,mtWarning,mbOK,0); Exit; end;文檔供參考,可復制、編制,期待您的好評與關(guān)注! 8 / 1
23、1end;DELPHI 中把中把 EXCEL 中的數(shù)據(jù)導入到中的數(shù)據(jù)導入到 SQL 中中一直都是將數(shù)據(jù)從一直都是將數(shù)據(jù)從 SQL 導入到導入到 EXCEL 文件文件,前兩天因為有需求前兩天因為有需求,試著將試著將EXCEL 文件導入到文件導入到 SQL,才發(fā)現(xiàn)兩者的原理其實是一樣的才發(fā)現(xiàn)兩者的原理其實是一樣的,如下代碼如下代碼,并附注釋并附注釋:procedure Tfom1.ExcelToSQLMenuItemClick(Sender: TObject);varExcelID,Sheet: Variant;sFileName :String;i,ExcelRowCount,OkNum,Fai
24、lNum:integer;begin/指定文件指定文件OkNum:=0; /導入成功的數(shù)據(jù)導入成功的數(shù)據(jù)FailNum:=0; /導入失敗的數(shù)據(jù)導入失敗的數(shù)據(jù) /指定要導入的指定要導入的 EXCEL 文件文件 With hrSysDataModule.MyOpenDialog do begin DefaultExt:=Xls; Filter :=Excel 工作簿文件(工作簿文件(*.xls)|*.Xls; if Execute then sFileName := FileName else exit; end; Try ExcelID := CreateOleObject( Excel.Ap
25、plication ); ExcelID.Visible :=False; /若為若為 true,則將顯示并打開將要導入則將顯示并打開將要導入的的 excel 文件文件 except on E: Exception do begin ExcelID.Quit; ExcelID := Unassigned; Application.Restore; Application.BringToFront; MessageBox(Self.Handle,Pchar(系統(tǒng)提示您系統(tǒng)提示您,創(chuàng)建創(chuàng)建 Excel 對象對象出錯出錯,原因為原因為:+ e.Message), Pchar(AppliCation.
26、Title),MB_OK+MB_ICONERROR); Exit; end; end;文檔供參考,可復制、編制,期待您的好評與關(guān)注! 9 / 11 try Try ExcelID.WorkBooks.Open(sFileName); Sheet:= ExcelID.WorkBooks1.WorkSheets1;/ ExcelColCount := ExcelID.WorkSheets1.UsedRange.Columns.Count; ExcelRowCount := ExcelID.WorkSheets1.UsedRange.Rows.Count; /獲得本數(shù)據(jù)獲得本數(shù)據(jù)表有多少行數(shù)據(jù)表有多
27、少行數(shù)據(jù) ADOConnection1.BeginTrans; /開始事務開始事務 for i :=2 to ExcelRowCount do /將要從哪行開始讀將要從哪行開始讀,本程序為本程序為從第二行開始讀從第二行開始讀,第一行為標題第一行為標題 begin if length(trim(Sheet.Cellsi,1 .Value) =8 then / 即使上句不報錯即使上句不報錯,也得查也得查看是不是類似為看是不是類似為 0:0:0 這樣的格式這樣的格式,也是錯的也是錯的,此處檢查長度此處檢查長度 Result := True else Result := False; if Result then /若以上結(jié)果為正確若以上結(jié)果為正確,本程序還要檢查是不是大于本程序還要檢查是不是大于1950 年年 if year 1950 then Result := True else Result := False; except Result := False; end;end;
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 市教育局冬季運動會安全工作預案
- 2024年秋季《思想道德與法治》大作業(yè)及答案3套試卷
- 2024年教師年度考核表個人工作總結(jié)(可編輯)
- 2024年xx村兩委涉案資金退還保證書
- 2024年憲法宣傳周活動總結(jié)+在機關(guān)“弘揚憲法精神推動發(fā)改工作高質(zhì)量發(fā)展”專題宣講報告會上的講話
- 2024年XX村合作社年報總結(jié)
- 2024-2025年秋季第一學期初中歷史上冊教研組工作總結(jié)
- 2024年小學高級教師年終工作總結(jié)匯報
- 2024-2025年秋季第一學期初中物理上冊教研組工作總結(jié)
- 2024年xx鎮(zhèn)交通年度總結(jié)
- 2024-2025年秋季第一學期小學語文教師工作總結(jié)
- 2024年XX村陳規(guī)陋習整治報告
- 2025年學校元旦迎新盛典活動策劃方案
- 2024年學校周邊安全隱患自查報告
- 2024年XX鎮(zhèn)農(nóng)村規(guī)劃管控述職報告