9

Ich habe eine Heap von Lotus 123 Tabellenkalkulationen (nicht von mir geschrieben) mit Lotus Skripten in ihnen eine Menge Beinarbeit (Verschieben von Daten aus einer Tabelle in eine andere und andere Dinge wie diese). Ich überlege mir, alles weg von Lotus 98 zu verschieben und etwas offener zu machen, wie OpenOffice.Python in OpenOffice 3

Ich habe mich gefragt, wo wäre ein guter Ort, um zu lernen, Scripting OpenOffice 3. Ist Python eine gute Route, und wenn ja, wo finde ich funktionierende Codebeispiele für OOo3? Irgendwelche seltsamen Probleme, denen ich bewusst sein sollte? Soll ich eine andere Skriptsprache wie Javascript oder OOBasic ??

Was denken die Leute über das Schreiben von OpenOffice 3 im Grunde!

Cheers,

Andy

Antwort

9

Ausgangspunkt

starten hier: Python as a macro language

Beispiele

Verwenden Sie die Python category im Wiki.

Gibt es eine bessere Skriptsprache?

Python hat bei weitem die beste Syntax. Ich würde empfehlen, JavaScript und OOBasic nur dann, wenn diese beiden Bedingungen erfüllt sind:

  1. Sie kennen bereits die Sprache
  2. benötigen Sie den integrierten Debugger

Mit Python, Debugging ist in der Regel nicht ein großes Problem, so dass Sie den Debugger nicht verpassen und es einfacher zu lernen ist als jede andere Sprache.

5

Ich schaute in diese und fand überraschend wenig Dokumentation, wie Python als Skriptsprache zu verwenden. Nachdem ich gesagt habe, dass ich herausgefunden habe, was ich brauche, und es funktioniert gut für meine einfachen Zwecke (Erstellen eines Zeitplans aus Reihen). Es funktionierte sogar großartig auf OS X, wenn man bedenkt, dass OO.o auf dieser Plattform ziemlich jung ist. Python ist eine großartige Sprache, viel schöner als Basic. Hier sind einige Dinge, die Sie wissen müssen:

  • Ihr Ausgangspunkt in dem Python-Skript ist XSCRIPTCONTEXT, eine globale Variable direkt von Ihrem Skript. So können Sie

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

    Das können Sie

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

    oder die entsprechende setString() tun, um die Zellen zu gelangen.

  • Auf OS X musste ich das Skript in $HOME/Library/Application Support/OpenOffice.org/3/user/Scripts/python setzen. Dann wird es vom Makrodialog aufgenommen.

  • Ihr Makro in Funktion setzen, sagen def macro und

    g_exportedScripts = macro, 
    

    am Ende hinzufügen.

  • Debug-Ausgabe zu erhalten, habe ich:

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

    Dann können Sie print verwenden, die ausgegeben werden, wird in Ihrem Skript Verzeichnis output.txt.

Das sollte ausreichen, um loszulegen.