Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-02-2015
magmarcelli magmarcelli is offline
Registrado
NULL
 
Registrado: feb 2015
Posts: 9
Poder: 0
magmarcelli Va por buen camino
Thumbs down Exportar un cxGrid a Excel

Hola, me piden exportar los datos que hayan en un cxGrid a Excel pero no se como hacerlo, soy principiante en delphi por lo que no me manejo mucho. Que componentes debo utilizar? si alguien tuviese un ejemplo con código se lo agradecería mucho Saludos.
Responder Con Cita
  #2  
Antiguo 25-02-2015
Avatar de jeremiselxi
jeremiselxi jeremiselxi is offline
Miembro
 
Registrado: ago 2008
Posts: 199
Poder: 16
jeremiselxi Va por buen camino
Cita:
Empezado por magmarcelli Ver Mensaje
Hola, me piden exportar los datos que hayan en un cxGrid a Excel pero no se como hacerlo, soy principiante en delphi por lo que no me manejo mucho. Que componentes debo utilizar? si alguien tuviese un ejemplo con código se lo agradecería mucho Saludos.
Es sencillo.

Supongamos que tu cxgrid se llama DBGrid1 y en ella tienes 3 campos:
No, Nóminas, Cuentas.

Solo tienes que agregar un componente llamado ExcelApplication el cual está en la paleta Servers y en un botón pones este código:


Código Delphi [-]

procedure TForm1.Button1Click(Sender: TObject);
var
  Libro : _WORKBOOK;
  Hoja  : _WORKSHEET;
  i:Integer;
begin
i:=0;
Libro := Excel.Workbooks.Add(Null, 0);
Hoja  := Libro.Sheets[1] as _WORKSHEET;

//titulo
i:=i+1;

Hoja.Range['A'+inttostr(i),'I'+inttostr(i)].Font.Bold := True; //Pone el texto en negrita
Hoja.Cells.Item[i,1]:='No';
Hoja.Cells.Item[i,2]:='Nóminas';
Hoja.Cells.Item[i,3]:='Cuentas';
  with Query1 do
    begin
    first;
      while not EOF Do
        begin
        i:=i+1;
        Hoja.Cells.Item[i,1]:=DBGrid1.Fields[0].AsString;
        Hoja.Cells.Item[i,2]:=DBGrid1.Fields[1].AsString;
        Hoja.Cells.Item[i,3]:=DBGrid1.Fields[2].AsString;
        Next;
   end;//while
end;//with


  Excel.Visible[0] := true;


end;

Si te fijas, en estas lineas se agrega el titulo o nombre de los campos:

Código Delphi [-]
Hoja.Cells.Item[i,1]:='No';
Hoja.Cells.Item[i,2]:='Nóminas';
Hoja.Cells.Item[i,3]:='Cuentas';

y en la siguiente se le pasan los campos que están en el grid a las celdas de excel:


Código Delphi [-]
        
Hoja.Cells.Item[i,1]:=DBGrid1.Fields[0].AsString;
Hoja.Cells.Item[i,2]:=DBGrid1.Fields[1].AsString;
Hoja.Cells.Item[i,3]:=DBGrid1.Fields[2].AsString;

Si tuvieras mas campos solo debes aumentar el número que está dentro de los paréntesis de color rojo:

Código Delphi [-]
Hoja.Cells.Item[i,3]:=DBGrid1.Fields[2].AsString;

Saludos
__________________
Cristo te ama, ven a d él, ya k te espera con los brazos abiertos. Dios te bendiga mucho
Responder Con Cita
  #3  
Antiguo 25-02-2015
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Poder: 16
orodriguezca Va por buen camino
Si el cxGrid es de tipo TcxGrid (los componentes de DevExpress), es aún más sencillo que lo que expone jeremiselxi: Solo tienes que adicionar la unidad cxGridExportLink y en el código colocas lo siguiente

Código Delphi [-]
 

procedure TForm1.Button1Click(Sender: TObject); 
begin   
  ExportGridToExcel('C:\PRUEBA.XLS', CXGRID1); 
end;
Responder Con Cita
  #4  
Antiguo 25-02-2015
magmarcelli magmarcelli is offline
Registrado
NULL
 
Registrado: feb 2015
Posts: 9
Poder: 0
magmarcelli Va por buen camino
Gracias por la ayuda finalmente encontré otra manera de hacerlo la cual comparto a continuación:

Código Delphi [-]
  // Establece las propiedades del cuadro de dialogo.
  SaveDialog.Filter := 'Hoja de Cálculo Excel (*.xls) | *.xls';
  SaveDialog.Title := ' Salvar listado como Hoja de Cálculo Excel';
  // Si el usuario digitó Ok en el cuadro de dialogo.
  if SaveDialog.Execute then
  begin
  // Salva la información en un archivo de Excell.
  ExportGrid4ToExcel(SaveDialog.FileName,cxGrid, False);
  MessageDlg('La información fué salvada en ' + SaveDialog.FileName, mtInformation, [mbOk], 0);
  end;
Responder Con Cita
  #5  
Antiguo 26-02-2015
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Poder: 16
orodriguezca Va por buen camino
Excelentes noticias magmarcelli. Sin embargo hay que tener presente que el método ExportGrid4ToExcel aparece como "deprecated" en la versiones más nuevas. Cito una respuesta del soporte de devexpress:

Cita:
Hi Keila,
Starting with newer versions, we deprecated the ExportGrid4ToExcel method. Instead, add the cxGridExportLink unit to the USES clause and use the ExportGridToExcel method.
For additional information, refer to the "ExportGridToExcel Procedure" help topic
Responder Con Cita
  #6  
Antiguo 26-02-2015
magmarcelli magmarcelli is offline
Registrado
NULL
 
Registrado: feb 2015
Posts: 9
Poder: 0
magmarcelli Va por buen camino
Ahhh si, es correcto lo que mencionas, de hecho con ExportGrid4ToExcel no me funcionó reemplacé esa parte por ExportGridToExcel y funcionó perfecto, me equivoqué al copiar la info. aquí jajajaj. Saludos!!!
Responder Con Cita
  #7  
Antiguo 17-03-2023
Patricio Patricio is offline
Miembro
 
Registrado: jul 2004
Posts: 433
Poder: 20
Patricio Va por buen camino
Gracias jeremiselxi me funciono muy bien tu codigo, para los que lo usen el componente de la paleta servers que agregamos le ponemos el nombre de excel asi funciona el codigo indicado. Gracias
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 raf.rsr Servers 42 08-05-2012 21:35:16
Exportar a Excel jocey Varios 3 06-11-2007 17:15:23
exportar cxGrid a Excel sakuragi Servers 2 18-08-2005 18:18:31
exportar a excel ? Enrique Impresión 2 01-09-2004 01:18:47
Exportar a Excel pruz Varios 8 01-07-2004 16:47:37


La franja horaria es GMT +2. Ahora son las 13:33:03.


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