Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-07-2006
zvf zvf is offline
Miembro
 
Registrado: abr 2006
Posts: 158
Poder: 19
zvf Va por buen camino
Exportar de delphi a un libro de exel

HOLA A TODOS!!!

Con delphi, quiero crear un archivo que pueda ser abierto con exel correctamente, dividido por hojas, celdas y demas (claro en donde yo le indique).

Pero, como puedo hacerlo?
Responder Con Cita
  #2  
Antiguo 04-07-2006
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 377
Poder: 19
nemesio Va por buen camino
Revisa este truco:http://www.clubdelphi.com/trucos/ind...ll=0&scrollb=0
Responder Con Cita
  #3  
Antiguo 04-07-2006
zvf zvf is offline
Miembro
 
Registrado: abr 2006
Posts: 158
Poder: 19
zvf Va por buen camino
MUCHAS GRACIAS!!!
Voy a revisarlo, y si tienen alguna otra sugerencia se los agradeceria mucho, porque creo que el truco solo sirve para crear una hoja, no un libro ¿o me equivoco?
Responder Con Cita
  #4  
Antiguo 05-07-2006
zvf zvf is offline
Miembro
 
Registrado: abr 2006
Posts: 158
Poder: 19
zvf Va por buen camino
HOLA!!!!
Estoy checando el truco que me sugeriste, solo que no entiendo algunas partes porque no esta comentado. Lo intento correr y me marca algunos errores como:
- coinitialize y alltrim no esta inicializado
- if pos('/', alltrim(cells[i, linea - 1])) <> 0 then begin //aqui marca que los tipos son incompatibles


Código Delphi [-]
procedure ExportaExcel(pStringGrid : TstringGrid; c0,r0,c1,r1 : Integer);
var ExLin, ExCol, i, Linea, AuxInteger : Integer;
    AuxFloat : Double;
    AuxFecha : tDatetime;
    c : TCursor;
    Excel, ExcelDoc, WS : Variant;
begin
  c             := Screen.Cursor;
  Screen.Cursor := crHourGlass;
  with pStringGrid do begin
    try
      coinitialize(nil);
      Excel         := CreateOleObject('Excel.Application');
      ExcelDoc      := Excel.Workbooks.Add;
      WS            := ExcelDoc.ActiveSheet;
      Excel.Visible := true;
      ExCol         := 0;
      for i := c0 to c1 do begin
        inc(ExCol);
        ws.Cells.Item[1, ExCol]:= cells[i, 0];
      end;
      for linea := r0 to r1 do begin
        inc(ExLin);
        ExCol := 0;
        for i := c0 to c1 do begin
          inc(ExCol);
          try
            try
              if pos('/', alltrim(cells[i, linea - 1])) <> 0 then begin
                AuxFecha := strtodatetime(alltrim(cells[i, linea - 1]));
                ws.Cells.Item[ExLin, ExCol] := AuxFecha;
              end
              else AuxFecha := strtodatetime('GENERA EXCEPCION');
            except
              try
                AuxInteger := strtoint(alltrim(cells[i,linea-1]));
                ws.Cells.Item[ExLin,ExCol]:= AuxInteger;
              except
                try
                  AuxFloat := strtofloat(alltrim(cells[i,linea-1]));
                  ws.Cells.Item[ExLin,ExCol]:= AuxFloat;
                except
                  ws.Cells.Item[ExLin,ExCol]:= cells[i,linea-1];
                end;
              end;
            end;
          except end;
        end;
      end;
      ws.cells.entirecolumn.autofit;
    finally
      screen.Cursor := c;
    end;
  end;
end;


Código Delphi [-]
procedure ExportaExcel (pStringGrid : TstringGrid; c0,r0,c1,r1 : Integer);

Código Delphi [-]
ExportaExcel(StringGrid1, 0, StringGrid1.ColCount-1, 0, StringGrid1.RowCount-1);

No se si lo este mandando llamar bien o me equivoque en algo. O si me falta agregar alguna unit.

GRACIAS POR SU AYUDA!!!!!!!!
Responder Con Cita
  #5  
Antiguo 06-07-2006
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Hola, soy el autor del truco. Te pido disculpas tanto a tí como a todos los del foro y que han podido usar el truco, que seguro que no les ha funcionado. Para que la función coinitialize funcione hay que añadir al uses ActiveX, y la función Alltrim la he quitado ya que es una función propia de mi trabajo y la suelo usar para mis programas, pero básicamente consiste en quitarle todos los espacios que contenga el string que se le pasa por parámetro, tanto a la izquierda, derecha o en cualquier posición del string.

Ya he modificado el truco y espero que ahora os funcione.

Nuevamente pido disculpas por las molestias ocasionadas.

Saludos
Responder Con Cita
  #6  
Antiguo 07-07-2006
aledieb aledieb is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires, Argentina
Posts: 141
Poder: 19
aledieb Va por buen camino
Para reemplazar la función alltrim se puede utilizar la función TRIM de delphi que esta en SysUtils.
__________________
Suerte
Alejandro
Responder Con Cita
  #7  
Antiguo 12-07-2006
zvf zvf is offline
Miembro
 
Registrado: abr 2006
Posts: 158
Poder: 19
zvf Va por buen camino
Gracias a su ayuda, ya tengo claro como exportar los datos a una hoja de exel. Pero me queda una duda:
¿Como puedo decirle en que hoja lo ponga?, es decir si quiero que algunos datos los ponga en la hoja1 y otros en la hoja2 y asi sucesivamente.
Hasta ahorita tengo el siguiente codigo, que solamente me inserta todos los datos del stringGrid en la hoja1.


Código Delphi [-]
procedure TForm1.ExportaExcel(const StringGrid1 : TstringGrid; const c0,r0,c1,r1 : Integer);
var i, Linea : Integer;
    c : TCursor;
    Excel, ExcelDoc, WS : Variant;
begin
  c             := Screen.Cursor;
  Screen.Cursor := crHourGlass;
  with StringGrid1 do begin
    try
      coinitialize(nil);
      Excel         := CreateOleObject('Excel.Application');
      ExcelDoc      := Excel.Workbooks.Add;
      WS            := ExcelDoc.ActiveSheet;
      Excel.Visible := true;
      for linea:=r0 to r1 do begin
       for i := c0 to c1 do begin
        ws.Cells.Item[linea+1, i+1]:= cells[i, linea];
       end;
      end;
      ws.cells.entirecolumn.autofit;
    finally
      screen.Cursor := c;
    end;
  end;
end;

¿Que me faltaria agregarle para lograr lo que quiero?
Responder Con Cita
  #8  
Antiguo 13-07-2006
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
Código Delphi [-]
  ExcelDoc.workbooks[1].worksheets[hoja].Activate;
Donde "hoja" es el número de hoja de excel en el que quieres escribir.

Código Delphi [-]
  ExcelDoc.workbooks[1].worksheets[hoja].name := 'miNombre';
Y así si le quieres cambiar el nombre a la hoja, para que ponga otro en lugar del "hoja1" que pone por defecto.

Última edición por kuan-yiu fecha: 13-07-2006 a las 13:45:04.
Responder Con Cita
  #9  
Antiguo 13-07-2006
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
A ver, que creo que me he liado con los nombres de las variables. Es que yo genero un documento con múltiples hojas y parte del código no es mío, así que me lío un poco.
Código Delphi [-]
  ExcelApp,      // Excel application
  WorkBook,      // Excel workbook
  WorkSheet: Variant ; // Excel sheet in workbook
Código Delphi [-]
  // Inicializo variables.
// ...

  // Creo la instancia de Excel
      try
        ExcelApp := CreateOLEObject('Excel.Application') ;
      except
        MessageDLG('Imposible iniciar Excel',mtError,[mbOK],0) ;
        Raise ;
      end ;
      {$IFDEF IAMDEBUGGING}
      ExcelApp.Visible := True ;
      {$ENDIF}
      ExcelApp.WorkBooks.Add;

  // Ahora le añado tantas hojas como necesite.
// ...

  // Esto va dentro de un bucle porque proceso cada hoja de forma consecutiva
          ExcelApp.workbooks[1].worksheets[hoja].Activate;
          ExcelApp.workbooks[1].worksheets[hoja].name := nombre;
          WorkBook := ExcelApp.ActiveWorkBook ;   // Get the active workbook
          WorkSheet := WorkBook.ActiveSheet;      // Get the active sheet

  // Ahora relleno la hoja actual e incremento los contadores.
// ...
Responder Con Cita
  #10  
Antiguo 13-07-2006
zvf zvf is offline
Miembro
 
Registrado: abr 2006
Posts: 158
Poder: 19
zvf Va por buen camino
Muchas gracias por tu ayuda!!!

Voy a probarlo y les vuelvo a molestar con mis dudas por aqui al rato.

GRACIAS POR SU TIEMPO!!!!!!!!
Responder Con Cita
  #11  
Antiguo 13-07-2006
zvf zvf is offline
Miembro
 
Registrado: abr 2006
Posts: 158
Poder: 19
zvf Va por buen camino
GRACIAS, GRACIAS, GRACIAS !!!!

Ya lo probe y funciona de maravilla, gracias por su tiempo y por compartir sus conocimientos.

Gracias a todos!!!
Responder Con Cita
  #12  
Antiguo 13-07-2006
zvf zvf is offline
Miembro
 
Registrado: abr 2006
Posts: 158
Poder: 19
zvf Va por buen camino
Por último, en donde puedo encontrar documentacion sobre los metodos, funciones y propiedades que se utilizan para abrir y trabajar con documentos en excel?

Gracias !!!
Responder Con Cita
  #13  
Antiguo 13-07-2006
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
Cita:
Empezado por zvf
Por último, en donde puedo encontrar documentacion sobre los metodos, funciones y propiedades que se utilizan para abrir y trabajar con documentos en excel?
¿?... Si te refieres para hacerlo desde Delphi puedes buscar en este mismo foro, hay varios mensajes en los que se referencian una serie de páginas que a mi me resultaron muy útiles.
Si te refieres al uso de excel puedes encontrarlo en casi cualquier biblioteca pública
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
Libro de delphi 7.0 lopezlu Varios 1 06-01-2006 21:04:41
Libro de delphi 5 BEHELIT Varios 5 23-11-2005 16:23:12
exportar de exel a mysql ¡¡ alachaise Servers 2 11-11-2004 21:18:23
Libro Delphi VRO Varios 5 12-07-2004 20:34:48
¿Qué libro es mejor para Delphi 6? jesus Varios 2 19-08-2003 22:05:03


La franja horaria es GMT +2. Ahora son las 16:14:19.


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