uses Comobj
procedure TForm1.ToExcel(P_DBGridEh2: TDBGridEh; DS: TClientDataSet);
var
ExcelAp, Sheet: Variant;
R, C,i,j,clo,C1:Integer;
title,containaer:string;
begin
try
ExcelAp := CreateOleObject('Excel.Application');
ExcelAp.Workbooks.add();
except
ShowMessage('沒有安裝Excel檔案');
end;
ds.First;
if (ds.Active=False) or (ds.RecordCount<1) then Exit;
try
Sheet:=ExcelAp.workbooks[1].worksheets[1];
for i:=1 to P_DBGridEh2.FieldCount do
begin
for j:=1 to DS.FieldCount do
begin
if P_DBGridEh2.Columns[i-1].FieldName=DS.Fields[j-1].DisplayName then
begin
title:=P_DBGridEh2.Columns[i-1].Title.Caption;
clo:=clo+1;
end
else Continue;
Sheet.cells[1,clo]:=title;
end;
end;
for R:=2 to DS.RecordCount+1 do
begin
C1:=0;
for c:=1 to P_DBGridEh2.FieldCount do
begin
for j:=1 to DS.FieldCount do
begin
if P_DBGridEh2.Columns[c-1].FieldName=ds.Fields[j-1].DisplayName then
begin
containaer:=DS.Fields[j-1].AsString;
C1:=c1+1;
end
else Continue;
if C1=1 then
Sheet.cells[R,C1]:=''''+containaer
else
Sheet.cells[R,C1]:=containaer;
end;
end;
ds.Next;
end;
ExcelAp.Visible:=True;
finally
ExcelAp.Quit;
ExcelAp:=null;
end;
end;