Haz tu Pregunta
0

Macro para Insertar gráficos. Con Basic "dispatcher.executeDispatch(document, ".uno:InsertObjectChart", "", 0, Array())" o Python

preguntado 2019-12-02 20:21:03 +0100

Imagen Gravatar de pea

updated 2019-12-07 11:17:08 +0100

Hola! Uso writer Versión: 6.0.7.3.

Mi intención es insertar gráficos pastel/torta a partir de la tabla que contiene los datos mediante un macro. C:\fakepath\ejemplo tabla.odt descripción de la imagen

Pude insertar el gráfico sobre la tabla con una serie de indicaciones por teclado. La secuencia grabada la pego abajo pero cada vez que ejecuté esa macro tuve que seleccionar el tipo de gráfico. No encuentro cómo definir que el tipo de gráfico sea pie, supongo que es un parámetro en la linea:

dispatcher.executeDispatch(document, ".uno:InsertObjectChart", "", 0, Array())

¿tienen documentación sobre esta linea? ¿o cómo indicar que sea pie?


sub grafico_desde_fin_pregunta
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertPara", "", 0, Array())

rem ----------------------------------------------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Count"
args2(0).Value = 1
args2(1).Name = "Select"
args2(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:EndOfDocumentSel", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertObjectChart", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:TerminateInplaceActivation", "", 0, Array())


end sub

Además intenté adaptar las siguiente lineas de código de Mauricio para zaz/python/easymacro pero no lo logre:

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')

En el caso de easymacro o python ¿cómo defino que recupere los datos del rango que selecciono?

Relacionado con: https://ask.libreoffice.org/es/questi...

Estoy estudiando python por lo que quisiera conocer los módulos que hay.

Saludos!!

edit re-etiquetar marcar como ofensivo cerrar fusionar delete

Comments

De hecho, te di la solución en el tema relacionado y no le diste más seguimiento.

Imagen Gravatar de mauricio mauricio ( 2019-12-03 03:00:00 +0100 )edit

Hola, me faltó tiempo para seguir con python pero lo retomaré. Tenía que entregar un avance sin demoras y por eso pregunté si existe esta funcionailidad en writer.

Imagen Gravatar de pea pea ( 2019-12-04 11:00:15 +0100 )edit

1 Responder

Ordenar por » viejos nuevas más votado
0

respondido 2019-12-05 16:14:56 +0100

Imagen Gravatar de mauricio

Son las propiedades:

c.table = table    
c.data = 'A1:B5'

pero table es un objeto personalizado de easymacro

Creo recordar, además, que hay un problema con LibreOffice 6.0 en las macros Python, pero no estoy seguro. Si preparas de nuevo un ejemplo, lo reviso.

edit marcar como ofensivo delete enlace mas

Comments

No encuentro documentación de las funciones para entender cómo definir las celdas de la tabla que previamente selecciono como valor para el gráfico.

Por otro lado, en el código grabado con base tampoco encuentro documentación sobre esta linea para definir que es un grafico de tipo "pie":

dispatcher.executeDispatch(document, ".uno:InsertObjectChart", "", 0, Array())

Imagen Gravatar de pea pea ( 2019-12-06 11:03:43 +0100 )edit

de easymacro, no la encontrarás aún, por que lo he desarrollado desde tu primer mensaje con este tema, con el ejemplo que muestras es simple, hay una sola tabla, pero supongo que tu documento debe tener muchas tablas.

El problema, solucionable pero complicado en Writer, es la posición de las cosas, es decir, en este ejemplo es fácil, se agrega al final del texto, pero reitero, mencionas que tienes muchas tablas. ¿Que criterio sigues para posicionar donde se insertará el gráfico?, si, se que es obvio para uno viendo el documento, esto debe de establecerse por código, no es tán evidente.

Creo, reitero el creo, por eso es más fácil generar todo desde Calc, que creo, reitero el creo, ya estaba solucionado en el anterior tema.

No me gusta trabajar en vano, si tu documento tiene más elementos, deberías mostrarlo, por que el código que se ponga, no podrá ser ...(mas)

Imagen Gravatar de mauricio mauricio ( 2019-12-07 15:23:20 +0100 )edit
Ingresa/Regístrate para Contestar

Herramientas de Preguntas

1 seguidor

Estadisticas

Preguntado: 2019-12-02 20:21:03 +0100

Visto: 29 veces

Ultima actualización: 2 días atrás