请高手请问!有关将信息导出到EXCEL表的代码,小弟看不懂,多谢
请高手请教!有关将信息导出到EXCEL表的代码,小弟看不懂,谢谢!
请高手详细解释一下啊!不胜感激!
//自定义打印表格
procedure Toexcel(query1:Tquery;DBGrid1:TDBGrid);
var
ExcelApp: Variant;
i,j,k:integer;
FileName:string;
DlgSave:TsaveDialog;
Const
Con_stStr= ' ' ' ';
Begin
if query1.Active=false then
begin
Application.MessageBox( '请先执行数据查询 ', '查询 ',32);
exit;
end;
if application.messagebox( '确认输出当前记录到EXCEL表? ', '操作确认 ',mb_okcancel)=idcancel then exit;
DlgSave:=TsaveDialog.Create(nil);
DlgSave.Filter:= '*.xls|*.xls ';
if DlgSave.Execute then
Begin
Filename:=DlgSave.FileName;
ExcelApp := CreateOleObject( 'Excel.Application ' );
ExcelApp.Caption := '查询输出一览表 ';// 'Microsoft Excel ';
ExcelApp.WorkBooks.Add;
ExcelApp.WorkSheets[1].Activate;
K:=1;
For i:=0 To DBGrid1.Columns.Count-1 Do
Begin
if DBGrid1.Columns[i].Visible Then
Begin
ExcelApp.Cells[1,K]:=DBGrid1.Columns[i].Title.Caption;
k:=k+1;
End;{if}
End;{for}
ExcelApp.rows[1].font.name:= '宋体 ';
ExcelApp.rows[1].font.size:=10;
ExcelApp.rows[1].Font.Color:=clBlack;
ExcelApp.rows[1].Font.Bold:=true;
j:=1;
For i:=0 To DBGrid1.Columns.Count-1 Do
Begin
If DBGrid1.Columns[i].Visible Then
Begin
query1.First;
for k:=1 To query1.RecordCount Do
Begin
if DBGrid1.Fields[i]=nil then
ExcelApp.Cells[K+1,j]:= ' '
else
ExcelApp.Cells[K+1,j]:=Con_stStr+DBGrid1.Fields[i].asString;
query1.Next;
End;{for}
j:=j+1;
End;{if}
End;{for}
For i:=1 To query1.recordcount+1 Do
请高手详细解释一下啊!不胜感激!
//自定义打印表格
procedure Toexcel(query1:Tquery;DBGrid1:TDBGrid);
var
ExcelApp: Variant;
i,j,k:integer;
FileName:string;
DlgSave:TsaveDialog;
Const
Con_stStr= ' ' ' ';
Begin
if query1.Active=false then
begin
Application.MessageBox( '请先执行数据查询 ', '查询 ',32);
exit;
end;
if application.messagebox( '确认输出当前记录到EXCEL表? ', '操作确认 ',mb_okcancel)=idcancel then exit;
DlgSave:=TsaveDialog.Create(nil);
DlgSave.Filter:= '*.xls|*.xls ';
if DlgSave.Execute then
Begin
Filename:=DlgSave.FileName;
ExcelApp := CreateOleObject( 'Excel.Application ' );
ExcelApp.Caption := '查询输出一览表 ';// 'Microsoft Excel ';
ExcelApp.WorkBooks.Add;
ExcelApp.WorkSheets[1].Activate;
K:=1;
For i:=0 To DBGrid1.Columns.Count-1 Do
Begin
if DBGrid1.Columns[i].Visible Then
Begin
ExcelApp.Cells[1,K]:=DBGrid1.Columns[i].Title.Caption;
k:=k+1;
End;{if}
End;{for}
ExcelApp.rows[1].font.name:= '宋体 ';
ExcelApp.rows[1].font.size:=10;
ExcelApp.rows[1].Font.Color:=clBlack;
ExcelApp.rows[1].Font.Bold:=true;
j:=1;
For i:=0 To DBGrid1.Columns.Count-1 Do
Begin
If DBGrid1.Columns[i].Visible Then
Begin
query1.First;
for k:=1 To query1.RecordCount Do
Begin
if DBGrid1.Fields[i]=nil then
ExcelApp.Cells[K+1,j]:= ' '
else
ExcelApp.Cells[K+1,j]:=Con_stStr+DBGrid1.Fields[i].asString;
query1.Next;
End;{for}
j:=j+1;
End;{if}
End;{for}
For i:=1 To query1.recordcount+1 Do