Haz tu Pregunta
0

Macro para pasar tablas de calc a writer con encabezado y descripción. Y generar gráfico pastel.

preguntado 2019-10-04 16:17:12 +0100

Imagen Gravatar de pea

updated 2019-11-01 11:28:52 +0100

Versión: 6.0.7.3 - Configuración regional: es-AR (es_AR.UTF-8); Calc: group

Hola! Tengo que generar un documento en writer a partir de una hoja de calculos de 160 tablas de calc. C:\fakepath\consulta.foro.odsLo generé siguiendo las propuestas de: https://ask.libreoffice.org/es/questi... Para pegar cada tabla con su texto en writer hice un macro que al que llamo desde el teclado. Intenté generar un gráfico pastel en simultaneo, pero no puede. Adjunto el documento de writer y uno de texto que contiene la macro.

C:\fakepath\macro_pegar_tabla.odt C:\fakepath\consulta.foro.documento.frecuencias.odt

La metodología la usaría cada vez que apliquemos la encuesta (los datos los recolectamos con Limesurvey). Luego se generan documentos como este: http://www.ceil-conicet.gov.ar/wp-con...

¿Alguien me sugeriría un método mejor para generar en writer las tablas, descripción y gráficos pastel?

Saludos!!

Documento Writer resultante hasta el momentoC:\fakepath\prueba2019_11_1.odt

edit re-etiquetar marcar como ofensivo cerrar fusionar delete

Comments

Como te comentaron, esto es mejor hacerlo en Calc, todo lo que requieran editar, ahí mismo puedes hacerse, pero... también tengo claro que cada escenario es diferente, y a veces hay que adaptarse a lo que hay, pero definitivamente, creo, tiene que hacerse con macros, solo que hacerlo con código directo, es posible pero debes de tener algo de conocimiento, y es mucho, mucho trabajo para ponerlo todo por aquí, pero... si tienes la posibilidad de instalar extensiones, entonces, tal vez hay una manera más sencilla... ¿puedes instalar extensiones donde usaras esto?

Imagen Gravatar de mauricio mauricio ( 2019-10-10 04:53:46 +0100 )edit

3 Respuestas

Ordenar por » viejos nuevas más votado
1

respondido 2019-10-11 07:37:04 +0100

Imagen Gravatar de mauricio

updated 2019-10-29 18:52:00 +0100

Me parece interesante este problema, por que me parece, debe ser algo frecuente. He realizado algunas pruebas de concepto con Python y van bien, con el siguiente código:

OK: He agregado estos cambios a la rama master, esto significa que puede ser usado en producción. Encontré un pequeño detalle, que no se si me falta algo o es un bug de LibreOffice, pero con el cual podemos vivir por ahora con el. El gráfico no se muestra de forma automática, hay que darle doble clic como en el gif que muestro o guardar y volver a cargar, ya veremos como lo arreglamos, aquí el ćodigo completo con el que hice el gif.

import uno
import easymacro as app

def calc2writer():
    doc = app.get_document()
    sheet = doc['Sheet1']
    data = sheet['A1'].current_region.data
    first = data[0][0]
    last = data[-1][0]
    table_data = data[1:-1]

    writer = app.new_doc('writer')
    writer.write(first)
    writer.write('\n\n')
    table = writer.insert_table(table_data)
    chart_data = 'A1:B5'
    writer.write('\n')
    writer.write(last)
    writer.write('\n\n')

    name = 'MyChart'
    with writer.create_chart('Pie') as c:
        c.name = name
        c.table = table
        c.data = 'A1:B5'
        c.width = 11000
        c.height = 7000
        c.legend.CharColor = app.get_color('black')

    return

descripción de la imagen

Obtenemos

descripción de la imagen

Si puedes generar lo mismo que aquí, estas a un paso de resolver todo.

Saludos

edit marcar como ofensivo delete enlace mas

Comments

Hola Mauricio! Necesitaría comprender cómo ejecutar ese código. Entiendo que tendría que seleccionar cada tabla en calc y ejecutar luego código en writer como macro ¿es así? Miré tus video 1 y 2: https://vimeo.com/214107600 Y miré https://macros.elmau.net/es/py/macros/ Gracias a ello pude instalar Python para libreoffice. Todavía no entiendo qué significa "app.get_document" y cómo ejecutar este macro. Observo que existe esta guía: https://wiki.openoffice.org/wiki/Exte... Seguiré leyendo. Muchas gracias por tu tiempo!!

Imagen Gravatar de pea pea ( 2019-10-21 17:12:15 +0100 )edit

No necesariamente, si tu archivo origen esta bien estructurado, se pueden generar una o mil, para eso es la programación, para que haga por nosotros esas cosas repetitivas, que casi siempre son aburridas.

Reitero, es un tema muy interesante por que creo, se debe presentar con frecuencia, además, es muy divertido hacerlo.

Para saber como empezar con esta herramientas, debes de ver por aquí: https://gitlab.com/mauriciobaeza/zaz/...

Espero pronto tenerlo en video.

Imagen Gravatar de mauricio mauricio ( 2019-10-22 00:07:44 +0100 )edit

Gracias Mauricio, pude ejecutar el Test que se propone en ese enlace pero cuando intento con la macro que contiene el código que escribiste arriba me indica "com.sun.star.uno.RuntimeException: Error during invoking function main in module file:///home/pea/.config/libreoffice/4/user/Scripts/python/RPST_cuadros_graficos.py (<class 'nameerror'="">: name 'app' is not defined File "/usr/lib/libreoffice/program/pythonscript.py", line 916, in invoke ret = self.func( *args ) File "/home/pea/.config/libreoffice/4/user/Scripts/python/RPST_cuadros_graficos.py", line 2, in main doc = app.get_document() )" Seguiré intentando ejecutar el código.

Imagen Gravatar de pea pea ( 2019-10-22 21:30:55 +0100 )edit

El código que te mostré, es una prueba de concepto, pues recién le agregue el soporte para generar las tablas y el gráfico desde Writer. El error que mencionas, es por que no estas importando esymacro

import easymacro as app

Si, no lo puse arriba, por que reitero, era una prueba de concepto, pero esta trabajando bien y podemos pasarlo a producción.

Mira este video por favor: https://vimeo.com/368155314

Imagen Gravatar de mauricio mauricio ( 2019-10-23 01:09:45 +0100 )edit

Gracias! Me generó el writer con una tabla y su descripción. Para eso, además cambié "Sheet1" por "Hoja1" y ubiqué dentro de la misma carpeta a easymacro.py y uno.py porque no supe invocarlas desde la carpeta pythonpath. El gráfico no se incorpora, writer me muestra el error "'LOWriter' object has no attribute 'insert_chart'" y tengo q hacer que se ejecute para todas las tablas, supongo con un for o while. Quisiera no molestarte por eso estuve varias horas con esto, intenté entender el código a partir de https://gitlab.com/mauriciobaeza/easy... y busqué el error en https://forum.openoffice.org/es/forum.... Me estoy acercando a Python así que me resulta bueno saber este lenguaje. Sigo escribiendo por acá o recomendarías otro foro?

Imagen Gravatar de pea pea ( 2019-10-26 17:09:25 +0100 )edit

Reitero compañero, "era una prueba de concepto", mientras no lo suba a producción no podrás usarlo. Espera a que te confirme en este tema que ya esta en producción para que hagas tus pruebas.

Imagen Gravatar de mauricio mauricio ( 2019-10-26 20:04:31 +0100 )edit

Listo, ahora están en producción estos cambios.

Imagen Gravatar de mauricio mauricio ( 2019-10-29 18:52:52 +0100 )edit

Hola! Pase libreoffice a idioma ingles para evitar inconsistencias por eso y actualice easymacro.py Obtengo el documento que subi en Documento Writer resultante hasta el momentoC:\fakepath\prueba2019_11_1.odt junto con el error. Voy a seguir intentando y te escribo.

Imagen Gravatar de pea pea ( 2019-11-01 11:34:39 +0100 )edit

No tiene nada que ver el idioma. ¿Estas usando exactamente el archivo fuente que enlazaste arriba?. La ventaja es que no hay que estar adivinando, el error es claro, algún objeto no lo esta identificando correctamente y devuelve None, no descartemos que sea un error de easymacro.py, pues le he agregado un montón de funcionalidades, pero vamos paso a paso. Confirmame que es exactamente el mismo documento, si no, enlaza el que estés usando para hacer una prueba.

Imagen Gravatar de mauricio mauricio ( 2019-11-03 19:59:44 +0100 )edit
1

respondido 2019-10-06 15:01:07 +0100

updated 2019-10-06 15:01:20 +0100

@pea,

¿Cuál es el problema de hacer los gráficos en Calc y generar el documento en PDF?

descripción de la imagen

-----------------------------------------------------------------------------

ATENCIÓN: Si desea dar más detalles a su pregunta, utilice edit en la pregunta o add a comment abajo. Agradecido.

Si la respuesta atendió su necesidad, por favor, haga clic en la bolita Descrição da imagem a la izquierda de la respuesta, para finalizar la pregunta.

edit marcar como ofensivo delete enlace mas

Comments

Hola Gilberto, ocurre que las tablas, texto y gráficos necesitan ser editables. Por eso no sería una alternativa en generar un PDF. Gracias por tu tiempo!!

Imagen Gravatar de pea pea ( 2019-10-09 19:54:51 +0100 )edit

@pea,

¡Es más fácil editar tablas y gráficos en Calc que Writer!

Imagen Gravatar de Schiavinatto Schiavinatto ( 2019-10-09 20:00:45 +0100 )edit

Es mucho lo que hay que editar sobre las primeras tablas con frecuencias ya que se generan documentos cómo este: http://www.ceil-conicet.gov.ar/wp-con...

Imagen Gravatar de pea pea ( 2019-10-10 03:33:38 +0100 )edit
0

respondido 2019-10-10 22:09:42 +0100

Imagen Gravatar de m.a.riosv

Insertando en writer un hoja de cálculo como objeto OLE, debería ser una buena solución.

edit marcar como ofensivo delete enlace mas

Comments

En Writer al seleccionar: insertar -> OLE- > "crear a partir de un archivo" -> me inserta la hoja de calc completa. De alguna forma lo podría editar como un documento de writer convencional?

Imagen Gravatar de pea pea ( 2019-10-21 21:51:00 +0100 )edit

Si haces doble click en el objeto lo puedes editar dentro de writer, aunque sea un fichero de calc. Quizás prefieras para llevarlo con el fichero writer, insertar el objeto creando uno nuevo en vez de enlazar un fichero.

Imagen Gravatar de m.a.riosv m.a.riosv ( 2019-10-21 23:01:40 +0100 )edit
Ingresa/Regístrate para Contestar

Herramientas de Preguntas

2 seguidores

Estadisticas

Preguntado: 2019-10-04 16:17:12 +0100

Visto: 72 veces

Ultima actualización: Nov 01