Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-01-2014
Kannon Kannon is offline
No confirmado
NULL
 
Registrado: dic 2013
Posts: 14
Poder: 0
Kannon Va por buen camino
Exportar a excel

Podría alguien ayudarme con un poco de código de como exportar el resultado de un DBGrid a excel? He buscado por un ejemplo pero la verdad no lo encuentro. Trabajo en C++ builder XE5 que trae el FastReport. La verdad les agradecería mucho un ejemplo sencillo.
Responder Con Cita
  #2  
Antiguo 13-01-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Mira abajo de esta página.
O usa las búsquedas.
Responder Con Cita
  #3  
Antiguo 23-01-2014
Avatar de juanlaplata
juanlaplata juanlaplata is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Plata, Bs. As. (Argentina)
Posts: 212
Poder: 18
juanlaplata Va por buen camino
Código Delphi [-]

.....

USES ComObj ;

.....

procedure Exportar_Grilla_Excel(FileName:String; Grilla: TDBGrid; ProgressBarXls: TProgressBar);
    procedure ProgressBarInit;
    begin
      ProgressBarXls.Max := Grilla.DataSource.DataSet.RecordCount;
      ProgressBarXls.Position := 0;
      ProgressBarXls.Visible := True;
    end;

var ExcelApp, Libro: Variant;
    Nombre : string;
    fila, i, j :integer;
    PBookmark: TBookmark;
begin

  // destino y nombre de archivo ******
  ForceDirectories(ExtractFilePath(ParamStr(0)) + 'Reportes');
  {Utilizaremos el SaveDialog para definir el nombre del fichero y la ruta donde se guardara el reporte pdf}
  SaveDialog1.Title := 'Exportando Reporte a Excel';
  SaveDialog1.DefaultExt := 'xls';
  SaveDialog1.InitialDir := ExtractFilePath(ParamStr(0)) + 'Reportes';

  SaveDialog1.FileName:= FileName+'.xls';

  SaveDialog1.Filter:='Archivos Excel (*.xls)|*.xls';
  SaveDialog1.FilterIndex:=1;

  try
    SaveDialog1.Execute;
    if (SaveDialog1.FileName<>'') then
      begin
      // Comprobar si existe el component TProgressBar
      if (ProgressBarXls <> nil) then
        ProgressBarInit;

      // Guardar la posición en la DB y desactivar que se mueva el registro
      PBookmark := Grilla.DataSource.DataSet.GetBookmark;
      Grilla.DataSource.DataSet.DisableControls;

      ExcelApp:=CreateOleObject('Excel.Application');

      Nombre:= SaveDialog1.FileName;
      ExcelApp.DisplayAlerts:=false;

      //Comienzo a llenar las celdas

      // crea el archivo
      ExcelApp.WorkBooks.Add();

      // determ. nombre hoja
      ExcelApp.WorkBooks[1].ActiveSheet.Name := FileName;

      // trabajo sobre la hoja
      Libro := ExcelApp.WorkBooks[1].ActiveSheet;

      // horientacion de pagina
      Libro.PageSetup.Orientation := 1;    // 1-vertical; 2-horiz

      // Fila sobre la que esta por escribir
      fila:=1;

      // agregar cabecera de Grilla    ****************************************
      for i:= 0 to Grilla.Columns.Count-1 do
        begin
        Libro.Cells[fila,i+1]:= Grilla.Columns[i].Title.Caption;
        Libro.Cells[fila,i+1].Font.Bold := True;
        Libro.Cells[fila,i+1].font.Size := 12;
        Libro.Cells[fila,i+1].font.Color := clWhite;
        Libro.Cells[fila,i+1].Interior.Color := clGray ;
        Libro.Cells[fila,i+1].HorizontalAlignment := xlcenter ;
        end;

      // Fila siguiente
      inc(fila);

      // Datos Grilla *****************************************
      Grilla.DataSource.DataSet.First;
      for i:= 1 to Grilla.DataSource.DataSet.RecordCount do
        begin
        for j:= 0 to Grilla.Columns.Count-1 do
          begin
          {Libro.Cells[fila,j+1].NumberFormat := '0';
          Libro.Cells[fila,j+1]:= Grilla.Columns[j].Field.DisplayText;}

          case Grilla.Columns[j].Alignment of
            taLeftJustify: Libro.Cells[fila,j+1].HorizontalAlignment := xlLeft;
            taRightJustify: Libro.Cells[fila,j+1].HorizontalAlignment := xlRight;
            taCenter: Libro.Cells[fila,j+1].HorizontalAlignment := xlCenter;
          end;

          case Grilla.Fields[J].DataType of
            ftAutoInc, ftBytes, ftInteger, ftSmallint, ftWord: // Auto o Numérico
              begin
              Libro.Cells[fila,j+1].NumberFormat := '0';
              Libro.Cells[fila, J +1] := Grilla.Fields[J].AsInteger;
              end;

            ftBCD, ftFloat, ftCurrency: // Numérico con decimales
              begin
              Libro.Cells[fila,j+1].NumberFormat := '0.00';
              Libro.Cells[fila, J +1] := Grilla.Fields[J].AsFloat;
              end;

            ftDateTime, ftDate, ftTime: // Fecha y Hora
              begin
              Libro.Cells[fila, J +1] := Grilla.Fields[J].AsDateTime;
              end;

            else // Todo lo demas caracteres
              begin
              Libro.Cells[fila,j+1].NumberFormat := RPad('0', '0', Length(Grilla.Fields[J].AsString));
              Libro.Cells[fila,J+1]:= Grilla.Fields[J].AsString ;
              end;
          end;

          end;

        Grilla.DataSource.DataSet.Next;
        // Fila siguiente
        inc(fila);
        
        // Comprobar si existe el component TProgressBar
        if (ProgressBarXls <> nil) then
          ProgressBarXls.Position := ProgressBarXls.Position +1;
        end;

      // Comprobar si existe el component TProgressBar
      if (ProgressBarXls <> nil) then
        ProgressBarXls.Visible := False;

      // automatizar ancho de columnas
      Libro.Cells.Columns.AutoFit;
      
      // Guarda y cierra el archivo
      Libro.SaveAs(Nombre);
      ExcelApp.Visible := true;

      // posicionar el registro donde estaba
      Grilla.DataSource.DataSet.GotoBookmark(PBookmark);
      Grilla.DataSource.DataSet.FreeBookmark(PBookmark);
      Grilla.DataSource.DataSet.EnableControls;
      end;
    except
    ExcelApp.Quit;

    // Comprobar si existe el component TProgressBar
    if (ProgressBarXls <> nil) then
      ProgressBarXls.Visible := False;
      
    // posicionar el registro donde estaba
    Grilla.DataSource.DataSet.GotoBookmark(PBookmark);
    Grilla.DataSource.DataSet.FreeBookmark(PBookmark);
    Grilla.DataSource.DataSet.EnableControls;

    showmessage('No se pudo crear el Archivo Excel.');
    raise;
    end;
end;
Responder Con Cita
  #4  
Antiguo 27-01-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Kannon,

Cita:
Empezado por Kannon
...¿Como exportar el resultado de un DBGrid a Excel?...
Revisa el siguiente link, los ejemplos están en Delphi pero pueden ser adaptados a C++:
juanlaplata, Excelente ejemplo el del Msg #3

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 27-01-2014 a las 03:22:03.
Responder Con Cita
  #5  
Antiguo 22-06-2016
juanchopebe1993 juanchopebe1993 is offline
Registrado
NULL
 
Registrado: jun 2016
Posts: 3
Poder: 0
juanchopebe1993 Va por buen camino
ayuda por favor

Hola amigo.
como puedo guardar con ruta y nombre el contenido de una celda, y codigo de .cpp gracias por tu ayuda
Responder Con Cita
  #6  
Antiguo 22-06-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por juanchopebe1993 Ver Mensaje
Hola amigo.
como puedo guardar con ruta y nombre el contenido de una celda, y codigo de .cpp gracias por tu ayuda
Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Exportar a Excel ycastilloa86 MS SQL Server 10 13-06-2011 07:41:51
Exportar a excel odrack Varios 3 26-10-2008 05:13:35
exportar a excel alfredo torres SQL 9 08-08-2008 02:11:53
Exportar a Excel jocey Varios 3 06-11-2007 16:15:23
exportar a excel ? Enrique Impresión 2 01-09-2004 00:18:47


La franja horaria es GMT +2. Ahora son las 13:31:34.


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
Copyright 1996-2007 Club Delphi