9

Tengo un montón de hojas de cálculo de Lotus 123 (no escritas por mí) con Lotus Scripts haciendo mucho trabajo (moviendo datos de una hoja de cálculo a otra, y otras cosas por el estilo). Estoy considerando cambiarlo todo de Lotus 98 e ir a algo un poco más abierto, como OpenOffice.Python en OpenOffice 3

Me preguntaba dónde sería un buen lugar para comenzar a aprender sobre Scripting OpenOffice 3. ¿Es Python una buena ruta y, de ser así, dónde puedo encontrar ejemplos de código de trabajo para OOo3? ¿Alguna cuestión extraña que deba conocer? ¿Debería usar otro lenguaje de scripting como Javascript u OOBasic?

¡Qué piensan las personas sobre el script de OpenOffice 3 básicamente!

Cheers,

Andy

Respuesta

9

Punto de partida

de inicio aquí: Python as a macro language

Ejemplos

Usa el Python category en la wiki.

¿Hay un mejor lenguaje de scripting?

Python tiene, con mucho, la mejor sintaxis. Me gustaría recomendar JavaScript y OOBasic sólo si se cumplen estas dos condiciones:

  1. ya conoce el lenguaje
  2. Es necesario el depurador integrado

Con Python, la depuración por lo general no es una gran problema, por lo que no se perderá el depurador y es más fácil de aprender que cualquier otro idioma.

5

miré en esto y encontró sorprendentemente poca documentación sobre el uso de Python como un lenguaje de script. Una vez dicho esto, me di cuenta de lo que necesitaba, y funciona bien para mis propósitos simples (hacer un horario a partir de las filas). Incluso funcionó muy bien en OS X, teniendo en cuenta que OO.o es bastante joven en esa plataforma. Python es un gran lenguaje, mucho mejor que Basic. Aquí hay algunas cosas que usted necesita saber:

  • su punto de partida en la secuencia de comandos de Python es XSCRIPTCONTEXT, una variable global puede acceder directamente desde el script. De este modo se puede hacer

    worksheet = XSCRIPTCONTEXT.getDocument().getSheets().getByIndex(0) 
    

    El que puede hacer

    worksheet.getCellByPosition(x,y).getString() 
    

    o el correspondiente setString() acceder a las células.

  • En OS X, tuve que poner el script en $HOME/Library/Application Support/OpenOffice.org/3/user/Scripts/python. Luego es recogido por el cuadro de diálogo macro.

  • poner la macro en una función, por ejemplo def macro y añadir

    g_exportedScripts = macro, 
    

    al final.

  • Para obtener resultados de depuración, he utilizado:

    logfile = os.path.dirname(__file__.replace("file://","").replace("%20"," ")) + "/output.txt" 
    sys.stdout = open(logfile, "a", 0) # unbuffered 
    

    continuación, puede utilizar print, que se emitirá a Output.txt en el directorio de su guión.

Eso debería ser suficiente para comenzar.