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.84
2 、安装: DevExQuantumGrid 直接 就 OK ; EhLib 在 Delphi7 的安装稍微啰嗦点,具体步骤参考 或如下步骤:
(1). 将 EhLib 5.2.84 解压缩到目标目录。
(2). 打开 Delphi 7 ,将 EhLib 的 /Delphi7 子目录加到 Delphi 的 Library path 。
( 菜单操作路径为: Tools|Environment Library|Library path)
(3). 将 EhLib 目标安装目录中的 common 和 DataService 子目录的文件移动到 EhLib 的 /Delphi7 子目录中。
(4). 在 Delphi 7 中打开 EhLib70.dpk ,编译,但不要安装。
(5). 在 Delphi 7 中打开 DclEhLib70.dpk ,编译并安装。
(6). 组件面板中出现一个 EhLib 的组件页。
(7). 打开附带的 DEMOS ,编译并运行,测试安装成功。
二、使用 DxDbGrid
1 、窗体拖入 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 即可。
如果增加排序功能, edgoAutoSort(True) 、 edgoLoadAllRecords(True) 、 KeyField (数据库表主键字段)。
如果需要 Footer 汇总,首先设置属性 showSummeryFooter 为 True ,然后选择需要汇总的 dxGridColum 根据需要更改其 summaryFooterType 属性如 cstSum (或 cstAvg ),如需要显示汉字,可设置 SummaryFooterFormat 如(平均年龄= 0.00 )。
导出 Excel 可直接利用 dxDbGrid 的 SaveToXLS 方法,具体代码参考如下:
view plaincopy to clipboardprint?
1. unit Unit1;
2. interface
3. uses
4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
5. Dialogs, ComCtrls, StdCtrls, dxExEdtr, dxCntner, dxTL, dxDBCtrl, dxDBGrid,
6. DB, ADODB, dxDBTLCl, dxGrClms;
7. type
8. TSaveMethod = procedure (const FileName: String; ASaveAll: Boolean) of object;
9. type
10. TForm1 = class(TForm)
11. GroupBox1: TGroupBox;
12. GroupBox2: TGroupBox;
13. dxDBGrid1: TdxDBGrid;
14. ADOConnection1: TADOConnection;
15. ADOQuery1: TADOQuery;
16. DataSource1: TDataSource;
17. dxDBGrid1Column2: TdxDBGridColumn;
18. dxDBGrid1Column1: TdxDBGridMaskColumn;
19. dxDBGrid1Column3: TdxDBGridColumn;
20. dxDBGrid1Column4: TdxDBGridCheckColumn;
21. dxDBGrid1Column5: TdxDBGridDateColumn;
22. dxDBGrid1Column6: TdxDBGridColumn;
23. dxDBGrid1Column7: TdxDBGridColumn;
24. dxDBGrid1Column8: TdxDBGridColumn;
25. Button1: TButton;
26. SaveDialog1: TSaveDialog;
27. procedure Button1Click(Sender: TObject);
28. private
29. procedure Save(ADefaultExt, AFilter, AFileName: String; AMethod: TSaveMethod);
30. public
31. { Public declarations }
32. end;
33. var
34. Form1: TForm1;
35. implementation
36. {$R *.dfm}
37. procedure TForm1.Save(ADefaultExt, AFilter, AFileName: String; AMethod: TSaveMethod);
38. begin
39. with SaveDialog1 do
40. begin
41. DefaultExt := ADefaultExt;
42. Filter := AFilter;
43. FileName := AFileName;
44. if Execute then
45. AMethod(FileName, true);
46. end;
47. end;
48. procedure TForm1.Button1Click(Sender: TObject);
49. begin
50. Save('xls', 'Microsoft Excel 4.0 Worksheet (*.xls)|*.xls', 'ExpGrid.xls', dxDBGrid1.SaveToXLS);
51. end;
52. end.
三、使用 DbGridEh
1 、窗体拖入 DBGridEh1 、 ADOConnection1 、 ADOQuery1 、 DataSource1 、 Button1 、 SaveDialog1 ,然后完成数据的链接及相关控件关联;接下来完成如下图所示的一个表格:
2 、双击 DbgridEh1 ,新增多个 Columns 并使之与数据字段对应, DbgridEh 设计多表头的关键在于 Culumn 属性 Title 的设定,如上表格“编号”、“名称”需要将 Title->Caption 分别设置为“地址 | 编号”、“地址 | 名称”,原来起作用的关键在于“ | ”这个分隔符;当然还需要设置其他的属性, FieldName 对应显示的字段,如果需要 Footer ,则在 Column 的 Footer 属性完成相关设置,如上表格,设置“编号”列的 Footer- 》 Value 为“合计:”, ValueType 为“ fvtStaticText ”;“名称”列的 Footer- 》 FieldName 为“ id ”delphi app ( 此处只是为了将第一列 ID 的和显示在第二列姓名的汇总栏,只为测试没有什么实际意义 ) , ValueType 为“ fvtSum ”。
导出 Excel ,以下导出 Excel 函数代码可以进一步完善,日后再说吧,来活了!发现研究一个东西需要时间,整理研究成果的更长。
view plaincopy to clipboardprint?
1. unit Unit1;
2. interface
3. uses
4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论