delphi导出数据至Excel的几种方法及比较

合集下载

delphidbgrid导出Excel表

delphidbgrid导出Excel表

delphi dbgrid 导出Excel表///////// 利用剪贴板,速度很快!适合装有Excel的机器///////////////////// USES Clipbrd,ComObj;procedure TForm1.Button1Click(Sender: TObject);varstr:string;i:Integer;excelapp,sheet:Variant;begin// lbl2.Caption:=DateTimeToStr(Now);str:='';dbgrd1.DataSource.DataSet.DisableControls;for i:=0 to dbgrd1.DataSource.DataSet.FieldCount-1 dostr:=str+dbgrd1.DataSource.DataSet.fields[i].DisplayLabel+char(9);str:=str+#13;dbgrd1.DataSource.DataSet.First;while not(dbgrd1.DataSource.DataSet.eof) do beginfor i:=0 to dbgrd1.DataSource.DataSet.FieldCount-1 dostr:=str+dbgrd1.DataSource.DataSet.Fields[i].AsString+char(9);str:=str+#13;dbgrd1.DataSource.DataSet.next;lbl1.Caption:=IntToStr(dbgrd1.DataSource.DataSet.RecNo);Application.ProcessMessages;end;//end whiledbgrd1.DataSource.DataSet.EnableControls;clipboard.Clear;Clipboard.Open;Clipboard.AsText:=str;Clipboard.Close;excelapp:=createoleobject('excel.application');excelapp.workbooks.add(1); // excelapp.workbooks.add(-4167);sheet:=excelapp.workbooks[1].worksheets[1];:='sheet1';sheet.paste;Clipboard.Clear;// :='宋体';// sheet.columns.font.size:=9;// sheet.Columns.AutoFit;excelapp.visible:=true;// lbl3.Caption:=DateTimeToStr(Now);end;/////////////////////////////////////////////////////////利用TStringList,速度很快!适合没有装Excel的机器////////////////////////procedure TForm1.Button1Click(Sender: TObject);vars:TStringList;str:string;i:Integer;begin// lbl1.Caption:=DateTimeToStr(Now);str:='';dbgrd1.DataSource.DataSet.DisableControls;for i:=0 to dbgrd1.DataSource.DataSet.FieldCount-1 dostr:=str+dbgrd1.DataSource.DataSet.fields[i].DisplayLabel+char(9);str:=str+#13;dbgrd1.DataSource.DataSet.First;while not(dbgrd1.DataSource.DataSet.eof) do beginfor i:=0 to dbgrd1.DataSource.DataSet.FieldCount-1 dostr:=str+dbgrd1.DataSource.DataSet.Fields[i].AsString+char(9);str:=str+#13;dbgrd1.DataSource.DataSet.next;// lbl3.Caption:=IntToStr(dbgrd1.DataSource.DataSet.RecNo);// Application.ProcessMessages;end;//end whiledbgrd1.DataSource.DataSet.EnableControls;s:=TStringList.Create;s.Add(str);s.SaveToFile('c:\temp.xls');//保存到c:\temp.xlss.Free;// lbl2.Caption:=DateTimeToStr(Now);end;////////////////////////////////////////////////***********************************************************(Delphi)Excel的快速导入***********************************************************(Delphi)Excel的快速导入//怎样可以提高EXCEL的导出速度?uses ADODB,excel97,adoint;function TForm1.ExportToExcel: Boolean;varxlApp,xlBook,xlSheet,xlQuery: Variant;adoConnection,adoRecordset: Variant;beginadoConnection := CreateOleObject('ADODB.Connection');adoRecordset := CreateOleObject('ADODB.Recordset');adoConnection.Open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Tree.mdb;Persist Security Info=False');adoRecordset.CursorLocation := adUseClient;adoRecordset.Open('SELECT * FROM tree',adoConnection,1,3);tryxlApp := CreateOleObject('Excel.Application');xlBook := xlApp.Workbooks.Add;xlSheet := xlBook.Worksheets['sheet1'];//设置这一列为文本列,让"00123" 正确显示,而不是自动转换为"123"xlSheet.Columns['C:C'].NumberFormatLocal := '@';xlApp.Visible := True;//把查询结果导入EXCEL数据xlQuery := xlSheet.QueryTables.Add(adoRecordset,xlSheet.Range['A1']); //关键是这一句xlQuery.FieldNames := True;xlQuery.RowNumbers := False;xlQuery.FillAdjacentFormulas := False;xlQuery.PreserveFormatting := True;xlQuery.RefreshOnFileOpen := False;xlQuery.BackgroundQuery := True;//xlQuery.RefreshStyle := xlInsertDeleteCells;xlQuery.SavePassword := True;xlQuery.SaveData := True;xlQuery.AdjustColumnWidth := True;xlQuery.RefreshPeriod := 0;xlQuery.PreserveColumnInfo := True;xlQuery.FieldNames := True;xlQuery.Refresh;xlBook.SaveAs('d:\fromD.xls',xlNormal,'','',False,False);finallyif not VarIsEmpty(XLApp) then beginXLApp.displayAlerts:=false;XLApp.ScreenUpdating:=true;XLApp.quit;end;end;end;///////////////////////////////////////////////////procedure saveToExcel();varEclapp,workbook:variant;i,n:integer;beginif not adoquery1.Active then exit;if adoquery1.RecordCount<=0 then exit;if application.MessageBox('确认导出excel表吗?','提示',mb_okcancel+mb_iconinformation)=idcancel then exit;Eclapp := createoleobject('Excel.Application');Eclapp.workbooks.add;for i:=0 to dbgrid2.FieldCount-1 dobeginEclapp.cells[1,i+1]:=dbgrid2.Columns[i].Title.Caption;end;Eclapp.cells[1,5]:='签字';adoquery1.First;n:=2;while not adoquery1.Eof doeclapp.cells[n,1] := adoquery1.Fields[0].AsString;eclapp.cells[n,2] := adoquery1.Fields[1].AsString;eclapp.cells[n,3] := adoquery1.Fields[2].AsString;eclapp.cells[n,4] := adoquery1.Fields[4].AsString;eclapp.cells[n,6] :=' ';inc(n);adoquery1.Next;end;eclapp.cells[n,1] := '满足条件记录的总数为:'+inttostr(adoquery1.RecordCount)+'条';application.MessageBox('数据导出完成!','提示',mb_ok+mb_iconinformation);eclapp.visible := true;end;方法二procedure CopyDbDataToExcel(Args: array of const);variCount, jCount: Integer;XLApp: Variant;Sheet,range: Variant;I: Integer;beginScreen.Cursor := crHourGlass;if not VarIsEmpty(XLApp) thenbeginXLApp.DisplayAlerts := False;XLApp.Quit;VarClear(XLApp);end;tryXLApp:=CreateOleObject(Excel.Application);exceptScreen.Cursor := crDefault;Exit;end;XLApp.WorkBooks.Add;XLApp.SheetsInNewWorkbook := High(Args) + 1;for I := Low(Args) to High(Args) doXLApp.WorkBooks[1].WorkSheets[I+1].Name := TDBGrid(Args[I].VObject).Name;Sheet := XLApp.Workbooks[1].WorkSheets[TDBGrid(Args[I].VObject).Name];if not TDBGrid(Args[I].VObject).DataSource.DataSet.Active thenbeginScreen.Cursor := crDefault;Exit;end;TDBGrid(Args[I].VObject).DataSource.DataSet.first;for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 dorange:=sheet.range[sheet.cells[1,1],sheet.cells[1,iCount + 1]];range.select;range.merge;sheet.cells[1,1]:=[+fqueryhuman.dbedit2.text+]+个人报销记录(普通报销、特殊报销)查询;jCount :=2;for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 doSheet.Cells[2, iCount + 1]:=TDBGrid(Args[I].VObject).Columns.Items[iCount].Title.Caption; while not TDBGrid(Args[I].VObject).DataSource.DataSet.Eof dobeginfor iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 doSheet.Cells[jCount + 1, iCount + 1] :=TDBGrid(Args[I].VObject).Columns.Items[iCount].Field.AsString;Inc(jCount);TDBGrid(Args[I].VObject).DataSource.DataSet.Next;end;XlApp.Visible := True;end;Screen.Cursor := crDefault;end;方法三delphi导入/导出excel2008年03月02日星期日16:39从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句:/*===================================================================*/--如果接受数据导入的表已经存在insert into 表select * fromOPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)--如果导入数据并生成表select * into 表fromOPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)/*===================================================================*/--如果从SQL数据库中,导出数据到Excel,如果Excel文件已经存在,而且已经按照要接收的数据创建好表头,就可以简单的用:insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)select * from 表--如果Excel文件不存在,也可以用BCP来导成类Excel的文件,注意大小写:--导出表的情况EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名out "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'--导出查询的情况EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'/*--说明:c:\test.xls 为导入/导出的Excel文件名.sheet1$ 为Excel文件的工作表名,一般要加上$才能正常使用.--*/--下面是导出真正Excel文件的方法:if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[p_exporttb]GO/*--数据导出EXCEL导出表中的数据到Excel,包含字段名,文件为真正的Excel文件,如果文件不存在,将自动创建文件,如果表不存在,将自动创建表基于通用性考虑,仅支持导出标准数据类型--邹建2003.10(引用请保留此信息)--*//*--调用示例p_exporttb @tbname='地区资料',@path='c:\',@fname='aa.xls'--*/create proc p_exporttb@tbname sysname, --要导出的表名@path nvarchar(1000), --文件存放目录@fname nvarchar(250)='' --文件名,默认为表名asdeclare @err int,@src nvarchar(255),@desc nvarchar(255),@out intdeclare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)--参数检测if isnull(@fname,'')='' set @fname=@tbname+'.xls'--检查文件是否已经存在if right(@path,1)<>'\' set @path=@path+'\'create table #tb(a bit,b bit,c bit)set @sql=@path+@fnameinsert into #tb exec master..xp_fileexist @sql--数据库创建语句set @sql=@path+@fnameif exists(select 1 from #tb where a=1)set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE' +';CREATE_DB="'+@sql+'";DBQ='+@sqlelseset @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0;HDR=YES' +';DATABASE='+@sql+'"'--连接数据库exec @err=sp_oacreate 'adodb.connection',@obj outif @err<>0 goto lberrexec @err=sp_oamethod @obj,'open',null,@constrif @err<>0 goto lberr/*--如果覆盖已经存在的表,就加上下面的语句--创建之前先删除表/如果存在的话select @sql='drop table ['+@tbname+']'exec @err=sp_oamethod @obj,'execute',@out out,@sql--*/--创建表的SQLselect @sql='',@fdlist=''select @fdlist=@fdlist+',['++']',@sql=@sql+',['++'] '+casewhen like '%char'then case when a.length>255 then 'memo'else 'text('+cast(a.length as varchar)+')' endwhen like '%int' or ='bit' then 'int'when like '%datetime' then 'datetime'when like '%money' then 'money'when like '%text' then 'memo'else endFROM syscolumns a left join systypes b on a.xtype=b.xusertypewhere not in('image','uniqueidentifier','sql_variant','varbinary','binary','timestamp') and object_id(@tbname)=idselect @sql='create table ['+@tbname+']('+substring(@sql,2,8000)+')',@fdlist=substring(@fdlist,2,8000)exec @err=sp_oamethod @obj,'execute',@out out,@sqlif @err<>0 goto lberrexec @err=sp_oadestroy @obj--导入数据set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES;IMEX=1 ;DATABASE='+@path+@fname+''',['+@tbname+'$])'exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from '+@tbname)returnlberr:exec sp_oageterrorinfo 0,@src out,@desc outlbexit:select cast(@err as varbinary(4)) as 错误号,@src as 错误源,@desc as 错误描述select @sql,@constr,@fdlistgoif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[p_exporttb]GO/*--数据导出EXCEL导出查询中的数据到Excel,包含字段名,文件为真正的Excel文件如果文件不存在,将自动创建文件如果表不存在,将自动创建表基于通用性考虑,仅支持导出标准数据类型--邹建2003.10(引用请保留此信息)--*//*--调用示例p_exporttb @sqlstr='select * from 地区资料',@path='c:\',@fname='aa.xls',@sheetname='地区资料'--*/create proc p_exporttb@sqlstr varchar(8000), --查询语句,如果查询语句中使用了order by ,请加上top 100 percent@path nvarchar(1000), --文件存放目录@fname nvarchar(250), --文件名@sheetname varchar(250)='' --要创建的工作表名,默认为文件名asdeclare @err int,@src nvarchar(255),@desc nvarchar(255),@out intdeclare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)--参数检测if isnull(@fname,'')='' set @fname='temp.xls'if isnull(@sheetname,'')='' set @sheetname=replace(@fname,'.','#')--检查文件是否已经存在if right(@path,1)<>'\' set @path=@path+'\'create table #tb(a bit,b bit,c bit)set @sql=@path+@fnameinsert into #tb exec master..xp_fileexist @sql--数据库创建语句set @sql=@path+@fnameif exists(select 1 from #tb where a=1)set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE'+';CREATE_DB="'+@sql+'";DBQ='+@sqlelseset @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0;HDR=YES' +';DATABASE='+@sql+'"'--连接数据库exec @err=sp_oacreate 'adodb.connection',@obj outif @err<>0 goto lberrexec @err=sp_oamethod @obj,'open',null,@constrif @err<>0 goto lberr--创建表的SQLdeclare @tbname sysnameset @tbname='##tmp_'+convert(varchar(38),newid())set @sql='select * into ['+@tbname+'] from('+@sqlstr+') a'exec(@sql)select @sql='',@fdlist=''select @fdlist=@fdlist+',['++']',@sql=@sql+',['++'] '+casewhen like '%char'then case when a.length>255 then 'memo'else 'text('+cast(a.length as varchar)+')' endwhen like '%int' or ='bit' then 'int'when like '%datetime' then 'datetime'when like '%money' then 'money'when like '%text' then 'memo'else endFROM tempdb..syscolumns a left join tempdb..systypes b on a.xtype=b.xusertypewhere not in('image','uniqueidentifier','sql_variant','varbinary','binary','timestamp') and a.id=(select id from tempdb..sysobjects where name=@tbname)if @@rowcount=0 returnselect @sql='create table ['+@sheetname+']('+substring(@sql,2,8000)+')',@fdlist=substring(@fdlist,2,8000)exec @err=sp_oamethod @obj,'execute',@out out,@sqlif @err<>0 goto lberrexec @err=sp_oadestroy @obj--导入数据set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES ;DATABASE='+@path+@fname+''',['+@sheetname+'$])'exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from ['+@tbname+']')set @sql='drop table ['+@tbname+']'exec(@sql)returnlberr:exec sp_oageterrorinfo 0,@src out,@desc outlbexit:select cast(@err as varbinary(4)) as 错误号,@src as 错误源,@desc as 错误描述select @sql,@constr,@fdlistgo。

delphi数据导入excel

delphi数据导入excel

procedure Tdaochu.BitBtn1Click(Sender: TObject);vari,row,column,icount:integer;ExcelApplication1: TExcelApplication;ExcelWorkbook1: TExcelWorkbook;ExcelWorksheet1: TExcelWorksheet;begindm1.ADOQuery5.close;dm1.ADOQuery5.SQL.Clear ;dm1.ADOQuery5.SQL.text:='select * from 记录where 日期between #'+formatdatetime('yyyy-mm-dd',datetimepicker1.date)+'# and#'+formatdatetime('yyyy-mm-dd',datetimepicker2.date)+'# ';dm1.ADOQuery5.Open;//导出TryExcelApplication1:=TExcelApplication.Create(Application);ExcelWorksheet1:=TExcelWorksheet.Create(Application);ExcelWorkbook1:=TExcelWorkbook.Create(Application);ExcelApplication1.Connect;ExceptMessageDlg('Excel没有安装!',mtError, [mbOk], 0);Abort;End;//ExcelApplication1.Visible[0] := false; //不显示过程ExcelApplication1.Visible[0]:=true; //显示过程ExcelApplication1.Caption:='Excel Application';ExcelApplication1.Workbooks.Add(Null,0);ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);DBGrid1.DataSource.DataSet.Open;row := 2;DBGrid1.DataSource.DataSet.first;for iCount:= 0 to DBGrid1.Columns.Count-1 dobeginExcelWorksheet1.cells.Item[1,iCount+1]:=DBGrid1.Columns.Items[iCount].Title.Caption;end;While Not (DBGrid1.DataSource.DataSet.Eof) dobegincolumn:=1;for i :=1 to DBGrid1.DataSource.DataSet.FieldCount dobeginExcelWorksheet1.Cells.Item[row,column]:=DBGrid1.DataSource.DataSet.field s[i-1].AsString;column:=column+1;end;DBGrid1.DataSource.DataSet.Next;row:=row+1;end;ExcelApplication1.Visible[0]:=True;ExcelApplication1.Disconnect;//ExcelApplication1.Quit;ExcelApplication1.Free;ExcelWorksheet1.Free;ExcelWorkbook1.Free;messagebox(getactivewindow(),'导出结算数据到EXCEL成功!','提示',MB_OK+MB_ICONINFORMATION);end ;关于读取Excel文件数据到数据库,以及从数据库导出数据到Excel的例子数据库:sqlserver表名称:tperson 字段:code varchar(10) name varchar(20)创建一个结构体:typePPerson = ^TPerson;TPerson = recordFCode: String;FName: string;end;相关函数及变量FPerson: PPerson;FPersonList: TList; //用来存数据function LoadExcel: Boolean; //加载Excelfunction SaveToDB: Boolean; //写到数据库function DBToExcel: Boolean; //导出数据两个按钮,一个adoconnection,一个adoquery看到好多人问关于Excel方面的问题,所以写了这个比较简单的例子,有好多细节也没考虑,供参考在真正写的时候,要注意指针的释放等.全部源码:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ComOBJ, DB, ADODB;typePPerson = ^TPerson;TPerson = recordFCode: String;FName: string;end;typeTForm1 = class(TForm)Button1: TButton;ADOConnection1: TADOConnection;ADOQuery1: TADOQuery;Button2: TButton;procedure FormCreate(Sender: TObject);procedure FormDestroy(Sender: TObject);procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);private{ Private declarations }FPerson: PPerson;FPersonList: TList;function LoadExcel: Boolean;function SaveToDB: Boolean;function DBToExcel: Boolean;public{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}Function TForm1.LoadExcel: Boolean;VarRange Matrix: Variant;OpenDialog1: Tope Dialog;iRE: integer;IN_TYPE, vStockName: String;SStockName, sCompany: String;i: Integer;MsExcel, MsExcelWorkBook, MsExcelWorkSheet: Variant;Col1, Col2: String;BeginOpenDialog1:=TOpenDialog.Create (nil);TryOpenDialog1.FileName:='*.CSV;*.xls';If not OpenDialog1.Execute thenBeginResult: = false;Exit;End;MsExcel: = CreateOleObject ('Excel. Application');MsExcelWorkBook: = msExcel.Workbooks.Open (OpenDialog1.FileName);MsExcelWorkSheet: = msExcel.Worksheets.Item [1];ExceptResult: = false;Exit;End;//开始从EXCEL文件读取相关的信息TryTryApplication.ProcessMessages;// 防止进程阻塞,使程序能够响应消息队列中的其他事件。

DxDbGrid与DbGridEh表格使用及导出Excel

DxDbGrid与DbGridEh表格使用及导出Excel

DxDbGrid与DbGridEh表格使用及导出Excel分类:Delphi 2011-05-16 09:47 110人阅读评论(0) 收藏举报前言:二者都是非常不错的第三方表格控件,都可实现多表头的表格及分组汇总功能;在导出 Excel 方面,个人觉得 DxDbGrid 做的比DbGridEh 出色,几乎是 Grid 原样导出, DbGridEh 导出表格模式的单元格与 Grid 显示有所出入。

一、所用版本及安装:1 、版本: DevExQuantumGrid v3.22 Pro for D7 、 EhLib 5.2.842 、安装: DevExQuantumGrid 直接 Setup.exe 就 OK ; EhLib 在Delphi7 的安装稍微啰嗦点,具体步骤参考 readme.txt 或如下步骤:(1). 将 EhLib 5.2.84 解压缩到目标目录。

(2). 打开 Delphi 7 ,将 EhLib 的 /Delphi7 子目录加到 Delphi 的 Library path 。

( 菜单操作路径为:Tools|Environment Options...|Library|Library path)(3). 将 EhLib 目标安装目录中的 common 和 DataService子目录的文件移动到 EhLib 的 /Delphi7 子目录中。

(4). 在 Delphi 7 中打开 EhLib70.dpk ,编译,但不要安装。

(5). 在 Delphi 7 中打开 DclEhLib70.dpk ,编译并安装。

(6). 组件面板中出现一个 EhLib 的组件页。

(7). 打开附带的 DEMOS ,编译并运行,测试安装成功。

二、使用 DxDbGrid1 、窗体拖入 dxDBGrid1 、 ADOConnection1 、 ADOQuery1 、DataSource1 、 Button1 、 SaveDialog1 ,然后完成数据的链接及相关控件关联,如何操作,你应该懂的;接下来完成如下图所示的一个表格:2 、双击 dxDBGrid1 ,在 Bands 栏增加 TdxTreeListBand 并填写Caption ,注意要将 dxDBGrid1 的 ShowBands 属性设置为 True 才能显示 Bands 栏;同样双击 dxDBGrid1 ,在 Columns 栏,添加多个dxGridColumn (根据需要选择不同的类型)并使其与数据库字段形成关联,涉及如下几个属性, BandIndex 选择对应的 Band 从而形成二级表头, Caption 、 FieldName 、 HeaderAlignment 、 width 等,如此完成了基本的表格设计,如果喜欢表头平滑更改 LookAndFeel 属性为 lfFlat 即可。

delphi导出数据至Excel的几种方法及比较

delphi导出数据至Excel的几种方法及比较

delph‎i导出数据‎至E xce‎l的几种方‎法及比较一、delph‎i快速导出e‎x celuses ComOb‎j,clipb‎r d;funct‎i on ToExc‎e l(sfile‎n ame:strin‎g; ADOQu‎e ry:TADOQ‎u ery):boole‎a n;const‎xlNor‎m al=-4143;vary : integ‎e r;tsLis‎t : TStri‎n gLis‎t;s,filen‎a me :strin‎g;aShee‎t :Varia‎n t;excel‎:OleVa‎r iant‎;saved‎i alog‎ :tsave‎d ialo‎g;begin‎Resul‎t := true;trye xcel‎:=Creat‎e OleO‎b ject‎('Excel‎.Appli‎c atio‎n');e xcel‎.workb‎o oks.add;excep‎t//scree‎n.curso‎r:=crDef‎a ult;showm‎e ssag‎e('无法调用E‎x cel!');exit;end;saved‎i alog‎:=tsave‎d ialo‎g.Creat‎e(nil);saved‎i alog‎.FileN‎ame:=sfile‎n ame; //存入文件saved‎i alog‎.Filte‎r:='Excel‎文件(*.xls)|*.xls';if saved‎i alog‎.Execu‎t e thenbegin‎i f FileE‎x ists‎(saved‎i alog‎.FileN‎a me) thentryif appli‎catio‎n.messa‎g ebox‎('该文件已经‎存在,要覆盖吗?','询问',mb_ye‎sno+mb_ic‎onque‎stion‎)=idyes‎thenDelet‎e File‎(PChar‎(saved‎i alog‎.FileN‎a me))elsebegin‎Excel‎.Quit;saved‎i alog‎.free;//scree‎n.curso‎r:=crDef‎a ult;Exit;end;excep‎tExcel‎.Quit;scree‎n.curso‎r:=crDef‎a ult;Exit;end;f ilen‎a me:=saved‎i alog‎.FileN‎a me;end;saved‎i alog‎.free;if filen‎a me='' thenbegin‎resul‎t:=true;Excel‎.Quit;//scree‎n.curso‎r:=crDef‎a ult;exit;end;aShee‎t:=excel‎.Works‎h eets‎.Item[1];tsLis‎t:=TStri‎n gLis‎t.Creat‎e;//tsLis‎t.Add('查询结果'); //加入标题s:=''; //加入字段名‎for y := 0 to adoqu‎e ry.field‎C ount‎- 1 dobegin‎s:=s+adoQu‎e ry.Field‎s.Field‎s[y].Field‎N ame+#9 ; Appli‎c atio‎n.Proce‎s sMes‎s ages‎;end;tsLis‎t.Add(s);trytryA DOQu‎e ry.First‎;While‎Not ADOQu‎e ry.Eof dob egin‎s:='';for y:=0 to ADOQu‎e ry.Field‎C ount‎-1 dobegin‎s:=s+ADOQu‎e ry.Field‎s[y].AsStr‎i ng+#9;Appli‎c atio‎n.Proce‎s sMes‎s ages‎;end;tsLis‎t.Add(s);ADOQu‎e ry.next;end;C lipb‎o ard.AsTex‎t:=tsLis‎t.Text;e xcep‎tr esul‎t:=false‎;end;final‎l yt sLis‎t.Free;aShee‎t.Paste‎;Messa‎g eBox‎(A ppli‎ca tio‎n.Handl‎e,'数据导出完‎毕!','系统提示',MB_IC‎O NINF‎O RMA T‎ION or MB_OK‎);tryi f copy(FileN‎a me,lengt‎h(FileN‎a me)-3,4)<>'.xls' thenFileN‎a me:=FileN‎a me+'.xls';E xcel‎.Activ‎e Work‎b ook.SaveA‎s(FileN‎a me, xlNor‎m al, '', '', False‎, False‎);excep‎tExcel‎.Quit;s cree‎n.curso‎r:=crDef‎a ult;exit;end;Excel‎.V isib‎l e := false‎; //true会‎自动打开已‎经保存的e‎x celExcel‎.Quit;Excel‎:= UnAss‎i gned‎;end;调用:ToExc‎el('D:\a.xsl',Query‎T oExc‎el);//路径可以自‎定义-------------------------------------------------------------------------------------------------******************************************************************************************* ******二、delph‎i如何导出‎E XCEL‎,代码。

delphi导出数据至Excel的七种方法及比较以及一些EXCEL单元格的操作

delphi导出数据至Excel的七种方法及比较以及一些EXCEL单元格的操作
Application.ProcessMessages;
end;
tsList.Add(s);
try
try
ADOQuery.First;
While Not ADOQuery.Eof do
s,filename :string;
aSheet :Variant;
excel :OleVariant;
savedialog :tsavedialog;
begin
Result := true;
try
excel:=CreateOleObject('Excel.Application');
var h,k:intering;
begin
try
Excelid := CreateOLEObject('Excel.Application');
except
MessageBox(Application.Handle,'数据导出完毕!','系统提示',MB_ICONINFORMATION or MB_OK);
try
if copy(FileName,length(FileName)-3,4)<>'.xls' then
aSheet.range['A1:H1'].Font.size := 20; //字体
设置A1到H1的单元格的字体大小为20,可以Column[n]设置某列的字体。
aSheet.range['A1:H1'].Font.bold := true;
设置A1到H1的单元格的字体 加粗
一;

将DELPHI中把数据库中数据导出到EXCEL中

将DELPHI中把数据库中数据导出到EXCEL中

将DELPHI中把数据库中数据导出到EXCEL中使用Delphi 控件方法在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。

1)打开ExcelExcelApplication1.Connect;2) 显示当前窗口:ExcelApplication1.Visible[0]:=True;3) 更改Excel 标题栏:ExcelApplication1.Caption := '应用程序调用Microsoft Excel';4) 添加新工作簿:ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));5) 添加新工作表:var Temp_Worksheet: _WorkSheet;beginTemp_Worksheet:=ExcelWorkbook1.WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet;ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);End;6) 打开已存在的工作簿:ExcelApplication1.Workbooks.Open (c:\a.xlsEmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0)7) 设置第2个工作表为活动工作表:ExcelApplication1.WorkSheets[2].Activate; 或ExcelApplication1.WorksSheets[ 'Sheet2' ].Activate;8) 给单元格赋值:ExcelApplication1.Cells[1,4].V alue := '第一行第四列';9) 设置指定列的宽度(单位:字符个数),以第一列为例:ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth := 5;10) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:ExcelApplication1.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米11) 在第8行之前插入分页符:ExcelApplication1.WorkSheets[1].Rows[8].PageBreak := 1;12) 在第8列之前删除分页符:ExcelApplication1.ActiveSheet.Columns[4].PageBreak := 0;13) 指定边框线宽度:ExcelApplication1.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;1-左2-右3-顶4-底5-斜( \ ) 6-斜( / )14) 清除第一行第四列单元格公式:ExcelApplication1.ActiveSheet.Cells[1,4].ClearContents;15) 设置第一行字体属性:ExcelApplication1.ActiveSheet.Rows[1] := '隶书';ExcelApplication1.ActiveSheet.Rows[1].Font.Color := clBlue;ExcelApplication1.ActiveSheet.Rows[1].Font.Bold := True;ExcelApplication1.ActiveSheet.Rows[1].Font.UnderLine := True;16) 进行页面设置:a.页眉:ExcelApplication1.ActiveSheet.PageSetup.CenterHeader := '报表演示';b.页脚:ExcelApplication1.ActiveSheet.PageSetup.CenterFooter := '第&P页';c.页眉到顶端边距2cm:ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;d.页脚到底端边距3cm:ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;e.顶边距2cm:ExcelApplication1.ActiveSheet.PageSetup.TopMargin := 2/0.035;f.底边距2cm:ExcelApplication1.ActiveSheet.PageSetup.BottomMargin := 2/0.035;g.左边距2cm:ExcelApplication1.ActiveSheet.PageSetup.LeftMargin := 2/0.035;h.右边距2cm:ExcelApplication1.ActiveSheet.PageSetup.RightMargin := 2/0.035;i.页面水平居中:ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;j.页面垂直居中:ExcelApplication1.ActiveSheet.PageSetup.CenterV ertically := 2/0.035;k.打印单元格网线:ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines := True;17) 拷贝操作:a.拷贝整个工作表:ed.Range.Copy;b.拷贝指定区域:ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy;c.从A1位置开始粘贴:ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial;d.从文件尾部开始粘贴:ExcelApplication1.ActiveSheet.Range.PasteSpecial;18) 插入一行或一列:a. ExcelApplication1.ActiveSheet.Rows[2].Insert;b. ExcelApplication1.ActiveSheet.Columns[1].Insert;19) 删除一行或一列:a. ExcelApplication1.ActiveSheet.Rows[2].Delete;b. ExcelApplication1.ActiveSheet.Columns[1].Delete;20) 打印预览工作表:ExcelApplication1.ActiveSheet.PrintPreview;21) 打印输出工作表:ExcelApplication1.ActiveSheet.PrintOut;22) 工作表保存:if not ExcelApplication1.ActiveWorkBook.Saved thenExcelApplication1.ActiveSheet.PrintPreview;23) 工作表另存为:ExcelApplication1.SaveAs( 'C:\Excel\Demo1.xls' );24) 放弃存盘:ExcelApplication1.ActiveWorkBook.Saved := True;25) 关闭工作簿:ExcelApplication1.WorkBooks.Close;26) 退出Excel:ExcelApplication1.Quit;ExcelApplication1.Disconnect;Top2 楼songlian(雨)回复于2005-04-29 16:37:15 得分0把数据集导如导excel,adsdata可以换成任意你用导的数据集WriteExcel(AdsData:Tclientdataset; sName, Title: string);varExcelApplication1: TExcelApplication;ExcelWorksheet1: TExcelWorksheet;ExcelWorkbook1: TExcelWorkbook;i, j: integer;filename: string;beginfilename := concat(sName, '.xls');tryExcelApplication1 := TExcelApplication.Create(Application);ExcelWorksheet1 := TExcelWorksheet.Create(Application);ExcelWorkbook1 := TExcelWorkbook.Create(Application);ExcelApplication1.Connect;exceptApplication.Messagebox('Excel没有安装!','Hello',MB_ICONERROR + mb_Ok);Abort;end;tryExcelApplication1.Workbooks.Add(EmptyParam, 0);ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _worksheet);AdsData.First;for j := 0 to AdsData.Fields.Count - 1 dobeginExcelWorksheet1.Cells.item[3, j + 1] := AdsData.Fields[j].DisplayLabel;ExcelWorksheet1.Cells.item[3, j + 1].font.size :='10';end;for i := 4 to AdsData.RecordCount + 3 dobeginfor j := 0 to AdsData.Fields.Count - 1 dobeginExcelWorksheet1.Cells.item[i, j + 1] :=AdsData.Fields[j].Asstring;ExcelWorksheet1.Cells.item[i, j + 1].font.size := '10';end;AdsData.Next;end;ExcelWorksheet1.Columns.AutoFit;ExcelWorksheet1.Cells.item[1, 2] := Title;ExcelWorksheet1.Cells.Item[1, 2].font.size :='14';ExcelWorksheet1.SaveAs(filename);Application.Messagebox(pchar('数据成功导出'+ filename),'信息化建设部',mb_Ok);finallyExcelApplication1.Disconnect;ExcelApplication1.Quit;ExcelApplication1.Free;ExcelWorksheet1.Free;ExcelWorkbook1.Free;end;end;。

Delphi快速导出Excel–指尖风暴TyphonFinger

Delphi快速导出Excel–指尖风暴TyphonFinger
7.iCount := SGAll.ColCount;
8.sheet.cells[19, 1] := 'Plant ' + cbbPlant.Text;
9.//一行一行写,每一行的格式可以设置
10.
11.for i := 1 to SGAll.RowCount – 2 do
12.begin
13.for j := 1 to iCount – 1 do
14.begin
15.sData[1,j]:= SGAll.Cells[j, i];//一行数据。也可以为多行数据
16.end;
17.range:=sheet.Range[sheet.cells[i , 1],sheet.cells[i , iCount-1]]; //选择要写的Execl的单元格
18.range.Value2:=sDataபைடு நூலகம் //写入数据
1.procedure Save_Exce(sheet: Variant);
2.var
3.range,sData: Variant;
4.i, j, citem,iCount: Integer;
5.begin
6.sData:=varArrayCreate([1,1,1,iCount-1],varVariant); //定义数组
每份excel里面都带有图表分多个sheet使用文件流的方式虽然速度很快但格式不好控制使用过nativeexcel与xlsreadwriteii控件都不理想
Delphi快速导出Excel–指尖风暴TyphonFinger
因工作中很多时候要导出Excel的Report.每份Excel里面都带有图表,分多个Sheet,使用文件流的方式虽然速度很快,但格式不好控制,使用过NativeExcel与XLSReadWriteII控件,都不理想.下面的方法,速度改善很多!

delphi dbgrid 保存为excel 简单方法

delphi dbgrid 保存为excel 简单方法

delphi dbgrid 保存为excel 简单方法你可以使用以下简单方法将Delphi的DBGrid保存为Excel:1. 首先,添加Excel的引用。

在Delphi的“工具”菜单下选择“导入类型库”,然后选择Microsoft Excel并点击“创建单元”。

这将在您的Delphi项目中添加对Excel的引用。

2. 在所需的单元(例如表单或数据模块)中,添加以下单元引用:- ComObj:用于与COM对象(例如Excel)进行交互的单元。

- DBGrids:用于访问和操作DBGrid的单元。

3. 创建一个导出数据的按钮(或其他事件),然后在事件处理程序中添加以下代码:```delphiusesComObj, DBGrids;procedure TForm1.Button1Click(Sender: TObject);varExcel, Workbook, Worksheet: Variant;i, j: Integer;begin// 创建Excel对象Excel := CreateOleObject('Excel.Application');Excel.Visible := True;// 创建Workbook和WorksheetWorkbook := Excel.Workbooks.Add;Worksheet := Workbook.Worksheets[1];// 输出DBGrid的标题行for i := 0 to DBGrid1.Columns.Count - 1 doWorksheet.Cells[1, i+1].Value :=DBGrid1.Columns[i].Title.Caption;// 输出DBGrid的数据行for i := 0 to DBGrid1.DataSource.DataSet.RecordCount - 1 dobeginfor j := 0 to DBGrid1.Columns.Count - 1 doWorksheet.Cells[i+2, j+1].Value :=DBGrid1.DataSource.DataSet.FieldByName(DBGrid1.Columns[j].FieldName).AsString;DBGrid1.DataSource.DataSet.Next;end;// 保存Workbook并关闭ExcelWorkbook.SaveAs('path\to\save\file.xlsx');Workbook.Close;Excel.Quit;end;```在上述代码中,使用`CreateOleObject`函数创建了Excel对象,并将其设置为可见。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

delphi导出数据至Excel的几种方法及比较一、delphi 快速导出exceluses ComObj,clipbrd;function ToExcel(sfilename:string; ADOQuery:TADOQuery):boolean;constxlNormal=-4143;vary : integer;tsList : TStringList;s,filename :string;aSheet :V ariant;excel :OleV ariant;savedialog :tsavedialog;beginResult := true;tryexcel:=CreateOleObject('Excel.Application');excel.workbooks.add;except//screen.cursor:=crDefault;showmessage('无法调用Excel!');exit;end;savedialog:=tsavedialog.Create(nil);savedialog.FileName:=sfilename; //存入文件savedialog.Filter:='Excel文件(*.xls)|*.xls';if savedialog.Execute thenbeginif FileExists(savedialog.FileName) thentryif application.messagebox('该文件已经存在,要覆盖吗?','询问',mb_yesno+mb_iconquestion)=idyes thenDeleteFile(PChar(savedialog.FileName))elsebeginExcel.Quit;savedialog.free;//screen.cursor:=crDefault;Exit;end;exceptExcel.Quit;screen.cursor:=crDefault;Exit;end;filename:=savedialog.FileName;end;savedialog.free;if filename='' thenbeginresult:=true;Excel.Quit;//screen.cursor:=crDefault;exit;end;aSheet:=excel.Worksheets.Item[1];tsList:=TStringList.Create;//tsList.Add('查询结果'); //加入标题s:=''; //加入字段名for y := 0 to adoquery.fieldCount - 1 dobegins:=s+adoQuery.Fields.Fields[y].FieldName+#9 ;Application.ProcessMessages;end;tsList.Add(s);trytryADOQuery.First;While Not ADOQuery.Eof dobegins:='';for y:=0 to ADOQuery.FieldCount-1 dobegins:=s+ADOQuery.Fields[y].AsString+#9;Application.ProcessMessages;end;tsList.Add(s);ADOQuery.next;end;Clipboard.AsText:=tsList.Text;exceptresult:=false;end;finallytsList.Free;aSheet.Paste;MessageBox(Application.Handle,'数据导出完毕!','系统提示',MB_ICONINFORMA TION or MB_OK);tryif copy(FileName,length(FileName)-3,4)<>'.xls' thenFileName:=FileName+'.xls';Excel.ActiveWorkbook.SaveAs(FileName, xlNormal, '', '', False, False);exceptExcel.Quit;screen.cursor:=crDefault;exit;end;Excel.Visible := false; //true会自动打开已经保存的excelExcel.Quit;Excel := UnAssigned;end;调用:ToExcel('D:\a.xsl',QueryToExcel);//路径可以自定义-------------------------------------------------------------------------------------------------******************************************************************************************* ******二、delphi如何导出EXCEL,代码。

非第3方控件首先在Uses处加上ComObjprocedure TForm1.Button1Click(Sender: TObject);var h,k:integer;Excelid: OleVariant;s: string;begintryExcelid := CreateOLEObject('Excel.Application');exceptApplication.MessageBox('Excel没有安装!', '提示信息', MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL);Exit;end;tryADOQuery1.Close;ADOQuery1.SQL.Clear;ADOQuery1.Open;k:=ADOQuery1.RecordCount;Excelid.Visible := True;Excelid.WorkBooks.Add;Excelid.worksheets[1].range['A1:c1'].Merge(True);Excelid.WorkSheets[1].Cells[1,1].Value :='部门编码表' ;Excelid.worksheets[1].Range['a1:a1'].HorizontalAlignment := $FFFFEFF4;Excelid.worksheets[1].Range['a1:a1'].VerticalAlignment := $FFFFEFF4;Excelid.WorkSheets[1].Cells[2,1].Value := '组别编号';Excelid.WorkSheets[1].Cells[2,2].Value := '公司编号';Excelid.WorkSheets[1].Cells[2,3].Value := '组别名称';Excelid.worksheets[1].Range['A1:c1'] := '宋体';Excelid.worksheets[1].Range['A1:c1'].Font.Size := 9;Excelid.worksheets[1].range['A1:c2'].font.bold:=true;Excelid.worksheets[1].Range['A2:c2'].Font.Size := 9;Excelid.worksheets[1].Range['A2:c2'].HorizontalAlignment := $FFFFEFF4;Excelid.worksheets[1].Range['A2:c2'].VerticalAlignment := $FFFFEFF4;h:=3;ADOQuery1.First;while not ADOQuery1.Eof dobegin Excelid.WorkSheets[1].Cells[h,1].Value := Adoquery1.FieldByName('Fdept_id').AsString; Excelid.WorkSheets[1].Cells[h,2].Value := Adoquery1.FieldByName('Ffdept_id').AsString;Excelid.WorkSheets[1].Cells[h,3].Value := Adoquery1.FieldByName('Fdept_name').AsString;Inc(h);Adoquery1.Next;end;s := 'A2:f'+ IntToStr(k+2);Excelid.worksheets[1].Range[s] := '宋体';Excelid.worksheets[1].Range[s].Font.size := 9;Excelid.worksheets[1].Range[s].Borders.LineStyle := 1;Excelid.Quit;exceptApplication.MessageBox('导入数据出错!请检查文件的格式是否正确!', '提示信息', MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL);end;MessageBox(GetActiveWindow(), 'EXCEL数据导出成功!', '提示信息', MB_OK +MB_ICONW ARNING); end;-----------------------------------------------------------------------------------------------------------------------------------------------******************************************************************************************* *********************************************三、delphi导出EXCELWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Mask, ComCtrls, StdCtrls, Buttons, Grids, ValEdit, IdBaseComponent, CheckLst, excel97, ExcelXP, OleServer, ComObj, excel2000, mmsystem, ShellAPI, ADODB, DB, DBGrids, clipbrd;VarFExcel:OleVariant; //excel应用程序FWorkBook :OleVariant; //工作表Temsheet:OleVariant; //工作薄FPicture:OleVariant;//图片tmpstr:String;range:variant;//范围i,j,TemInt:integer;TemFileName:String;beginSaveDialog1.Filter:='.xls';if SaveDialog1.Execute thenbeginTemFileName:=SaveDialog1.FileName+'.xls';Screen.Cursor:=CrHourGlass;TemInt:=0;FExcel:= CreateoleObject('excel.Application');FWorkBook:=FExcel.WorkBooks.Add(-4167); //新的工作表Temsheet:=FWorkBook.Worksheets.Add;:='利润统计';Temsheet.Select;Temsheet.Columns[1].ColumnWidth:=4;//设置列宽度Temsheet.Columns[2].ColumnWidth:=10;Temsheet.Columns[3].ColumnWidth:=16;Temsheet.Columns[4].ColumnWidth:=10;Temsheet.Columns[5].ColumnWidth:=10;Temsheet.Columns[6].ColumnWidth:=10;Temsheet.Columns[7].ColumnWidth:=10;Temsheet.Columns[8].ColumnWidth:=10;Temsheet.Columns[9].ColumnWidth:=20;Temsheet.Columns[10].ColumnWidth:=15;range:=Temsheet.Range[Temsheet.cells[1,1],Temsheet.cells[5,2]];//选定表格range.select;range.merge; //合并单元格FPicture:=Temsheet.Pictures.Insert(tmpstr);FPicture.Left:=20;FPicture.Top:=5;FPicture.width:=50;FPicture.height:=50;FPicture:=null;range:=Temsheet.Range[Temsheet.cells[2,3],Temsheet.cells[3,4]];//选定表格range.select;range.merge;Range.Characters.Font.FontStyle :='加粗';Temsheet.Cells[2,3].HorizontalAlignment:=-4108; //字居中Temsheet.Cells[2,3]:=ComSName;range:=Temsheet.Range[Temsheet.cells[4,3],Temsheet.cells[4,4]];//选定表格range.select;range.merge;Temsheet.Cells[4,3].HorizontalAlignment:=-4108; //字居中Temsheet.Cells[4,3]:=ComEName;range:=Temsheet.Range[Temsheet.cells[2,5],Temsheet.cells[2,6]];//选定表格range.select;range.merge;Temsheet.Cells[2,5].HorizontalAlignment:=-4108; //字居中Temsheet.Cells[2,5]:=ComName;Temsheet.Cells[3,5]:='联系人:';Temsheet.Cells[4,5]:='电话:';Temsheet.Cells[4,6]:=ComPhone;Temsheet.Cells[5,5]:='传真:';Temsheet.Cells[5,6]:=ComFax;range:=Temsheet.Range[Temsheet.cells[6,1],Temsheet.cells[6,10]];//选定表格range.select;range.merge;range:=Temsheet.Range[Temsheet.cells[7,1],Temsheet.cells[7,2]];//选定表格range.select;range.merge;Range.Characters.Font.FontStyle :='加粗';Temsheet.Cells[7,1]:='入库信息:';range:=Temsheet.Range[Temsheet.cells[7,3],Temsheet.cells[7,10]];//选定表格range.select;Temsheet.Cells[8,1]:='序号';Temsheet.Cells[8,1].HorizontalAlignment:=-4108; //字居中Temsheet.Cells[8,1].Interior.Color:=clGray; //单元格背景色range:=Temsheet.Range[Temsheet.cells[8,1],Temsheet.cells[8,1]];//选定表格range.borders.linestyle:=1;//华线for i:=0 to DBGrid1.Columns.Count - 1 dobeginTemsheet.Cells[8,i+2]:=DBGrid1.Columns[i].Title.Caption;Temsheet.Cells[8,i+2].HorizontalAlignment:=-4108; //字居中Temsheet.Cells[8,i+2].Interior.Color:=clGray; //单元格背景色range:=Temsheet.Range[Temsheet.cells[8,i+2],Temsheet.cells[8,i+2]];//选定表格range.borders.linestyle:=1;//华线end;//////////////////////////////////////////////j:=0;DBGrid1.DataSource.DataSet.First;while not DBGrid1.DataSource.DataSet.Eof dobeginTemsheet.Cells[9+j,1].Value:=j+1;Temsheet.Cells[9+j,1].HorizontalAlignment:=-4108; //字居中range:=Temsheet.Range[Temsheet.cells[9+j,1],Temsheet.cells[9+j,1]];//选定表格range.borders.linestyle:=1;//华线for i:=0 to DBGrid1.Columns.Count - 1 dobeginTemsheet.Cells[9+j,i+2].Value:=DBGrid1.Fields[i].AsString;range:=Temsheet.Range[Temsheet.cells[9+j,i+2],Temsheet.cells[9+j,i+2]];//选定表格range.borders.linestyle:=1;//华线end;DBGrid1.DataSource.DataSet.Next;j:=j+1;end;TemInt:=9+ DBGrid1.DataSource.DataSet.RecordCount;range:=Temsheet.Range[Temsheet.cells[TemInt,1],Temsheet.cells[TemInt,10]];//选定表格range.select;range.merge;TemInt:=TemInt+1;range.select;range.merge;Range.Characters.Font.FontStyle :='加粗';Temsheet.Cells[TemInt,1]:='出库信息:';range:=Temsheet.Range[Temsheet.cells[TemInt,3],Temsheet.cells[TemInt,10]];//选定表格range.select;range.merge;TemInt:=TemInt+1;Temsheet.Cells[TemInt,1]:='序号';Temsheet.Cells[TemInt,1].HorizontalAlignment:=-4108; //字居中Temsheet.Cells[TemInt,1].Interior.Color:=clGray; //单元格背景色range:=Temsheet.Range[Temsheet.cells[TemInt,1],Temsheet.cells[TemInt,1]];//选定表格range.borders.linestyle:=1;//华线for i:=0 to DBGrid2.Columns.Count - 1 dobeginTemsheet.Cells[TemInt,i+2]:=DBGrid2.Columns[i].Title.Caption;Temsheet.Cells[TemInt,i+2].HorizontalAlignment:=-4108; //字居中Temsheet.Cells[TemInt,i+2].Interior.Color:=clGray; //单元格背景色range:=Temsheet.Range[Temsheet.cells[TemInt,i+2],Temsheet.cells[TemInt,i+2]];//选定表格range.borders.linestyle:=1;//华线end;TemInt:=TemInt+1;//////////////////////////////////////////////j:=0;DBGrid2.DataSource.DataSet.First;while not DBGrid2.DataSource.DataSet.Eof dobeginTemsheet.Cells[TemInt+j,1].Value:=j+1;Temsheet.Cells[TemInt+j,1].HorizontalAlignment:=-4108; //字居中range:=Temsheet.Range[Temsheet.cells[TemInt+j,1],Temsheet.cells[TemInt+j,1]];//选定表格range.borders.linestyle:=1;//华线for i:=0 to DBGrid2.Columns.Count - 1 dobeginTemsheet.Cells[TemInt+j,i+2].Value:=DBGrid2.Fields[i].AsString;range:=Temsheet.Range[Temsheet.cells[TemInt+j,i+2],Temsheet.cells[TemInt+j,i+2]];//选定表格range.borders.linestyle:=1;//华线end;DBGrid2.DataSource.DataSet.Next;end;TemInt:=TemInt+ DBGrid2.DataSource.DataSet.RecordCount;TemInt:=TemInt+1;range:=Temsheet.Range[Temsheet.cells[TemInt,1],Temsheet.cells[TemInt,10]];//选定表格range.select;range.merge;TemInt:=TemInt+1;range:=Temsheet.Range[Temsheet.cells[TemInt,1],Temsheet.cells[TemInt,2]];//选定表格range.select;range.merge;Range.Characters.Font.FontStyle :='加粗';Temsheet.Cells[TemInt,1]:='入库总额:';Temsheet.Cells[TemInt,3]:=Trim(Edit1.Text);range:=Temsheet.Range[Temsheet.cells[TemInt,4],Temsheet.cells[TemInt,10]];//选定表格range.select;range.merge;TemInt:=TemInt+1;range:=Temsheet.Range[Temsheet.cells[TemInt,1],Temsheet.cells[TemInt,2]];//选定表格range.select;range.merge;Range.Characters.Font.FontStyle :='加粗';Temsheet.Cells[TemInt,1]:='出库总额:';Temsheet.Cells[TemInt,3]:=Trim(Edit2.Text);range:=Temsheet.Range[Temsheet.cells[TemInt,4],Temsheet.cells[TemInt,10]];//选定表格range.select;range.merge;TemInt:=TemInt+1;range:=Temsheet.Range[Temsheet.cells[TemInt,1],Temsheet.cells[TemInt,2]];//选定表格range.select;range.merge;Range.Characters.Font.FontStyle :='加粗';Temsheet.Cells[TemInt,1]:='总利润:';Temsheet.Cells[TemInt,3]:=Trim(Edit3.Text);range:=Temsheet.Range[Temsheet.cells[TemInt,4],Temsheet.cells[TemInt,10]];//选定表格range.select;range.merge;range:=Temsheet.Range[Temsheet.cells[7,1],Temsheet.cells[TemInt,10]];//选定表格range.borders.linestyle:=1;//华线Application.ProcessMessages;Screen.Cursor:=CrDefault;FExcel.WorkBooks[1].saveas(TemFileName);//保存文件FExcel.workbooks[1].close; //关闭工作表Application.ProcessMessages;MessageBox(Handle,'导出成功','提示',MB_OK);//FExcel.visible:=true;FExcel.quit; //关闭ExcelFExcel := unassigned;shellexecute(0,'open',PChar(ExtractFileName(TemFileName)),nil,PChar(ExtractFilePath(TemFileName)),SW_Sh ow);end;end;--------------------------------------------------------------------------------------------------------------------******************************************************************************************* *************************四、导出到ExcelusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ExtCtrls, Mask, ComCtrls, StdCtrls, Buttons, Grids, ValEdit, IdBaseComponent,CheckLst, excel97, ExcelXP, OleServer, comobj, excel2000, mmsystem,ADODB, DB, DBGrids, clipbrd;procedure TFIND_FM.Button1Click(Sender: TObject);vari,j : integer;reportname, wpath : string;ExApp1 : TExcelApplication;ExWrbk1 : TExcelWorkbook;ExWrst1 : TExcelWorksheet;beginif Main_FM.ADOQuery_TEMP.IsEmpty thenbeginShowmessage('沒有可導出的資料!');Exit;endbeginMain_FM.SaveDialog1.FileName := 'qcreport';if Main_FM.savedialog1.Execute thenbegin//savedialog1.FileName := formatdatetime('YYYYMMDDHHMMSS',now())+'md_orderqc_list.xls';reportname := formatdatetime('YYYYMMDDHHMMSS',now())+ExtractFileName(Main_FM.savedialog1.FileName);//reportname := formatdatetime('YYYYMMDDHHMMSS',now())+'';wpath := ExtractFilePath(Main_FM.savedialog1.FileName);//showmessage(wpath);tryExApp1 := TExcelApplication.Create(application);ExWrbk1 := TExcelWorkbook.Create(application);ExWrst1 := TExcelWorksheet.Create(application);ExApp1.Connect;exceptShowmessage('電腦沒裝Excel!無法導出!');Abort;end;trytryExApp1.Workbooks.Add(EmptyParam,0);ExWrbk1.ConnectTo(ExApp1.Workbooks[1]);ExWrst1.ConnectTo(ExWrbk1.Worksheets[1] as _worksheet);Main_FM.ADOQuery_TEMP.First;for j := 0 to Main_FM.ADOQuery_TEMP.FieldCount-1 dobeginExWrst1.Cells.Item[1,j+1] := Main_FM.ADOQuery_TEMP.Fields[j].DisplayName;//end;for i := 2 to Main_FM.ADOQuery_TEMP.RecordCount+1 dobeginfor j := 0 to Main_FM.ADOQuery_TEMP.FieldCount-1 dobeginExWrst1.Cells.Item[i,j+1] := Main_FM.ADOQuery_TEMP.Fields[j].Value;end;Main_FM.ADOQuery_TEMP.Next;end;ExWrst1.SaveAs(wpath+reportname);//ExWrst.SaveAs(formatdatetime('YYYYMMDDHHMMSS',now())+reportname);;Showmessage('數據已成功導出!');exceptShowmessage('導出失敗!');abort;end;finallyExApp1.Disconnect;ExApp1.Quit;ExApp1.Free;ExWrbk1.Free;ExWrst1.Free;end;end;end;end;--------------------------------------------------------------------------------------------------******************************************************************************************* *******delphi导出数据至Excel的三种方法及比较闲来无事,跑到网上搜集了几种导出DataSet至Excel的几种方法。

相关文档
最新文档