|
|
导航: |
论坛 -> 报表专区
斑竹:sunyesy,iamdream |
|
作者: |
rhot (rbeatles) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2003/10/17 8:53:21 |
标题: |
怎样把delphi生成的报表(QReport)直接生成excel文件 |
浏览:4643 |
|
加入我的收藏 |
楼主: |
我看网上大多是用Delphi通过OLE所控制excel,但我想用我生成的报表(QReport)直接生成excel文件。不知要用到什么控件,请哪位提示一下。如果能对该控件简述一下那就更好了。
----------------------------------------------
- |
作者: |
bios (阿贡) |
★☆☆☆☆ |
-
|
盒子中级会员 |
|
2003/10/17 9:18:03 |
1楼: |
uses Excel2000, {C:\Program Files\Borland\Delphi6\Imports}
OleServer;
procedure TFrmMain.WriteExcel(AdsData: TADODataSet; sName, Title: string); var ExcelApplication1: TExcelApplication; ExcelWorksheet1: TExcelWorksheet; ExcelWorkbook1: TExcelWorkbook; i, j: integer; filename: string; begin filename := concat(extractfilepath(application.exename), sName, '.xls'); try ExcelApplication1 := TExcelApplication.Create(Application); ExcelWorksheet1 := TExcelWorksheet.Create(Application); ExcelWorkbook1 := TExcelWorkbook.Create(Application); ExcelApplication1.Connect; except Application.Messagebox('Excel 没有安装!', 'Hello', MB_ICONERROR + mb_Ok); Abort; end; try ExcelApplication1.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 do begin ExcelWorksheet1.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 do begin for j := 0 to AdsData.Fields.Count - 1 do begin ExcelWorksheet1.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), 'Hello',mb_Ok); finally ExcelApplication1.Disconnect; ExcelApplication1.Quit; ExcelApplication1.Free; ExcelWorksheet1.Free; ExcelWorkbook1.Free; end; end;
procedure Tfrmmain.FormCreate(Sender: TObject); begin WriteExcel(ADODataSet1, 'ergonge','hhh'); end;
----------------------------------------------
|
作者: |
|
2003/10/17 9:46:46 |
2楼: |
肯定要自己写了。或者换用fastreport吧!它自带有各种导出控件。
此帖子包含附件:
大小:7.7K |
----------------------------------------------
实践是检验真理的唯一标准!
|
作者: |
rhot (rbeatles) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2003/10/17 10:09:54 |
2楼: |
你用的是ADO,而我用的是BDE,不过这没关系他们区别不大。
var ExcelApplication1: TExcelApplication; ExcelWorksheet1: TExcelWorksheet; ExcelWorkbook1: TExcelWorkbook; 我想可不可以直接用ExcelApplication,ExcelWorksheet,ExcelWorkbook这三个控件,而不是创造这三个对象。
还有我想用我生成的报表(QReport)直接生成excel文件,虽然里面有一些象QRlabel这样的控件,我可以直接读取他,但还有一些象QRDBText这样的控件好象不好读,不知该怎样。 不过还是要多谢大侠的指点迷津。
----------------------------------------------
-
|
作者: |
|
2003/10/17 10:21:33 |
3楼: |
兄弟,你用delphi自带的F1BOOK控件试一下。俺曾用该控件作过一个数据库的输出报表。其中,预览用的是QReport控件,打印用的是F1Book,效果还可以。遗憾的是F1Book控件的帮助是English。
----------------------------------------------
-
|
作者: |
bryan (bao) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2003/10/17 22:14:32 |
4楼: |
有一个印度姥搞的控件: PsQRFilters 专门提供Quickrep到其它文件类型的转换, 支持以下输出格式 PDF, HTML, RTF, XLS, TXT, JPEG, GIF, BMP, EMF, WMF, 有Delphi和BC的版本,效果相当不错. 不过要花钱买的啊! Web: http://www.pragnaan.com
----------------------------------------------
-
|
作者: |
bios (阿贡) |
★☆☆☆☆ |
-
|
盒子中级会员 |
|
2003/10/17 22:47:59 |
5楼: |
下载,学习,谢谢!
----------------------------------------------
|
|