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:




Un saludo
Julio


Gracias Julio.
Es un buen ejemplo.
Por: pinky el 5 Julio 2009
a las 10:29 am