|
Página 1 de 2
|
Pastear Un Gridview A Una Hoja De Cálculo
Autor |
Mensaje |
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
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:
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.
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.
|
#1 Lunes, 28 Septiembre 2009, 00:13 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
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"
|
#2 Miercoles, 30 Septiembre 2009, 11:51 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Error En El Codigo:Re: Pastear Un Gridview A Una Hoja De Cálculo
Jguardon: me da error tu codigo, lo podias revisar?
|
#3 Domingo, 04 Abril 2010, 14:31 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
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"
|
#4 Domingo, 04 Abril 2010, 15:18 |
|
|
Cubel
Técnico Programador
Registrado: Enero 2010
Mensajes: 182
Edad: 35 Ubicación: Valencia - España
|
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
|
#5 Lunes, 05 Abril 2010, 13:57 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
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"
|
#6 Lunes, 05 Abril 2010, 18:09 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
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?
última edición por jsbsan el Lunes, 05 Abril 2010, 22:35; editado 3 veces
|
#7 Lunes, 05 Abril 2010, 22:30 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
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"
|
#8 Martes, 06 Abril 2010, 12:34 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
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?
|
#9 Jueves, 08 Abril 2010, 22:18 |
|
|
abarzuaf
Ingeniero Programador
Registrado: Octobre 2009
Mensajes: 265
Edad: 54 Ubicación:
|
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
|
#10 Jueves, 08 Abril 2010, 22:50 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
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
|
|
|
|
|