Insertar macros en Python dentro de un archivo de Calc

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...

Insertar macros en Python dentro de un archivo de Calc

Notapor Henry Sanchez » Dom Ene 12, 2014 6:37 am

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/Manuales/GuiaAOO/TemasAvanzados/Macros/Python/MiPrimeraMacro"

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
Henry Sanchez
 
Mensajes: 34
Registrado: Dom Sep 29, 2013 3:39 am

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

Notapor mauricio » Dom Ene 12, 2014 6:47 pm

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
Avatar de Usuario
mauricio
 
Mensajes: 5867
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

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

Notapor Henry Sanchez » Lun Ene 13, 2014 1:52 am

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
Henry Sanchez
 
Mensajes: 34
Registrado: Dom Sep 29, 2013 3:39 am

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

Notapor mauricio » Lun Ene 13, 2014 6:13 am

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
Avatar de Usuario
mauricio
 
Mensajes: 5867
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

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

Notapor circulosmeos » Mar Abr 25, 2017 12:44 pm

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
circulosmeos
 
Mensajes: 1
Registrado: Mar Abr 25, 2017 12:24 pm

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

Notapor fornelasa » Mar Abr 25, 2017 9:14 pm

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
fornelasa
 
Mensajes: 3223
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

Notapor SLV-es » Lun May 29, 2017 12:25 pm

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
Avatar de Usuario
SLV-es
 
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados