Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-08-2008
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool Agregar datos en una hoja de excel donde la fila inicial puede variar

Hola a todos
Despues de buscar en el foro sobre exportacion de datos a excel, no encontre nada que me sirva para lo que busco.

El caso es que quiero exportar para excel los datos de una tabla, que se diferencian por un campo boolean.
En excel serian dos tablas en la misma hoja, los verdaderos primero y mas abajo los falsos.

Para exportar los datos a excel tendria que comenzar a insertar los verdaderos a partir de la fila 3 (que es donde comienza la tabla), pero los falsos tengo que insertarlos a partir de 6 filas mas abajo de donde terminan los verdaderos (estas 6 filas corresponden al encabezado de la segunda tabla)

El problema está en como determinar donde comenzar a insertar los datos de la segunda tabla.
Hay alguna función que me devuelva el numero de la fila donde esta un dato determinado?
O de que forma puedo hacerlo?
Responder Con Cita
  #2  
Antiguo 19-08-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola Jose Caceres, no dices como estas exportando a excel, digamos que estas utilizando los componentes de la paleta Server, ExcelApplication, un ExcelWorkBook y un WorkSheet.

En tu consulta lo ordenas por campo Bolean que dices, cosa que salga primero todos los verdaderos y luego todos los falsos. En el codigo puedes utilizar una banderita para incrementar el numero de filas cuando llegues a los falsos.

Código Delphi [-]
var
 Fila : Integer;
 banderita : Boolean;
begin
 Fila := 3; //Para comenzar en la fila 3
 ExcelApplication1.Connect;
 ExcelApplication1.Visible[0] := True;
 ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));
 ExcelWorksheet1.ConnectTo(ExcelApplication1.Sheets[1] as _WorkSheet);
 
 banderita := False; //Inicializamos nuestra banderita
 Query1.First;
 While Not Query1.Eof do
  begin
   With ExcelWorksheet1.Cells do
    begin
     //Si hemos llegado a los Falsos, incrementamos nuestra fila 
     if (Query1.FieldByName('campo').AsBoolean = False) and (Not banderita) then
      begin
       Fila := Fila+6;
       banderita := True;
      end;
     Item[Fila,1].Value := Query1.FieldByName('campo1').AsString;
     Item[Fila,2].Value := Query1.FieldByName('campo2').AsString;
     Item[Fila,3].Value := Query1.FieldByName('campo3').AsString;
     Inc(Fila);
     Query1.Next;
    end;
  end;//While
 
  ExcelWorksheet1.Disconnect;
  ExcelWorkbook1.Disconnect;
  ExcelApplication1.Disconnect;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 19-08-2008 a las 14:39:20.
Responder Con Cita
  #3  
Antiguo 19-08-2008
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Gracias Caro, parece que con ese codigo voy a solucionar mi pregunta
Pero yo estaba usando la exportacion por OLE, porque no domino muy bien los componentes de la paleta servers, aunque se que es mas facil y mas eficiente.
Voy a hacerlo con la paleta servers como me dices, pero hay un detalle.
Segun el codigo parece que lo que abre es una hoja en blanco, pero a donde voy a exportar es a una hoja que ya esta creada, es decir, es como exportar para una plantilla en excel.
Lo que quiero saber es como abrir el documento de excel donde escribire los datos, donde es que va el nombre del libro de excel?

Es en esta linea

Código Delphi [-]
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));

En lugar de EmptyParam puedo poner una cadena con el nombre y ruta del archivo xls?
Responder Con Cita
  #4  
Antiguo 20-08-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola de nuevo Jose Caseres, para añadir sobre un archivo existe tendrías que utilizar la función Open. Justamente en vez de la linea de codigo que me indicas, colocas esta otra:

Código Delphi [-]
 FileName := 'c:\documentos\archivo.xls';
 .........
 ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Open(FileName,EmptyParam,
        EmptyParam,EmptyParam,EmptyParam,
        EmptyParam,EmptyParam,EmptyParam,
        EmptyParam,EmptyParam,EmptyParam,
        EmptyParam,EmptyParam,0));

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #5  
Antiguo 21-08-2008
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool Y sigo para aprender a usar Excel con Delphi

Muchas gracias Caro por tu ayuda

Ahora lo que necesito saber es:
- Como insertar una fila
- Como cambiarme de hoja
(Esto lo hago así, donde # es el número de la hoja, pero tal vez sea de otra forma mejor o mas eficiente)

Código Delphi [-]
  ExcelSheet.ConnectTo(ExcelApp.Sheets[#] as _WorkSheet);
  ExcelSheet.Activate;
- Como "Guardar como...", Para que cuando llene los datos, no se me modifique la plantilla

En el foro he encontrado algo sobre insertar fila, pero todo es mediante OLE (CreateOLEObject), no por los componentes, y no me sirve, o al menos no se usarlo combinado con los componentes.

Disculpa tantas preguntas, pero es que es la primera vez que trabajo con la paleta Servers y con excel

Por cierto, tendras algun manual o ayuda sobre estos componentes para trabajar con Excel?

PD:
En estos dias tuve dificultad para entrar al foro, El sitio tenia problemas o seria mi conexion?

Última edición por JoAnCa fecha: 21-08-2008 a las 16:20:02.
Responder Con Cita
  #6  
Antiguo 21-08-2008
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Hola de nuevo
Caro
Para abrir el libro puse lo que me dijiste y me da el error 60, Not enough actual parameters

Código Delphi [-]
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Open(FileName,EmptyParam,
        EmptyParam,EmptyParam,EmptyParam,
        EmptyParam,EmptyParam,EmptyParam,
        EmptyParam,EmptyParam,EmptyParam,
        EmptyParam,EmptyParam,0));

Que parametro faltaria por poner?

Última edición por JoAnCa fecha: 21-08-2008 a las 17:27:53.
Responder Con Cita
  #7  
Antiguo 21-08-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola de nuevo Jose

Para añadir una fila:

Código Delphi [-]
 //Te añadira una nueva fila en la fila 10
 ExcelWorksheet1.Range['A10','A10'].EntireRow.Insert(xlShiftDown);

Para cambiarte de hoja o sheet, tienes que conectarte nuevamente de la forma que indicas, cambiando el numero de hoja.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #8  
Antiguo 21-08-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Jose Caceres Ver Mensaje
Que parametro faltaria por poner?
Con esa cantidad de parametros no me da error, cuenta cuantos parametros tiene tu Open. Y segun a ello añades o disminuyes EmptyParam, yo no he utilizado esos parametros es por ello que le paso EmptyParam.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #9  
Antiguo 21-08-2008
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool

Cita:
Empezado por Caro Ver Mensaje
... cuenta cuantos parametros tiene tu Open. Y segun a ello añades o disminuyes EmptyParam
Me faltaban dos parametros, se los puse y todo salio bien
Muchas gracias por tu ayuda, ya me funciona la exportacion a excel como yo queria, todo bien

Y con respecto a algun manual o ayuda sobre los componentes de la Paleta Servers (Especificamente Excel), sabes de alguno

Saludos

Última edición por JoAnCa fecha: 21-08-2008 a las 21:00:27.
Responder Con Cita
  #10  
Antiguo 22-08-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Jose Caceres Ver Mensaje
Y con respecto a algun manual o ayuda sobre los componentes de la Paleta Servers (Especificamente Excel), sabes de alguno
Nose de ninguno Jose, las pocas cosas que he hecho sobre esta paleta, ha sido probando algunas de funciones, propiedades que tienen sus componentes.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
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
Cómo insertar datos en la segunda hoja de excel Viky Servers 4 19-05-2011 20:02:38
Importar datos de hoja de calculo excel a firebird 1.5 day_eli Conexión con bases de datos 1 07-02-2007 20:02:28
Como pasar datos de una hoja de Excel a Bases de Datos de Paradox Goyo OOP 1 06-02-2007 01:57:20
Hoja Excel via web Nbull Varios 0 02-02-2006 11:11:36
Exportar datos de una hoja en excel a una tabla paradox vick Conexión con bases de datos 3 29-11-2005 20:22:47


La franja horaria es GMT +2. Ahora son las 14:58:05.


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