Ver Mensaje Individual
  #2  
Antiguo 21-11-2007
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Reputación: 19
felipe88 Va por buen camino
Prueba esto a ver si es lo que buscas


Código Delphi [-]
procedure ExportarExcel( DataSet:TDataSet ; cNomArchivo: string);
var
  Excel: variant;      // Aplicación Excel
  Libro: variant;      // Libro de trabajo
  Hoja: variant;       // Hoja de cálculo
  fila, columna, campo: integer;
  marca: string;
begin
  Application. CreateForm( Tform, form) ;
  With form do
  try
        Show;
        Screen.Cursor := crHourGlass;
        // Creamos el objeto de automatización OLE
        try
          Excel := CreateOleObject( 'Excel.Application');
          try
            Excel.visible := False;
            // Creamos un nuevo libro de trabajo
            Excel.SheetsInNewWo rkbook := 1;
            Libro := Excel.WorkBooks. Add;
            // Obtenemos una referencia a la página del libro
            Hoja := Libro.WorkSheets[ 1];
            with DataSet do begin
              // Recorremos los campos para poner sus nombres como
              // encabezado en la primera fila
              fila := 1;
              columna := 1;
              for campo := 0 to FieldCount - 1 do
                with Fields[campo] do
                  begin
                     if Visible then begin // Sólo se incluyen los campos visibles
                       Hoja.Cells[fila, columna] := DisplayName;
                       Inc(columna) ;
                     end;
                  end;
              Hoja.Rows[fila] .Font.Bold := True;
              Screen.Cursor := crHourglass;   // cambio a reloj arena
              DisableControls;
              try
                Marca:= Dataset.Bookmark;  // guardo donde estaba el dataset
                First;
                // Recorremos los registros del dataset
                while not Eof do begin
                  Inc(fila);     // Cada registro va en una nueva fila
                  columna := 1;
                  // Recorremos los campos para ir llenando las celdas de la fila
                  for campo := 0 to FieldCount - 1 do
                    with Fields[campo] do begin
                      if Visible then begin // Sólo se incluyen los campos visibles
                        if not IsNull then  // Si el valor es nulo, no lo asignamos
                          if DataType = ftString then
                            Hoja.Cells[fila, columna] := '''' + AsString
                          else
                            try
                              Hoja.Cells[fila, columna] := Value;
                            except
                              Hoja.Cells[fila, columna] := DisplayText;
                            end;
                        Inc(columna) ;
                      end;
                    end;
                  Next; // Avanzamos al siguiente registro
                end;
              finally
                Dataset.Bookmark := Marca;  // dejo el dataset donde estaba
                EnableControls;
              end;
            end;
          finally
            try Hoja.Cells.Columns. AutoFit; except end;  // Autoajuste
            Excel.Visible :== True; // Mostramos el Excel
            // Grabamos el archivo
            Libro.saveas( cNomArchivo) ;
            Excel.quit ;
            Screen.Cursor := crDefault;
          end;
        except
           Application. MessageBox( 'Excel no se encuentra instalado en este equipo, no se puede exportar','Error' ,mb_OK + mb_IconExclamation) ;
        end;
  finally
        Free;
  end;
end;
__________________
Web

Última edición por marcoszorrilla fecha: 13-12-2007 a las 21:21:37. Razón: Etiquetas Delphi
Responder Con Cita