DxDbGrid与DbGridEh表格使用及导出ExcelWord格式文档下载.docx
- 文档编号:20619865
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:10
- 大小:90.99KB
DxDbGrid与DbGridEh表格使用及导出ExcelWord格式文档下载.docx
《DxDbGrid与DbGridEh表格使用及导出ExcelWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《DxDbGrid与DbGridEh表格使用及导出ExcelWord格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
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:
13.
dxDBGrid1:
TdxDBGrid;
14.
ADOConnection1:
TADOConnection;
15.
ADOQuery1:
TADOQuery;
16.
DataSource1:
TDataSource;
17.
dxDBGrid1Column2:
TdxDBGridColumn;
18.
dxDBGrid1Column1:
TdxDBGridMaskColumn;
19.
dxDBGrid1Column3:
20.
dxDBGrid1Column4:
TdxDBGridCheckColumn;
21.
dxDBGrid1Column5:
TdxDBGridDateColumn;
22.
dxDBGrid1Column6:
23.
dxDBGrid1Column7:
24.
dxDBGrid1Column8:
25.
Button1:
TButton;
26.
SaveDialog1:
TSaveDialog;
27.
Button1Click(Sender:
TObject);
28.
private
29.
Save(ADefaultExt,
AFilter,
AFileName:
AMethod:
TSaveMethod);
30.
public
31.
{
Public
declarations
}
32.
end;
33.var
34.
Form1:
TForm1;
35.implementation
36.{$R
*.dfm}
37.procedure
TForm1.Save(ADefaultExt,
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.
47.end;
48.procedure
TForm1.Button1Click(Sender:
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”(此处只是为了将第一列ID的和显示在第二列姓名的汇总栏,只为测试没有什么实际意义),ValueType为“fvtSum”。
导出Excel,以下导出Excel函数代码可以进一步完善,日后再说吧,来活了!
发现研究一个东西需要时间,整理研究成果的更长。
DBGridEhGrouping,
GridsEh,
DBGridEh,
Grids,
DBGrids,
DBGridEhImpExp,
ComObj,
excel2000,
oleserver
;
9.
DBGridEh1:
TDBGridEh;
Private
ExportToExcel;
21.var
23.implementation
24.{$R
25.procedure
TForm1.ExportToExcel;
26.var
XLApp:
Variant;
Sheet:
s1,
s2:
string;
Caption:
Row,
Col:
integer;
iCount,
jCount:
Integer;
33.
FBookMark:
TBookmark;
35.
36.
TitleName:
37.begin
38.
//如果数据集为空或没有打开则退出
not
DBGridEh1.DataSource.DataSet.Active
Exit;
TSaveDialog.Create(Nil);
SaveDialog1.FileName
TitleName'
+
_'
FormatDateTime('
YYMMDD'
Date);
SaveDialog1.Filter
Excel文件|*.xls'
SaveDialog1.Execute
SaveDialog1.FileName;
SaveDialog1.Free;
47.
Application.ProcessMessages;
48.
Screen.Cursor
crHourGlass;
49.
VarIsEmpty(XLApp)
51.
52.
XLApp.DisplayAlerts
False;
53.
XLApp.Quit;
54.
VarClear(XLApp);
55.
56.
//通过ole创建Excel对象
57.
try
58.
XLApp
CreateOleObject('
Excel.Application'
);
59.
except
60.
MessageDlg('
创建Excel对象失败,请检查你的系统是否正确安装了Excel软件!
mtError,
[mbOk],
0);
61.
crDefault;
62.
63.
64.
65.
//生成工作页
66.
XLApp.WorkBooks.Add[xlWBatWorkSheet];
67.
XLApp.WorkBooks[1].WorkSheets[1].Name
68.
Sheet
XLApp.Workbooks[1].WorkSheets['
];
69.
//写标题
70.
sheet.cells[1,
1]
71.
sheet.range[sheet.cells[1,
1],
DBGridEh1.Columns.Count]].Select;
//选择该列
72.
XLApp.selection.HorizontalAlignment
$FFFFEFF4;
//居中
73.
XLApp.selection.MergeCells
True;
//合并
74.
//写表头
75.
Row
1;
76.
jCount
3;
77.
for
iCount
0
to
DBGridEh1.Columns.Count
-
1
78.
79.
Col
2;
80.
iCount+1;
81.
Caption
DBGridEh1.Columns[iCount].Title.Caption;
82.
while
POS('
|'
Caption)
>
83.
84.
4;
85.
s1
Copy(Caption,
1,
Pos('
Caption)-1);
86.
s2
87.
88.
sheet.range[sheet.cells[Col,
Row-1],sheet.cells[Col,
Row]].Select;
89.
90.
91.
end
92.
else
93.
Sheet.cells[Col,Row]
94.
Copy(Caption,Pos('
Caption)+1,
Length(Caption));
95.
Inc(Col);
96.
s1;
97.
98.
Sheet.cells[Col,
Row]
Caption;
99.
Inc(Row);
100.
101.
//合并表头并居中
102.
4
103.
104.
Sheet.cells[3,
iCount].Value
105.
106.
sheet.range[sheet.cells[2,
iCount],sheet.cells[3,
iCount]].Select;
107.
108.
109.
110.
111.
sheet.cells[3,
iCount].Select;
112.
113.
114.
//读取数据
115.
DBGridEh1.DataSource.DataSet.DisableControls;
116.
FBookMark
DBGridEh1.DataSource.DataSet.GetBookmark;
117.
DBGridEh1.DataSource.DataSet.First;
118.
DBGridEh1.DataSource.DataSet.Eof
119.
120.
121.
Sheet.cells[jCount,
iCount]
DBGridEh1.Columns.Items[iCount-1].Field.AsString;
122.
Inc(jCount);
123.
DBGridEh1.DataSource.DataSet.Next;
124.
125.
DBGridEh1.DataSource.DataSet.BookmarkValid(FBookMark)
126.
DBGridEh1.DataSource.DataSet.GotoBookmark(FBookMark);
127.
DBGridEh1.DataSource.DataSet.EnableControls;
128.
//读取表脚
129.
DBGridEh1.FooterRowCount
130.
131.
DBGridEh1.FooterRowCount-1
132.
133.
DBGridEh1.Columns.Count-1
134.
Col+1]
DBGridEh1.GetFooterValue(Row,DBGridEh1.Columns[Col]);
135.
136.
137.
138.
//调整列宽
139.
140.
Sheet.Columns[iCount].EntireColumn.AutoFit;
141.
1].Select;
142.
XlApp.Workbooks[1].SaveAs
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DxDbGrid DbGridEh 表格 使用 导出 Excel