Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Pastear Un Gridview A Una Hoja De Cálculo
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Pastear Un Gridview A Una Hoja De Cálculo 
 
Como bien dice el título se trata de crear un procedimiento que sirva para pastear un gridview en una hoja de cálculo.

Las hojas de cálculo utilizan para separar una celda de otra el caracter TAB que en gambas se correponde con gb.tab chr(9)
En microsoft para separar unas filas de otras se utiliza CRLF que corresponde a gb.tab + key.enter.
En Unix/Linux para separar unas filas de otras se utiliza LF que corresponde a gb.newline chr(10)

Adaptar esta rutina a vuestro caso según necesiteis.

Doy por creado un gridview al que llamaré gd
Creo un botón al que le asigno este código:

Sub Boton_click()
 'declarar variables
 DIM Grid AS String, fila AS Integer, Columna AS Integer
 DIM, MaxFilas AS Integer, MaxColumnas AS Integer
 


Inicializar valores
  MaxColumnas = gd.columns.count - 1 '---> número de columnas de gd
  Maxfilas = gd.Rows.count - 1 '---> número de filas de gd
 

copiar el encabezado horizontal de gd
  FOR columna = 0 TO MaxColumnas '---> para cada columna
    Grid &= gd.Columns[columna].text  '---> poner el encabezado de columna
    IF columna < MaxColumnas THEN
      Grid &= gb.Tab '---> añadir un TAB si no es la última columna
    ELSE
      Grid &= gb.NewLine '---> añadir un LF si es la última columna
    ENDIF
  NEXT  


copiar datos
  FOR fila = 0 TO Maxfilas '---> para cada fila
    FOR columna = 0 TO MaxColumnas '---> para cada columna
      grid &= gd[fila, columna].Text  ' copiar el valor de la celda
      IF columna < MaxColumnas THEN
        Grid &= gb.Tab '---> añadir un TAB si no es la última columna
      ELSE
        Grid &= gb.NewLine '---> añadir un LF si es la última columna
      ENDIF
    NEXT
  NEXT


Todo queda almacenado en un string llamado grid que envío al portapapeles
'Pasar el resultado al portapapeles.
  Clipboard.Copy(Grid)
end


Ahora os vais a gnumeric o la que sea y le haceis un paste en la celda donde quereis que quede la esquina superior izquierda de vuestro grid.  En el caso de gnumeric sale un asistente al que solo habrá que aceptar. En otros casos ni eso.
 
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Pastear Un Gridview A Una Hoja De Cálculo 
 
Está bien

Yo lo hago diferente, es decir, no copio y pego, directamente exporto el contenido del GridView a un fichero csv:

PUBLIC SUB btnPrintCSV_Click()
    DIM i, j, k AS Integer
    DIM s AS String
    DIM fic AS File
    DIM path AS String = Temp & ".csv"    
    s &= "\"\","
    FOR k = 0 TO global.getBandas().Count - 1            ' una funcion que devuelve los
        s &= "\"" & global.getBandas()[k] & "\","        ' textos de cabeceras
    NEXT
    FOR i = 0 TO gv.Rows.Count - 1                       ' bucle que obtiene filas
        s &= "\n"
        FOR j = 0 TO gv.Columns.Count - 1                ' bucle anidado que obtiene el contenido
            s &= "\"" & gv[i, j].Text & "\","            ' de cada celda
        NEXT
    NEXT
    OPEN path FOR WRITE CREATE AS #fic
    PRINT #fic, s                                        ' creo e imprimo un fichero temporal
    CLOSE #fic
    'Desktop.Open(path)
    SHELL "ooffice -calc " & path                        ' lo abro con oo (me sale asistente de
    CATCH                                                ' para importar
        Message.Error(Error.Text & "\n" & Error.Where)    
END


Lo que hago es recorrer todas las celdas de cada fila, extrayendo el texto y formateándolo en el clásico csv, campos entrecomillados separados por comas.

Por si le sirve a alguien
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Error En El Codigo:Re: Pastear Un Gridview A Una Hoja De Cálculo 
 
Jguardon: me da error tu codigo, lo podias revisar?
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Pastear Un Gridview A Una Hoja De Cálculo 
 
¿Qué error te da y dónde?

Lo único que he cambiado es
 DIM path AS String = Temp$ & ".csv"

por:

 DIM path AS String = Temp & ".csv", es decir, he quitado el símbolo $ al Temp porque el resaltado de sintaxis estaba funcionando mal y me introducía unos caracteres raros justo antes. (Miraré eso también).

También hay una llamada a una función que no está declarada en el fragmento de código expuesto, pero que no es más que un array que contiene los strings para las cabeceras.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Pastear Un Gridview A Una Hoja De Cálculo 
 
Voy a probar ha hacerlo yo. con los dos ejemplos supongo que no tendré problema. Pero tenia una duda, un csv lo pueden abrir desde el office de windows? es porque la mayoria de los clientes es muy probable que tengan el office de MS.

---------
Editado
..........


Creo que el error esta en " FOR k = 0 TO global.getBandas().Count - 1   " a mi me salta un error aqui que pone como que global no esta identificado...
 




===================
Hay dos cosas infinitas: el Universo y la estupidez humana. Y del Universo no estoy seguro.
Albert Einstein

En el SEXO querer es poder, si ELLA quiere, TU puedes.
Cubel!
 
última edición por Cubel el Lunes, 05 Abril 2010, 14:55; editado 2 veces 
Cubel - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Pastear Un Gridview A Una Hoja De Cálculo 
 
Jaja... claro! Eso es un fragmento de código de una aplicación, por lo tanto "global" es un módulo y .getBandas() es una función que devuelve un String[] (array de cadenas), que representan los encabezados del gridview.

Sustituye eso por tu propio array, por ejemplo:

DIM myArr AS NEW String[]

myArr = ["Mi cabecera1", "Mi cabecera2", "Mi cabeceraN"]

' y en el bucle:

 FOR k = 0 TO myArr.Count - 1

'....

 


Respecto al formato CSV, sí se puede importar a MSOffice, pero importar, no es que se vaya a abrir directamente.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje S &= "\"\"," Re: Pastear Un Gridview A Una Hoja De Cálculo 
 
Creo que el error es que cuando pones "\\," el codigo resaltado lo traduce en "\"\"," y tambien pasa con "\" que lo convierte en "\""

Por ejemplo:  cuando pones

s&="\" & gv[i,j].Text & "\,"

el codigo resaltado lo traduce en:

s &=  "\"" &  gv[i, j].Text & "\","  


Y tambien pasa en:

s & ="\\,"

el codigo resaltado lo traduce en:

s &=  "\"\","


 ¿puede ser esto?
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Lunes, 05 Abril 2010, 22:35; editado 3 veces 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Pastear Un Gridview A Una Hoja De Cálculo 
 
No, eso no es. La sintaxis es correcta, lo que pasa es que para poder imprimir las dobles comillas, debes de escaparlo antes con la barra invertida.

No puedes hacer esto para representar dobles comillas (ni simples):

ejemplo_cadena = " " "

ejemplo_cadena = " ' "

Tienes que hacerlo así:

ejemplo_cadena = " \" "

ejemplo_cadena = " \' "

Busca el error por otra parte, aunque como no dices el error que te da ni en qué línea, no podemos ayudarte mucho más.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Pastear Un Gridview A Una Hoja De Cálculo 
 
En la consola de gambas2 me da el siguiente error:

sh: ooffice: not found

¿tengo mal instalado el openoffice?
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Pastear Un Gridview A Una Hoja De Cálculo 
 
Parece que el SHELL no encuentra la ruta al ejecutable de OpenOffice.

Ideas para probar:

1) ¿Ejecutaste OpenOffice desde consola?,¿Funciona?

2) Ejecuta en la consola:
Citar:
locate ooffice
y revisa que las rutas estén correctas. En mi equipo con UBUNTU 9.10 - OpenOffice 3.1 son:
/etc/bash_completion.d/ooffice.sh
/usr/bin/ooffice
 


Saludos
 



 
última edición por abarzuaf el Jueves, 08 Abril 2010, 22:52; editado 3 veces 
abarzuaf - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Cálculo Del Dígito De Control De Las Cue... shordi Aplicaciones/Fragmentos de Código 0 Miercoles, 30 Junio 2010, 11:12 Ver último mensaje
shordi
No hay nuevos mensajes Cómo Poder Hacer Cálculo Que Indique Añ... kike1965 General 17 Lunes, 09 Noviembre 2015, 13:34 Ver último mensaje
kike1965
No hay nuevos mensajes El Cálculo De La Media. portaro Aplicaciones/Fragmentos de Código 3 Miercoles, 17 Enero 2018, 23:37 Ver último mensaje
portaro
No hay nuevos mensajes Hoja De Ruta tercoIDE Proyecto gauchoCAD 0 Martes, 05 May 2020, 15:51 Ver último mensaje
tercoIDE
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron