Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Exportar a Excel (https://www.clubdelphi.com/foros/showthread.php?t=50516)

jocey 20-11-2007 20:56:16

Exportar a Excel
 
Hola mis amigos, tengo unn proyecto que trabaja con una base de datos en Access, como puedo desde access, exportar una tabla de esa base de datos a excel

felipe88 21-11-2007 18:52:23

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;

courtois 13-12-2007 21:18:46

La, cuando son muchos datos, forma mas veloz podria ser usando ISAM desde una consulta asi

Código SQL [-]
  SELECT campos INTO [Excel 8.0;DataBase=Archivo.xls].[Hoja] FROM Tabla

Esto te crea a "archivo.xls" con una "hoja" en la cual estan los datos de la consulta hecha

Saludos

_CALI 28-10-2008 22:33:28

Cita:

Empezado por courtois (Mensaje 252509)
La, cuando son muchos datos, forma mas veloz podria ser usando ISAM desde una consulta asi


Código SQL [-]
SELECT campos INTO [Excel 8.0;DataBase=Archivo.xls].[Hoja] FROM Tabla





Esto te crea a "archivo.xls" con una "hoja" en la cual estan los datos de la consulta hecha

Saludos



/// HOLA, PORFAVOR PODRIAS SER MAS ESPECIFICO, ES QUE LA VERDAD ME PARECE MUCHO CODIGO LA RESPUESTA Q AUNQUE ESTE BIEN LA DEL PARTICIPANTE ANTERIOR, EN OTROS PALABRAS DESCRIBE EL PROCEDIMIENTO PARA LOGRAR LO Q DICES


MUCHAS GRACIAS


La franja horaria es GMT +2. Ahora son las 10:28:39.

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