[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