首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi中怎么将EXCEL里的资料填入数据库中,

2012-03-15 
delphi中如何将EXCEL里的资料填入数据库中,急请高手们帮忙解决一个问题,在下将十分感激,问题如下:delphi中

delphi中如何将EXCEL里的资料填入数据库中,急
请高手们帮忙解决一个问题,在下将十分感激,问题如下:

delphi中打开一个EXCEL, 然后在EXCEL输入值,输一次INSERT 数据库表中一笔记录,在EXCEL中输入多少什值,就INSERT数据表中多少笔记录,该如何实现呢? 有没有参考的例子? 谢谢!

[解决办法]
可以用ado去连接excel,就像操作数据库一样,在afterinsert事件中,去插入到另一个数据库
[解决办法]
呵呵!
帮顶下!
[解决办法]
代碼說話:

Delphi(Pascal) code
procedure TRES_DCC_ECRN_F.cxButton1Click(Sender: TObject);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;        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.WorkSheets[i].Activate;          a:=ExcelApp.Cells[4,2].Value;          b:=ExcelApp.Cells[8,2].Value;          c:=ExcelApp.Cells[14,2].Value;          d:=ExcelApp.Cells[21,2].Value;          e:=ExcelApp.Cells[22,2].Value;          f:=ExcelApp.Cells[23,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;            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('請檢查:導入檔案時編號"'+ 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:=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 WorkBook.WorkSheets[i].usedrange.rows.count  do           begin             g:=ExcelApp.Cells[K,1].Value;             q:=ExcelApp.Cells[k,2].Value;             w:=ExcelApp.Cells[k,3].Value;             v:=ExcelApp.Cells[k,4].Value;             r:=ExcelApp.Cells[k,5].Value;             t:=ExcelApp.Cells[k,6].Value;             y:=ExcelApp.Cells[k,7].Value;             u:=ExcelApp.Cells[k,8].Value;             o:=ExcelApp.Cells[k,9].Value;             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;               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;               ProgressBar1.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    MessageDlg('請選擇要導入的Excel檔案!',mtWarning,[mbOK],0);    Exit;  end;end; 

热点排行