Me parece muy comodo usar un componente pero este procedimiento tambien te servira...
Código:
procedure excel(EXQuery : TDataSet ;NoCampos :integer);
var
XL, XArr: Variant;
i : Integer;
j : Integer;
begin
EXQuery.First;
XArr:=VarArrayCreate([1,NoCampos],varVariant);
try
XL := GetActiveOleObject('Excel.Application');
except
XL:=CreateOLEObject('Excel.Application'); // Ole object creation
end;
XL.WorkBooks.add;
XL.visible:=true;
j := 2;
i := 0;
while i < NoCampos do
begin
XArr[i+1]:=EXQuery.Fields[i].DisplayLabel;
i := i+1;
EXQuery.Next;
end;
XL.Range['A'+IntToStr(j),
CHR(64+NoCampos)+IntToStr(j)].Value := XArr;
XL.Range['A1',CHR(64+NoCampos)+IntToStr(j)].select;
XL.Selection.Font.Name:='Times New Roman';
XL.Selection.Font.Size:=10;
XL.Selection.Font.color := clblue;
XL.Selection.Font.bold := true;
XL.Selection.Font.underline := true;
j := 3;
EXQuery.First;
while not EXQuery.Eof do begin
i:=1;
while i<=NoCampos do begin
XArr[i] := EXQuery.Fields[i-1].Value;
i := i+1;
end;
XL.Range['A'+IntToStr(j),
CHR(64+NoCampos)+IntToStr(j)].Value := XArr;
EXQuery.Next;
j := j + 1;
end;
XL.Range['A1',CHR(64+NoCampos)+IntToStr(j)].select;
XL.selection.Columns.AutoFit;
XL.Range['A1','A1'].select;
end;
Bueno por lo menos a mi si que me ha servido, espero que a voz tambien