Posteado por: jsbsan | 25 Junio 2009

Pasar datos de OpenOffice a Gambas2, utilizando el portapapeles y la orden Split (1/2)

Os traigo una pequeña utilidad con la cual conseguimos que los datos de una hoja de calculo de OpenOffice, los pasemos a un gridviews. Algo que nos facilitara introducir datos, tratar la información de una hoja de cálculo desde un programa, etc….

En fin creo que os sera muy util.

Empezamos con la explicación:

Mediante una subrutina contenida en un módulo (que lo llamaremos OpenOfficeCalcGambas2), haremos que el programa lea el contenido del portapapeles, lo procese (detecte las columnas y filas, y los valores de las celdas) y que los escriba en un gridviews, que lo habremos pasado en la llamada de la subrutina.

Esta es el código:

' Gambas module file
PUBLIC SUB leer(rejilla AS gridview, titulos AS Boolean)
'rejilla: es el gridview donde se van a escribir los datos
'titulos: 0: sin titulo, -1 titulo contiene la 1º fila
DIM lineas AS String[]
DIM linea_procesada AS String
DIM columnas AS String[]
DIM a AS Integer
DIM c AS Integer
DIM cadena AS String
DIM portapapeles AS String
DIM finlinea AS String
DIM fincolumna AS String
finlinea = "\n" ' retorno de carro (separa las filas)
fincolumna = "\t" 'tabulador (separa las colunas)
portapapeles = Clipboard.paste()
lineas = Split(portapapeles, finlinea)
FOR a = 0 TO lineas.count - 1
linea_procesada = lineas[a]
columnas = Split(linea_procesada, fincolumna)
FOR c = 0 TO columnas.count - 1
IF a = 0 AND titulos = -1 THEN
rejilla.Columns[c].title = columnas[c]
ELSE
IF titulos = 0 THEN rejilla[a, c].text = columnas[c]
IF titulos = -1 THEN rejilla[a - 1, c].text = columnas[c]
ENDIF
NEXT 'c
NEXT 'a
END

Con la orden SPLIT, y los For – Next, conseguimos “trocear” el contenido del portapapeles, dividiendolo en filas y en columnas.

El codigo en el formulario principal Fmain seria:
' Gambas class file
PUBLIC SUB Form_Open()
GridView1.rows.count = 50
GridView1.Columns.count = 20
END
PUBLIC SUB leerportapapeles_Click()
DIM titulos AS Boolean
IF CheckBox1.value = -1 THEN
FMain.GridView1.Header = 1
titulos = -1
ELSE
FMain.GridView1.Header = 0
titulos = 0
ENDIF
GridView1.rows.count = 0
GridView1.Columns.count = 0
GridView1.rows.count = 50
GridView1.Columns.count = 20
OpenOfficeCalcGambas2.leer(FMain.GridView1, titulos)
END


Aqui teneis el código completo.

Os adjunto unas capturas de pantalla:
pantalla1_1
pantalla2_2
pantalla3_3
pantalla4_4

Un saludo

Julio


Respuestas

  1. Gracias Julio.
    Es un buen ejemplo.


Dejar una respuesta

Su respuesta:

Categorías