Ver Mensaje Individual
  #5  
Antiguo 04-07-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Reputación: 10
marcoszorrilla Va por buen camino
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;

    //Poner los títulos
     {for columna := 0 to Reja.Columns.Count-1 do
     begin
     excel.Cells[fila,columna + 1].Value:=Reja.Columns[columna].FieldName;
     end;}

     //solamente hay 6 columnas pongo los nombres a mano
     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;

   //Desengachar controles para agilizar
   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;
      //Ajustar columnas
        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.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita