ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:16.39KB ,
资源ID:9973554      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9973554.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(如何将delphi的dbgrid导出为excel表.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

如何将delphi的dbgrid导出为excel表.docx

1、如何将delphi的dbgrid导出为excel表unit unit2;interface uses forms,SysUtils,ComCtrls,DBGrids,DB,Dialogs,Messages,Windows,ComObj,Controls,ADODB,StdCtrls,Graphics;function ProgressBarform(max:integer):tProgressBar;function ExportToExcel(dbgrid:tdbgrid):boolean;implementationuses unit1;/生成一个显示进度条的窗体function Prog

2、ressBarform(max:integer):tProgressBar; var ProgressBar1:TProgressBar; form:tform; begin application.CreateForm(tform,form); form.Position:=poScreenCenter; form.BorderStyle:=bsnone; form.Height:=30; form.Width:=260; ProgressBar1:=TProgressBar.Create(form); ProgressBar1.Visible:=true; ProgressBar1.Smo

3、oth:=true; ProgressBar1.Max:=max; ProgressBar1.ParentWindow:=form.Handle; ProgressBar1.Height:=20; ProgressBar1.Width:=250; ProgressBar1.Left:=form.Left+5; ProgressBar1.Top:=form.Top+5; ProgressBar1.Step:=1; form.show; result:=ProgressBar1; end;/将DBGRID中的内容导入到EXCEL中function ExportToExcel(dbgrid:tdbg

4、rid):boolean; const xlNormal=-4143; var i,j,k:integer; str,filename:string; excel:OleVariant; SavePlace: TBookmark; savedialog:tsavedialog; ProgressBar1:TProgressBar; begin result:=false; filename:=; if dbgrid.DataSource.DataSet.RecordCount65536 then begin if application.messagebox(需要导出的数据过大,Excel最大

5、只能容纳65536行,是否还要继续?,询问,mb_yesno+mb_iconquestion)=idno then exit; end; screen.Cursor:=crHourGlass; try excel:=CreateOleObject(Excel.Application); excel.workbooks.add; except screen.cursor:=crDefault; showmessage(无法调用Excel!); exit; end; savedialog:=tsavedialog.Create(nil); savedialog.Filter:=Excel文件(*.

6、xls)|*.xls; if savedialog.Execute then begin if FileExists(savedialog.FileName) then try if application.messagebox(该文件已经存在,要覆盖吗?,询问,mb_yesno+mb_iconquestion)=idyes then DeleteFile(PChar(savedialog.FileName) else begin Excel.Quit; savedialog.free; screen.cursor:=crDefault; Exit; end; except Excel.Qui

7、t; savedialog.free; screen.cursor:=crDefault; Exit; end; filename:=savedialog.FileName; end; savedialog.free; application.ProcessMessages; if filename= then begin result:=false; Excel.Quit; screen.cursor:=crDefault; exit; end; k:=0; for i:=0 to dbgrid.Columns.count-1 do begin if dbgrid.Columns.Items

8、i.Visible then begin /Excel.Columnsk+1.ColumnWidth:=dbgrid.Columns.Itemsi.Title.Column.Width; excel.cells1,k+1:=dbgrid.Columns.Itemsi.Title.Caption; inc(k); end; end; dbgrid.DataSource.DataSet.DisableControls; saveplace:=dbgrid.DataSource.DataSet.GetBookmark; dbgrid.DataSource.dataset.First; i:=2; i

9、f dbgrid.DataSource.DataSet.recordcount65536 then ProgressBar1:=ProgressBarform(65536) else ProgressBar1:=ProgressBarform(dbgrid.DataSource.DataSet.recordcount); while not dbgrid.DataSource.dataset.Eof do begin k:=0; for j:=0 to dbgrid.Columns.count-1 do begin if dbgrid.Columns.Itemsj.Visible then b

10、egin excel.cellsi,k+1.NumberFormat:=; if not dbgrid.DataSource.dataset.fieldbyname(dbgrid.Columns.Itemsj.FieldName).isnull then begin str := dbgrid.DataSource.dataset.fieldbyname(dbgrid.Columns.Itemsj.FieldName).value; Excel.Cellsi, k + 1 := Str; end; inc(k); end else continue; end; if i=65536 then

11、break; inc(i); ProgressBar1.StepBy(1); dbgrid.DataSource.dataset.next; end; progressbar1.Owner.Free; application.ProcessMessages; dbgrid.DataSource.dataset.GotoBookmark(SavePlace); dbgrid.DataSource.dataset.EnableControls; try if copy(FileName,length(FileName)-3,4).xls then FileName:=FileName+.xls;

12、Excel.ActiveWorkbook.SaveAs(FileName,xlNormal, ,False,False); except Excel.Quit; screen.cursor:=crDefault; exit; end; /Excel.Visible := true; Excel.Quit; screen.cursor:=crDefault; Result:= true; end; end.引用是直接引用该函数就可以了ExportToExcel(dbgrid1)以下是原文含ado连接方式的函数,一般我们都用DBGRID中的内容导入到EXCEL中unit U_func;interf

13、ace uses forms,SysUtils,ComCtrls,DBGrids,DB,Dialogs,Messages,Windows,ComObj,Controls,ADODB,StdCtrls,Graphics;function ProgressBarform(max:integer):tProgressBar;function ExportToExcel(dbgrid:tdbgrid):boolean;function queryExportToExcel(queryexport:tadoquery):boolean;implementation/生成一个显示进度条的窗体functio

14、n ProgressBarform(max:integer):tProgressBar; var ProgressBar1:TProgressBar; form:tform; begin application.CreateForm(tform,form); form.Position:=poScreenCenter; form.BorderStyle:=bsnone; form.Height:=30; form.Width:=260; ProgressBar1:=TProgressBar.Create(form); ProgressBar1.Visible:=true; ProgressBa

15、r1.Smooth:=true; ProgressBar1.Max:=max; ProgressBar1.ParentWindow:=form.Handle; ProgressBar1.Height:=20; ProgressBar1.Width:=250; ProgressBar1.Left:=form.Left+5; ProgressBar1.Top:=form.Top+5; ProgressBar1.Step:=1; form.show; result:=ProgressBar1; end;/将DBGRID中的内容导入到EXCEL中function ExportToExcel(dbgri

16、d:tdbgrid):boolean; const xlNormal=-4143; var i,j,k:integer; str,filename:string; excel:OleVariant; SavePlace: TBookmark; savedialog:tsavedialog; ProgressBar1:TProgressBar; begin result:=false; filename:=; if dbgrid.DataSource.DataSet.RecordCount65536 then begin if application.messagebox(需要导出的数据过大,E

17、xcel最大只能容纳65536行,是否还要继续?,询问,mb_yesno+mb_iconquestion)=idno then exit; end; screen.Cursor:=crHourGlass; try excel:=CreateOleObject(Excel.Application); excel.workbooks.add; except screen.cursor:=crDefault; showmessage(无法调用Excel!); exit; end; savedialog:=tsavedialog.Create(nil); savedialog.Filter:=Exce

18、l文件(*.xls)|*.xls; if savedialog.Execute then begin if FileExists(savedialog.FileName) then try if application.messagebox(该文件已经存在,要覆盖吗?,询问,mb_yesno+mb_iconquestion)=idyes then DeleteFile(PChar(savedialog.FileName) else begin Excel.Quit; savedialog.free; screen.cursor:=crDefault; Exit; end; except Exc

19、el.Quit; savedialog.free; screen.cursor:=crDefault; Exit; end; filename:=savedialog.FileName; end; savedialog.free; application.ProcessMessages; if filename= then begin result:=false; Excel.Quit; screen.cursor:=crDefault; exit; end; k:=0; for i:=0 to dbgrid.Columns.count-1 do begin if dbgrid.Columns

20、.Itemsi.Visible then begin /Excel.Columnsk+1.ColumnWidth:=dbgrid.Columns.Itemsi.Title.Column.Width; excel.cells1,k+1:=dbgrid.Columns.Itemsi.Title.Caption; inc(k); end; end; dbgrid.DataSource.DataSet.DisableControls; saveplace:=dbgrid.DataSource.DataSet.GetBookmark; dbgrid.DataSource.dataset.First; i

21、:=2; if dbgrid.DataSource.DataSet.recordcount65536 then ProgressBar1:=ProgressBarform(65536) else ProgressBar1:=ProgressBarform(dbgrid.DataSource.DataSet.recordcount); while not dbgrid.DataSource.dataset.Eof do begin k:=0; for j:=0 to dbgrid.Columns.count-1 do begin if dbgrid.Columns.Itemsj.Visible

22、then begin excel.cellsi,k+1.NumberFormat:=; if not dbgrid.DataSource.dataset.fieldbyname(dbgrid.Columns.Itemsj.FieldName).isnull then begin str := dbgrid.DataSource.dataset.fieldbyname(dbgrid.Columns.Itemsj.FieldName).value; Excel.Cellsi, k + 1 := Str; end; inc(k); end else continue; end; if i=65536

23、 then break; inc(i); ProgressBar1.StepBy(1); dbgrid.DataSource.dataset.next; end; progressbar1.Owner.Free; application.ProcessMessages; dbgrid.DataSource.dataset.GotoBookmark(SavePlace); dbgrid.DataSource.dataset.EnableControls; try if copy(FileName,length(FileName)-3,4).xls then FileName:=FileName+

24、.xls; Excel.ActiveWorkbook.SaveAs(FileName,xlNormal, ,False,False); except Excel.Quit; screen.cursor:=crDefault; exit; end; /Excel.Visible := true; Excel.Quit; screen.cursor:=crDefault; Result:= true; end; /将ADOQUERY的数据集导入到EXCEL中function queryExportToExcel(queryexport:tadoquery):boolean; const xlNor

25、mal=-4143; var i,j,k:integer; str,filename:string; excel:OleVariant; savedialog:tsavedialog; ProgressBar1:TProgressBar; begin result:=false; filename:=; if queryexport.RecordCount65536 then begin if application.messagebox(需要导出的数据过大,Excel最大只能容纳65536行,是否还要继续?,询问,mb_yesno+mb_iconquestion)=idno then exi

26、t; end; screen.Cursor:=crHourGlass; try excel:=CreateOleObject(Excel.Application); excel.workbooks.add; except screen.cursor:=crDefault; showmessage(无法调用Excel!); exit; end; savedialog:=tsavedialog.Create(nil); savedialog.Filter:=Excel文件(*.xls)|*.xls; if savedialog.Execute then begin if FileExists(sa

27、vedialog.FileName) then try if application.messagebox(该文件已经存在,要覆盖吗?,询问,mb_yesno+mb_iconquestion)=idyes then DeleteFile(PChar(savedialog.FileName) else begin Excel.Quit; savedialog.free; screen.cursor:=crDefault; Exit; end; except Excel.Quit; savedialog.free; screen.cursor:=crDefault; Exit; end; file

28、name:=savedialog.FileName; end; savedialog.free; application.ProcessMessages; if filename= then begin result:=false; Excel.Quit; screen.cursor:=crDefault; exit; end; k:=0; for i:=0 to queryexport.FieldCount-1 do begin excel.cells1,k+1:=queryexport.Fieldsi.FieldName; inc(k); end; queryexport.First; i

29、:=2; if queryexport.recordcount65536 then ProgressBar1:=ProgressBarform(65536) else ProgressBar1:=ProgressBarform(queryexport.recordcount); while not queryexport.Eof do begin k:=0; for j:=0 to queryexport.FieldCount-1 do begin excel.cellsi,k+1.NumberFormat:=; if not queryexport.fieldbyname(queryexport.Fieldsj.FieldName).isnull then begin str:=queryexport.fieldbyname(queryexport.Fieldsj.FieldName).AsString; Excel.Cellsi, k + 1 := Str; end; inc(k); end; if i=65536 then break; in

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1