[Gvsig_usuarios] Clases de OpenOffice desde el modulo scripting

Javier Galán javiergalans en gmail.com
Mar Jun 2 07:08:54 CEST 2015


Muchisimas gracias  los dos.

Ahora tengo otro par de caminos que seguir.

La solucion de oscar me parece  más sencilla. Porq eu de momento con buscar
y sustituir cadenas me sera suficiente.


Un saludo.
Javier

El 1 de junio de 2015, 19:30, Óscar Martínez <masquesig en gmail.com> escribió:

> Buenas,
>
> Te explico un pequeño intento que he realizado, no se si te valdrá esta
> forma.
>
> Ha sido utilizando la librería jOpenDocument. Me he descargado, el .jar
> de la web: http://www.jopendocument.org/downloads.html
>
> Aquí es donde alguno me podrá corregir y se puede importar el jar (no
> recuerdo ahora la forma perfecta de hacerlo el import, ya se mirará pero
> mientras esto funciona). Pero he descomprimido el jar en la carpeta:
> C:\Users\Oscar\gvSIG\plugins\org.gvsig.scripting.app.extension\lib
> dejandolo de nombre /joo/ y dentro todo el contenido del jar.
>
> Ahora nos vamos a Jython y podemos realizar un import joo que nos
> importará todo el contenido de la carpeta, permitiendonos trabajar con
> jopendocument. La Api la podemos encontrar en
> http://www.jopendocument.org/docs/
>
> Adaptando el código a Jython de los ejemplos sobre Modificar una
> SpreadSheet http://www.jopendocument.org/start_spreadsheet_2.html
>
> nos queda algo así:
>
> from gvsig import *
> from org.jopendocument.model import OpenDocument
> import joo
> from java.io import File
> from org.jopendocument.dom.spreadsheet import SpreadSheet
> from java.util import Date
> from org.jopendocument.dom import OOUtils
>
> def main(*args):
>      file = File(r"C:/jOO/invoice.ods")
>      sheet = SpreadSheet.createFromFile(file).getSheet(0)
>
>      sheet.getCellAt("I10").setValue(Date())
>
>      sheet.setValueAt("Filling test", 1, 1)
>      sheet.getCellAt("B27").setValue("On site support")
>
>      sheet.getCellAt("F24").setValue(301)
>
>      sheet.getSpreadSheet().getTableModel("Products").setValueAt(1, 5, 4)
>
>      outputFile = File("C:/jOO/fillingTest1.ods")
>      OOUtils.open(sheet.getSpreadSheet().saveAs(outputFile))
>
>
> Esto nos permite modificar las celdas que queramos sobre una existente.
>   Los ficheros de ejemplo los he descargado de Templates
> http://www.jopendocument.org/downloads.html
> y situado en la carpeta C:/jOO , esto lo podrás modificar en el código
> anterior por supuesto.
>
> Me he fijado que al modificarlo se abre el sheet pero los valores de
> formulas no están actualizadas, hay que presionar MAYUS+CONTROL+F9 para
> recalcular. Grabas y listo.
>
> Este caso es para celdas, pero también hay más ejemplos en la web.
>
> Por ejemplo, si después utilizamos el siguiente script, podremos
> visualizar la plantilla en gvSIG en un visor
>
>
> from gvsig import *
> import joo
> from joo.org.jopendocument import model
> from org.jopendocument.model import OpenDocument
> from org.jopendocument.print import DefaultDocumentPrinter
> from org.jopendocument.panel import ODSViewerPanel
> from javax.swing import JFrame
>
> def main(*args):
>      doc = OpenDocument()
>      doc.loadFrom(r"C:/jOO/invoice.ods")
>
>
>      mainFrame = JFrame("Viewer")
>      printer = DefaultDocumentPrinter()
>
>      viewerPanel = ODSViewerPanel(doc, printer, True)
>
>      mainFrame.setContentPane(viewerPanel)
>      mainFrame.pack()
>      mainFrame.setLocation(10, 10)
>      mainFrame.setVisible(True)
>
> Espero que te sirva de ayuda, ya nos comentas si te vale como solución o
> si por lo que sea debes de utilizar otra librería
>
> Un saludo,
> Óscar Martínez
>
> El 01/06/2015 a las 12:33, César Martínez Izquierdo escribió:
> > Hola Javier,
> >
> > Nunca he usado nada parecido, pero se me ocurre una posible causa:
> > aunque el lenguaje de scripting de gvSIG es Python, está basado en
> > Jython (Python ejecutándose sobre Java), así que probablemente no
> > debas importar las librerías de Python de OpenOffice sino las de Java.
> >
> > Para ello seguramente tendrás que añadir algunos jars al classpath de
> > inicio de gvSIG (o meterlos de alguna forma como un plugin de gvSIG),
> > y usar la API de Java de OpenOffice (aunque la llames desde Python, ya
> > que desde el scripting de gvSIG se puede invocar a cualquier método de
> > Java).
> >
> > Te digo todo esto sin conocer las interioridades de OpenOffice ni del
> > funcionamiento de Jython. Creo que puedes empezar por buscar
> > documentación sobre cómo usar OpenOffice desde Jython, esto te pondrá
> > en la buena dirección.
> >
> > Si al final tienes éxito no te olvides de contar por aquí cómo lo
> conseguiste.
> >
> > Saludos,
> >
> > César
> >
> > 2015-06-01 12:13 GMT+02:00 Javier Galán <javiergalans en gmail.com>:
> >> Hola a todos:
> >>
> >> Estoy intentando hacer informes a partir de consultas y datos que tengo
> >> cargados en gvSIG.
> >>
> >> Para ella quería utilizar una plantilla en OO y poder modificarla en
> función
> >> de los datos y consultas.
> >>
> >> Para ello desde el modulo de scripting estoy intentando importar las
> clases.
> >>
> >> Pero "import uno"  me retorna que no existe
> >>
> >> He añadido la ruta al path de librerías
> >>
> >>
> >> import sys
> >> sys.path.append('C:\Program Files (x86)\OpenOffice 4\program') ##ruta
> donde
> >> esta instalado OO y está la libreria uno.py
> >>
> >> pero tambien acabadando error
> >>
> >> He copiado la librería al lib de gvsig, a ver si así la leía y me da el
> >> siguiente error:
> >>
> >> import uno
> >> Traceback (most recent call last):
> >>    File "<input>", line 1, in <module>
> >>    File
> >>
> "C:\Users\PC-VALCAT17\gvSIG\plugins\org.gvsig.scripting.app.extension\lib\uno.py",
> >> line 1, in <module>
> >>      from com.sun.star.uno import UnoRuntime, AnyConverter
> >> ImportError: No module named star.
> >>
> >> Alguien ha intentado algo parecido? Me podría guiar un poco?
> >>
> >> Muchas gracias.
> >> Javier
> >>
> >>
> >>
> >>
> >> _______________________________________________
> >> gvSIG_usuarios mailing list
> >> gvSIG_usuarios en listserv.gva.es
> >>
> >> Para ver histórico de mensajes, editar sus preferencias de usuario o
> darse
> >> de baja en esta lista, acuda a la siguiente dirección:
> >>
> >> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
> >>
> >
> >
>
> _______________________________________________
> gvSIG_usuarios mailing list
> gvSIG_usuarios en listserv.gva.es
>
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse
> de baja en esta lista, acuda a la siguiente dirección:
>
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_usuarios/attachments/20150602/a58f2f39/attachment.htm 


Más información sobre la lista de distribución gvSIG_usuarios