|
|
#2
Wolf_0072006-03-26 16:19
EXCEL怎样导入导出数据库
//导出数据到excel procedure CopyDbDataToExcel(Target: TDbgrid); var iCount, jCount: Integer; XLApp: Variant; Sheet: Variant; begin Screen.Cursor := crHourGlass; if not VarIsEmpty(XLApp) then begin XLApp.DisplayAlerts := False; XLApp.Quit; VarClear(XLApp); end; //通过ole创建Excel对象 try XLApp := CreateOleObject('Excel.Application'); except Screen.Cursor := crDefault; Exit; end; XLApp.WorkBooks.Add[XLWBatWorksheet]; XLApp.WorkBooks[1].WorkSheets[1].Name := '对帐工作薄'; Sheet := XLApp.Workbooks[1].WorkSheets['对帐工作薄']; if not Target.DataSource.DataSet.Active then begin Screen.Cursor := crDefault; Exit; end; Target.DataSource.DataSet.first; for iCount := 0 to Target.Columns.Count - 1 do begin Sheet.cells[1, iCount + 1] := Target.Columns.Items[iCount].Title.Caption; end; jCount := 1; while not Target.DataSource.DataSet.Eof do begin for iCount := 0 to Target.Columns.Count - 1 do begin Sheet.cells[jCount + 1, iCount + 1] := Target.Columns.Items[iCount].Field.AsString; end; Inc(jCount); Target.DataSource.DataSet.Next; end; XlApp.Visible := True; Screen.Cursor := crDefault; end; procedure TfrmMain.Button1Click(Sender: TObject); var i,j:integer; opendialog1:Topendialog; s0,s1,s2:string; begin try opendialog1:=Topendialog.Create(self); opendialog1.InitialDir:=ExtractFileDir(paramstr(0));//文件的打存放初始路径 if opendialog1.Execute then begin Try ExcelApplication1.Connect;//EXCEL应用程序 Except Messagebox(0,'Excel 可能没有安装!!','提示!',mb_Ok); exit; End; ExcelApplication1.Visible[0]:=false; ExcelApplication1.Caption:='Excel Application'; try excelapplication1.Workbooks.Open(opendialog1.FileName, null,null,null,null,null,null,null,null,null,null,null,null,0);//打开指定的EXCEL 文件 except begin ExcelApplication1.Disconnect;//出现异常情况时关闭 ExcelApplication1.Quit;showmessage('请选择EXCEL电子表格!'); exit; end; end; ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]); //ExcelWorkbook1与Eexcelapplication1建立连接 ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet); //Excelworksheet1与Excelworkbook1建立连接 //开始从EXCEL中取数,取完数后关闭EXCEL for i:=1 to 10000 do//最大取值10000 begin if trim(excelworksheet1.cells.item[i+1,1])<>'' then begin s0:= excelworksheet1.cells.item[i+1,1]; s1:= excelworksheet1.cells.item[i+1,2]; s2:= excelworksheet1.cells.item[i+1,3]; with qry do begin close; sql.Clear; sql.add('insert into xsz(PZNO,PNO,TCount,inday)values('+ ''''+s0+''''+','+''''+s1+''''+','+''''+s2+''''+','+''''+datetostr(date)+''')'); ExecSQL; end; end end; ExcelApplication1.Disconnect; ExcelApplication1.Quit; end; with qryxsz do begin sql.Clear; sql.Add('select * from xsz order by PZNO,PNO,TCount,inday'); open; end; for j:=0 to grdxsz.Columns.Count do grdxsz.Columns[j].Width:=64;//缩小宽度 messagebox(0,'文件已经导入数据库!','完成!',mb_ok); except ExcelApplication1.Disconnect; ExcelApplication1.Quit; exit; // messagebox(0,'文件已经导入数据库失败!','完成!',mb_iconError+mb_ok); end; end; try if qryxsz.RecordCount<1 then exit; CopyDbDataToExcel(Grdxsz); except // messagebox(0,'请安装EXCEL软件,再使用本功能。','提示',mb_ok); exit; end; 这是别人的代码,我保留了,给你看看 在一个对帐系统中用到的将两张excel表中的数据到如数据库进行相应处理后再导出excel. |
求教怎么把Excel文件到导入到Delphi中,并且按所要查找的某个文件导入的