Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   Exportar a Excel de forma sencilla, sin componentes (https://www.clubdelphi.com/foros/showthread.php?t=80782)

dandia28 08-01-2007 19:49:55

Exportar a Excel de forma sencilla, sin componentes
 
Es una función que recibe por parametros un dataset y un nombre de archivo:

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( TfrmAnimacion, frmAnimacion) ;
  With frmAnimacion do
  try
        Show;
        Screen.Cursor := crHourGlass;
        // Creamos el objeto de automatizació n OLE
        try
          Excel := CreateOleObject( 'Excel.Applicati on');
          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;
Saludos, Daniel de Uruguay


DarKraZY 08-01-2007 19:49:56

¿Podrías poner el código con etiquetas? Así se vería mejor el código, gracias!

Chogo 16-02-2007 17:20:40

Bueno Dandia28!

En mi opinion personal no creo que esto sea mas sensillo que instalar un control.

Puedo recomendar los controles Firesoft Export Suite, que Exportan en TXT, DBF, XLS, WK1 y HTML. Para complicarse inventando la rueda. ahora si quieren aprender como a hacerlo de cero, tambien encontraran el codigo.

Entra en http://www.delphi.com.ar/ y busca el link de componentes.



dandia28 20-04-2007 01:48:26

Es cierto ese componente es interesante! yo lo descubri despues de haber publicado mi truco... pero bueno fue antes de saber de este componente, la idea era compartir el mismo!

bye.

Palmiro 09-04-2008 14:25:52

Maravillos el truco, me fue muy útil...
Muchas gracias...

Arturo Ocampo 05-06-2008 21:13:42

Excelente Truco. Muy Util. Muchas Gracias


La franja horaria es GMT +2. Ahora son las 06:45:52.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi