这里是我的程序中把一个DBGRIDEH中的数据导出EXCEL的程序,我用了很久的,呵呵! ... users ComObj; .... procedure TfmCgrbb.ToolButton1Click(Sender: TObject); var I,J,K :Integer; Sheet:Variant; SheetName:String; begin V:=CreateOleObject('Excel.Application'); V.Visible:=True; V.Workbooks.Add(-4167); SheetName:=FormatDateTime('hhmmss',Time()); V.Workbooks[1].WorkSheets[1].Name:=SheetName; Sheet:=V.Workbooks[1].Worksheets[SheetName]; K:=0; for I:=0 to DBGridEh1.FieldCount-1 do begin if DBGridEh1.Columns[I].Visible then begin Sheet.Cells[1,K+1]:=DBGridEh1.Columns[I].Title.Caption; K:=K+1; end; end; with Query1 do begin First; J:=2; DisableControls; while not eof do begin K:=0; for I:=0 to DBGridEh1.FieldCount-1 do if DBGRidEh1.Columns[I].Visible then begin Sheet.Cells[J,K+1]:=FieldByName(DBGridEh1.Columns[I].FieldName).AsString; K:=K+1; end; Next; J:=J+1; end; EnableControls; end; end;
...
users ComObj;
....
procedure TfmCgrbb.ToolButton1Click(Sender: TObject);
var
I,J,K :Integer;
Sheet:Variant;
SheetName:String;
begin
V:=CreateOleObject('Excel.Application');
V.Visible:=True;
V.Workbooks.Add(-4167);
SheetName:=FormatDateTime('hhmmss',Time());
V.Workbooks[1].WorkSheets[1].Name:=SheetName;
Sheet:=V.Workbooks[1].Worksheets[SheetName];
K:=0;
for I:=0 to DBGridEh1.FieldCount-1 do
begin
if DBGridEh1.Columns[I].Visible then
begin
Sheet.Cells[1,K+1]:=DBGridEh1.Columns[I].Title.Caption;
K:=K+1;
end;
end;
with Query1 do
begin
First;
J:=2;
DisableControls;
while not eof do
begin
K:=0;
for I:=0 to DBGridEh1.FieldCount-1 do
if DBGRidEh1.Columns[I].Visible then
begin
Sheet.Cells[J,K+1]:=FieldByName(DBGridEh1.Columns[I].FieldName).AsString;
K:=K+1;
end;
Next;
J:=J+1;
end;
EnableControls;
end;
end;