Ver Mensaje Individual
  #2  
Antiguo 03-10-2003
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
Primero: has hecho la pregunta en 3 Foros, por lo que del de Varios la he borrado, cuando leas la solución que te propongo entre otras posibles, convendría que leyeras la Guia de estilo de los Foros en donde se habla de este caso, es decir la pregunta ha de ponerse solamente en un foro:


Pon en el Uses de tu Form ComObj
Y desde una rejilla en donde estás visualizando los datos.

Código:
procedure TfrConFacturas.SpeedButton4Click(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:=DbGrid1.DataSource.DataSet;
         Data.First;
         fila:=1;
         columna:=1;
          excel.Workbooks.Add;

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

           fila:=2;

         //Desengachar controles para agilizar
         DmXxx.Factura.DisableControls;
         DmXxx.HLinalbaF.DisableControls;
         try
           while not(Data.eof) do
            begin

             for columna := 0 to DbGrid1.Columns.Count-1 do
             begin
              if (columna < 4) or (Columna > 19) then
             excel.Cells[fila,columna + 1].Value:=Data.FieldByName(DbGrid1.Columns[columna].FieldName).asString
              else
              excel.Cells[fila,columna + 1].Value:=Data.FieldByName(DbGrid1.Columns[columna].FieldName).asFloat;
             end;
              Data.Next;
              fila:= fila + 1;
            end;
         Except
         ShowMessage('Atención, se produjo un error en la transmisión.');
         end;
         DmXxx.Factura.EnableControls;
         DmXxx.HLinalbaF.EnableControls;

end;

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por marcoszorrilla fecha: 03-10-2003 a las 23:37:45.
Responder Con Cita