¿Cómo importar clases Java? (macro desde Calc)

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
mdelvalle
Mensajes: 7
Registrado: Lun Mar 26, 2012 10:13 pm

¿Cómo importar clases Java? (macro desde Calc)

Mensaje por mdelvalle »

Hola!

Estoy intentando hacer una macro a través de la cual pueda generar reportes partiendo de tablas hechas en hojas de cálculo en Calc. La idea es independizarme tanto como sea posible del formato: genero una plantilla con la distribución de "campos" en columnas adecuada, celdas preparadas para recibir "parámetros" de usuario, y luego mando esa información como "entradas" de un generador de reportes, donde ya generé un reporte básico, y cuyo formato no tenga la posibilidad (el usuario final) de cambiar. Como quisiera crear salidas relativamente complejas desde el punto de vista del diseño, decidí utilizar la librería JasperReports (con su editor de plantillas gráfico "iReport", para no enredarme diseñando en XML) que da muchas posibilidades. La idea sería automatizar este proceso, es decir: el usuario final abre un documento nuevo preformatedo con la plantilla, completa los datos anexos (parámetros), la tabla (campos), hace click en un botón "GENERAR REPORTE" (p. ej.) y obtiene una tabla en PDF, siempre con el mismo formato, siempre prolija, sin problemas ocasionados con Ctrl+C y Ctrl+V :super: . De esta manera termina siendo "a prueba de usuarios";). Además el usuario final no necesita instalar ni conocer otro programa que no sea el Calc, y alguna librería extra.

Ahora bien: la librería JasperReports (JR) está desarrollada en Java, lenguaje que lamentablemente no conozco, realmente. Según estuve investigando en foros (y demás) propios de JR, el proceso consta de varios pasos internos: diseñar el layout del reporte en XML, "parsearlo" a un formato propio ".jrxml", compilarlo en un formato propio ".jasper", conectarlo con la base de datos en cuestión, llenar el reporte, compilarlo, consolidarlo, y finalmente exportarlo en el formato deseado. Todos estos pasos se realizan con métodos que vienen incluídos en diferentes clases Java, cuyos archivos ".class" se descargan de la página JR oficial (de todas maneras toda la primera parte me la simplifica el diseñador gráfico, que me entrega un diseño de reporte compilado en .jasper).

Y entonces llegan mis dudas: para interactuar desde mi macro OOo con estas clases Java ¿tengo que usar lenguaje JavaScript para escribirla? ¿O puedo hacerlo aunque esté programanda en Basic? Leí por aquí en el foro que se puede llamar a funciones de Python (que, explicaban, es un lenguaje parecido) desde Basic directamente, aunque no logro hacer la analogía para llamar a clases de Java. ¿Tengo que usar una función de tipo "importClass ()"? ¿O agregando las librerías en las Rutas de Clase (Calc -> Herramientas -> Opciones -> Java -> Rutas de Clase) ya funcionaría directamente? (y en ese caso comenzaría a llamar a sus funciones y objetos directamente) Y respecto de eso: ¿agrego, en este menú, directamente la ruta de un paquete .zip que contenga los archivos .class de las clases que necesito para mi procedimiento? ¿O hay que darles otro tratamiento?

Bueno, espero haber sido lo suficientemente claro, sin haber mareado a nadie con ideas inconexas :? La verdad es que no estoy muy seguro de por dónde empezar. Seguramente después tendré muchas más dudas cuando intente generar el código en sí :knock: , pero al menos ya habré comenzado ;)

Ojalá puedan ayudarme. Muchas Gracias!

Manuel
________________________________________
AOO 4.1.0 (Build:9764 - Rev. 1589052) | Windows 7 Professional SP1 x64
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: ¿Cómo importar clases Java? (macro desde Calc)

Mensaje por mauricio »

La respuesta rápida es si, puedes usar estas librerías dentro de macros, usando el mismo Java incluso, lo he visto, pero no se hacerlo con Java, yo se hacerlo con Python... si no necesitas toda esa complejidad, puedes usar la misma hoja de calculo para obtener reportes muy profesionales, y solo es cuestión de nombrar celdas con nombre... sugiero explorar primero esta opción...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
mriosv
Mensajes: 2335
Registrado: Sab Dic 27, 2008 1:12 am
Ubicación: Galiza (España)

Re: ¿Cómo importar clases Java? (macro desde Calc)

Mensaje por mriosv »

En este enlace creo que puedes encontrar lo que necesitas. Un magnifico libro de Mauricio sobre la programación en Basic de OOo.
http://user.services.openoffice.org/es/ ... =50&t=1545

De cualquier forma, si me permites, creo deberías estudiar las distintas opciones que puedas tener para obtener los informes.

- Quizás sería mas fácil desarrollar las macros para imprimir los informes desde hojas ocultas al usuario y protegidas, en el foro hay ejemplos recientes de imprimir hojas en pdf con macros.

- Las hojas de cálculo se pueden registrar como bases de datos en Base y ahí puedes diseñar consultas para seleccionar registro y diseñar informes de salida, a lo que te puede ayudar la extensión de generación de informes: http://extensions.services.openoffice.o ... portdesign. Y evitarás la necesidad de ficheros externos para guardar los formatos de los informes.

- Creo que además te será mas fácil encontrar apoyo, en el foro creo puedes encontrar ejemplos de informes en Base, y será mas sencillo para un tercero retomarlo en caso de que hiciese falta.

De cualquier forma si tienes ganas de bucear, suerte, el mar está ahí para cuando nos apetece.
Puedes usar "Subir adjunto" en Respuesta rápida - Editor Completo - Pestaña Subir adjunto
Apache OpenOffice 4, LibreOffice (Win10x64)
mriosv
Mensajes: 2335
Registrado: Sab Dic 27, 2008 1:12 am
Ubicación: Galiza (España)

Re: ¿Cómo importar clases Java? (macro desde Calc)

Mensaje por mriosv »

Hola Mauricio, mientras escribías yo estaba a lo mismo, parece que nos hemos leído el pensamiento.
Saludos.
Puedes usar "Subir adjunto" en Respuesta rápida - Editor Completo - Pestaña Subir adjunto
Apache OpenOffice 4, LibreOffice (Win10x64)
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: ¿Cómo importar clases Java? (macro desde Calc)

Mensaje por mauricio »

Así es mi amigo Miguel... yo optaría por alguna de las opciones que propones, de todos modos si el compañero quiere probar, la siguiente extensión incluye librerías de terceros, ahí puede aprender como integrarlas en una macro, pero si no has hecho macros ni extensiones, prepárate, el camino no es tan terso... menos con java...

http://extensions.services.openoffice.o ... ect/ooo2gd

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
mdelvalle
Mensajes: 7
Registrado: Lun Mar 26, 2012 10:13 pm

Re: ¿Cómo importar clases Java? (macro desde Calc)

Mensaje por mdelvalle »

Buenas, Mauricio y Miguel! Primero quisiera agradecerles sus respuestas, y por tomarse el tiempo para considerar posibles soluciones a mi problema. Me vienen muy bien sus consejos respecto de cómo encarar el problema inicialmente, la verdad es que cuanto más "comienzo a bucear", como decía Miguel, más me doy cuenta que el mar es MUY profundo ;) . Puede ser que esté buscando una solución demasiado "sofisticada" para lo que son los requerimientos del trabajo que quiero hacer, y me da la sensación de que podría llevarme AÑOS desarrollar las habilidades necesarias para llevarla a cabo.
Lo cierto es que he intentado anteriormente diseñar templates en el mismo Calc, pero no he logrado buenos resultados. Generalmente, debido a manipulación del usuario, los diseños se "rompen". No se me había ocurrido la solución que propone Miguel, de generar en una hoja los "campos a completar por el usuario", y el diseño "visual" en otra, protegida y/o oculta. Ese método podría funcionar suficientemente bien, y seguro es mucho más sencillo. :oops:
De todas maneras, un programa como Calc, pensado para desarrollar hojas de cálculo, presenta naturalmente algunas limitaciones respecto del diseño visual de un reporte. Es difícil que yo pueda generar un template complejo como el que podría generar en un programa pensado para diseño gráfico (llámese Scribus, Corel, Publisher, etc.). Por eso estuve evaluando alternativas y encontré el iReport, que me pareció que reunía las condiciones necesarias: es capaz de generar reportes gráficamente complejos, de conectarse a diferentes orígenes de datos, y el editor gráfico es muy intuitivo y preciso. Y es OpenSource. :super:
Ingenuamente, pensé que como básicamente funciona sobre un paquete de librerías Java, sería un procedimiento relativamente sencillo "llamarlas" desde Basic y utilizar los métodos que tienen ya definidos "adentro". Y que si investigaba un poco iba a lograr hacerlo funcionar. Pero sabiendo que ustedes, que tienen INFINITAMENTE más experiencia que yo en este tema, lo consideran un método al menos complicado, bueno..ejem..quizás tendría que ir pensando en buscar una solución más a mi alcance, digamos. ¡Ojo! Eso no quita que ya haya descargado el manual de Mauricio y esté comenzando a dar mis primeros pasitos con BASIC. Pero seguramente tendré que dejar este problema y centrarme en otros más terrenales, por el momento.
Mauricio: estuve intentando extraer conclusiones husmeando el código de la extensión que referenciaste en tu respuesta, pero la verdad es que no logro nada concreto. Incluso hay un texto donde describe, muy brevemente, el procedimiento para referencias rutas de clases y, hasta donde logro entender, es similar a lo que estoy intentando hacer. El problema es que, cuando de aparatos determinísticos se trata, "similar" y "distinto" son cosas demasiado cercanas, ¿no? :roll:
Bueno, espero sus comentarios. Seguramente vendré mucho más seguido al foro, aunque posiblemente las dudas de novato que me surjan a partir de ahora :crazy: estarán ya preguntadas y respondidas, con lo cual mis visitas serán mayormente para leer, y no tanto para preguntar, por el momento.
Muchas gracias y saludos,

Manuel

PD: si intentando alguna de las soluciones simplificadas que me proponen me surgen dudas (que intuyo lo más probable) y no encuentro las respuestas, ¿sigo preguntando por este hilo? ¿o este queda cerrado y abro uno nuevo? (teniendo en cuenta que las posibles soluciones serían para "reemplazar" el método que generó las dudas, y el hilo, en primer lugar)
________________________________________
AOO 4.1.0 (Build:9764 - Rev. 1589052) | Windows 7 Professional SP1 x64
Avatar de Usuario
RGB-es
Mensajes: 4739
Registrado: Lun Nov 24, 2008 10:46 am
Contactar:

Re: ¿Cómo importar clases Java? (macro desde Calc)

Mensaje por RGB-es »

mdelvalle escribió:PD: si intentando alguna de las soluciones simplificadas que me proponen me surgen dudas (que intuyo lo más probable) y no encuentro las respuestas, ¿sigo preguntando por este hilo? ¿o este queda cerrado y abro uno nuevo? (teniendo en cuenta que las posibles soluciones serían para "reemplazar" el método que generó las dudas, y el hilo, en primer lugar)
Como puedes ver en la Guía de supervivencia, la regla general es «un hilo, una pregunta», por lo que a menos que sea una continuación directa del tema aquí tratado, es mejor abrir un hilo nuevo ;)

Saludos
No respondo mensajes privados sobre AOO/LibO, por favor, utilice el foro para sus preguntas

LibreOffice en openSUSE con escritorio Plasma
---
Existen dos clases de personas: las que dicen que existen dos clases de personas y las que no.
Responder