Python w OpenOffice 3

Mam stertę arkuszy kalkulacyjnych Lotus 123 (nie napisanych przeze mnie) ze skryptami Lotus w nich wykonującymi strasznie dużo pracy (przenoszenie danych z jednego arkusza kalkulacyjnego do drugiego i inne podobne rzeczy). Rozważam przeniesienie tego wszystkiego z Lotusa 98 i przejście do czegoś bardziej otwartego, np. OpenOffice.

Zastanawiałem się, gdzie byłoby dobre miejsce, aby rozpocząć naukę skryptów OpenOffice 3. Czy Python jest dobrą drogą i jeśli tak, to gdzie mogę znaleźć działające przykłady kodu dla OOo3? Jakieś dziwne problemy, o których powinienem wiedzieć? Czy powinienem używać innego języka skryptowego, takiego jak Javascript lub Oobasic??

Co sądzą ludzie o skryptach OpenOffice 3 w zasadzie!

Pozdrawiam,

Andy

Author: MPelletier, 2010-08-25

3 answers

Punkt wyjścia

Zacznij tutaj: Python jako język makr

Przykłady

Użyj kategorii Python w wiki.

Czy istnieje lepszy język skryptowy?

Python ma zdecydowanie najlepszą składnię. Polecam JavaScript i OOBasic tylko jeśli te dwa warunki są spełnione:

  1. You already know the language
  2. potrzebujesz wbudowanego debuggera

Z Pythonem, debugowanie zwykle nie jest dużym problemem, więc nie przegapisz debuggera i jest łatwiejszy do nauczenia się niż jakikolwiek inny język.

 9
Author: Aaron Digulla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-25 09:28:22

Przyjrzałem się temu i znalazłem zaskakująco mało dokumentacji, jak używać Pythona jako języka skryptowego. Powiedziawszy to, zorientowałem się, czego potrzebuję i działa to dobrze dla moich prostych celów (tworzenie harmonogramu z rzędów). To nawet działało świetnie na OS X, biorąc pod uwagę, że OO.o jest dość młody na tej platformie. Python to świetny język, o wiele ładniejszy niż podstawowy. Oto kilka rzeczy, które musisz wiedzieć:

  • Twoim punktem wyjścia w skrypcie Pythona jest XSCRIPTCONTEXT, a zmienna globalna dostępna bezpośrednio ze skryptu. W ten sposób możesz zrobić

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

    The you can do

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

    Lub odpowiednie setString(), aby uzyskać dostęp do komórek.

  • Na OS X musiałem umieścić skrypt w $HOME/Library/Application Support/OpenOffice.org/3/user/Scripts/python. Następnie jest odbierany przez okno makro.

  • Umieść swoje makro w funkcji, powiedz def macro i dodaj

    g_exportedScripts = macro,
    
    Na końcu.
  • Aby uzyskać wyjście debugowania, użyłem:

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

    Wtedy możesz użyć print, który będzie wyjście do wyjścia.txt w katalogu twojego skryptu.

To powinno wystarczyć na początek.
 5
Author: loevborg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-01 00:00:27
 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-25 12:45:17