Insertar macros en Python dentro de un archivo de Calc

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
Henry Sanchez
Mensajes: 34
Registrado: Dom Sep 29, 2013 3:39 am

Insertar macros en Python dentro de un archivo de Calc

Mensaje por Henry Sanchez »

Hola grupo,

Estoy interesado en incluir algunas macros que estoy traduciendo de OOOBasic a Python dentro de archivos de Calc, para que las macros esten disponibles en cualquier equipo donde se abra el archivo.

Como la interfaz de Calc solo permite este tipo de operaciones con archivos de OOOBasic, me guie por un documento publicado por la wiki de OpenOffice.org: "https://wiki.openoffice.org/wiki/ES/Man ... imeraMacro"

Segui los pasos indicados:
Un archivo de Apache OpenOffice es realmente un archivo ZIP con una estructura determinada, por lo que puedes, también, manipularlos con tu programa favorito para este tipo de archivos. Crea y guarda un archivo nuevo de Calc, ciérralo y ábrelo ahora con tu programa ZIP. Crea las carpetas Scripts/python en la raíz del archivo. Dentro de esta carpeta agrega los archivos con las macros, para nuestro ejemplo holamundo.py. Ahora, edita el archivo manifest.xml que esta en la carpeta META-INF, a cuyo contenido agrégale las siguientes líneas, justo antes del cierre </manifest:manifest>.
<manifest:file-entry manifest:media-type="" manifest:full-path="Scripts/python/nombre_modulo.py"/>
<manifest:file-entry manifest:media-type="application/binary" manifest:full-path="Scripts/python/"/>
<manifest:file-entry manifest:media-type="application/binary" manifest:full-path="Scripts/"/>
</manifest:manifest>

Guarda los cambios y cierra el archivo.


Cada vez que realizo, estas acciones y trato de abrir el archivo resultante con Calc. El programa me informa que el archivo "esta corrupto" y permite la reparacion del mismo. Despues de esto, funciona perfectamente, sin embargo, es una molestia tener que estarlo reparando cada vez que hago una edicion a las macros.
He ensayado con WinRar y 7Zip con los mismos resultados.
Realmente no se por que se corrompe el archivo. Si alguien puede darme una idea se lo agradeceria.

Por otra parte, veo que descomprimir el archivo, editar el manifiesto, cada vez que se desee insertar un modulo al archivo y la creacion de las 2 carpetas (para cada archivo con macros), es un poquito tediosa. Pienso que esto puede automatizarse facilmente, pero antes de acometer esta labor, me pregunto si alguien con mas experiencia que yo ya lo haya echo, y compartido con el grupo.

Saludos,

Henry Sanchez
Microsoft Windows 7, LibreOffice 3.5
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Insertar macros en Python dentro de un archivo de Calc

Mensaje por mauricio »

Hola Henry...

La guía funciona, lo he comprobado una buena cantidad de veces, si te da el mensaje de que el archivo esta corrupto, ten por seguro que algo no esta correcto...

Dado que el 99.99% de las macros que desarrollo en Python lo hago como una extensión de AOO, tengo el script para automatizar esto, pero para agregar una macro a un archivo no, aunque el proceso es muy similar, dejame hacer unas pruebas y lo comparto en este hilo... por lo pronto, mi recomendación es que edites tus macros en tu área de usuario, así puedes desarrollarla hasta que la termines y estés seguro de su correcto funcionamiento, al final solo la integras al archivo...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Henry Sanchez
Mensajes: 34
Registrado: Dom Sep 29, 2013 3:39 am

Re: Insertar macros en Python dentro de un archivo de Calc

Mensaje por Henry Sanchez »

Gracias por tu respuesta Mauricio.

Voy a usar WinZip para ver que pasa y tambien voy a seguir tu sugerencia de trabajar en la carpeta de mis macros hasta que esten listas.

Antes de tratar de insertar macros en Python dentro de un archivo de Calc, no tenia ni idea de que este tipo de archivos son realmente una agrupacion comprimida de otros archivos y carpetas. Es un tema interesante y me gustaria saber mas al respecto. Donde puedo encontrar mas detalles respecto a los archivos que conforman un libro de trabajo de Calc?.

Otra duda que tengo respecto a las macros escritas en Python para ser usadas en Calc, es saber si es indispensable haber instalado previamente Python en el equipo donde se piensan ejecutar dichas macros o es que Calc ya incorpora el interprete de Python con tan solo instalar LubreOffice. Para probar esto tendria que desistalar Python de alguno de los equipos en los que trabajo, cosa que me resisto a hacer. Trate de probar esto en un equipo de un amigo que no ha instalado Python, pero resulta que tampoco tenia instalado LibreOffice :ouch:

Saludos,

Henry Sanchez
Microsoft Windows 7, LibreOffice 3.5
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Insertar macros en Python dentro de un archivo de Calc

Mensaje por mauricio »

Aquí puedes encontrar la especificación para ODF, entre ellos, ODS de Calc, pero, no es una tarea sencilla: https://www.oasis-open.org/standards#opendocumentv1.2

No, no es indispensable, tanto AOO, como LibO, incorporan su propio interprete python, en algunas distribuciones linux se usa el interprete local, pero si descargas directamente de las páginas oficiales, siempre incluye el interprete, por lo que no es necesario que lo tengas previamente instalado, o desintalar si ya lo tienes...

Por favor, recuerda, una pregunta por tema, una respuesta por tema...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
circulosmeos
Mensajes: 1
Registrado: Mar Abr 25, 2017 12:24 pm

Re: Insertar macros en Python dentro de un archivo de Calc

Mensaje por circulosmeos »

Hola,
Con este script de Python: https://github.com/circulosmeos/LibreOfficeScriptInsert, es más sencillo añadir una macro a un fichero Calc.
¡Saludos!
LibreOffice 5.2 on Ubuntu
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Insertar macros en Python dentro de un archivo de Calc

Mensaje por fornelasa »

Solo para el registro.
recordemos que adicionalmente hay una extensión que tal vez puede ayudar.
https://forum.openoffice.org/es/forum/v ... HON#p55495
https://forum.openoffice.org/en/forum/v ... 46#p403289
Saludos.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: Insertar macros en Python dentro de un archivo de Calc

Mensaje por SLV-es »

Henry Sanchez escribió: Voy a usar WinZip...
Utilicemos 7zip.org, que es gratuíto y software libre. WinZip no lo es.

Nota: un error común es comprimir seleccionando la carpeta. Hay que comprimir seleccionando los documentos y carpetas que están dentro de la carpeta.
Con las extensiones ocurre eso mismo.
Quizás sea ese el problema por el que te dice que el archivo está dañado.
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Responder