Esto lo hice la semana pasada, aquí tienes otro ejemplo:
Código Delphi
[-]
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids, ExtCtrls, StdCtrls, Buttons, DBCtrls, ComCtrls, Db, ComObj;
...........
procedure TfrConReguRegional.SpToExcelClick(Sender: TObject);
var
excel:Variant;
fila,columna:Integer;
Data : TDataSet;
MyDataSet:TDataSet;
begin
try
excel:=CreateOleObject('Excel.Application');
except
ShowMessage('Excel no se pudo iniciar.');
exit;
end;
excel.Visible:=true;
Data:=Reja.DataSource.DataSet;
Data.First;
fila:=1;
columna:=1;
excel.Workbooks.Add;
excel.Cells[fila, 1].Value:='Orden';
excel.Cells[fila, 2].Value:='Licencia';
excel.Cells[fila, 3].Value:='Columna3';
excel.Cells[fila, 4].Value:='Club';
excel.Cells[fila, 5].Value:='Columna4';
excel.Cells[fila, 6].Value:='Puntos';
fila:=2;
DmPal.DatPal.DisableControls;
try
while not(Data.eof) do
begin
for columna := 0 to Reja.Columns.Count-1 do
begin
if columna < 4 then
Excel.Cells[fila,columna + 1].Value:=Data.FieldByName(Reja.Columns[Columna].FieldName).AsString;
if columna > 3 then
begin
excel.Cells[fila,columna + 1].Value:=Data.FieldByName(Reja.Columns[columna].FieldName).AsFloat;
excel.Cells[fila,columna + 1].NumberFormat:= ',0.00';
end;
end;
Data.Next;
fila:= fila + 1;
end;
for columna:=1 to 11 do
begin
Excel.Columns[Columna].EntireColumn.AutoFit;
end;
Except
ShowMessage('Atención, se produjo un error en la transmisión.');
end;
DmPal.DatPal.EnableControls;
end;
Un Saludo.