OOO mit Python fernsteuern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Hallo. Ich interessiere mich nun für das Thema, Openoffice.Org mit Python "fernzusteuern". Ich möchte irgendeine Art von Platzhalter in ein fertiges Dokument setzen, und diese dann automatisch mit meinem Script ersetzen. Ich habe mir in der Zwischenzeit schonmal die bei OOO mitgelieferten Python Makros angeschaut... wirken ziemlich kompliziert und unübersichtlich.
Gibt es da vielleicht ein (deutsches?!) Tutorial?
Würde mir sicher ziemlich weiterhelfen.

Gruß sprudel
lunar

Das ist eine ganz miese Idee ;) OpenOffice.org hat eine absolut grausame API (das kommt halt vom komplizierten Binding-System und dem Einsatz von Corba).

Ich würde erstmal unter http://codesnippets.services.openoffice.org/ schauen, ob es nicht vielleicht schon ein fertiges Makro gibt, welches du an deine Bedürfnisse anpassen kannst. Das Ersetzen von Platzhaltern im Dokument ist ja nun nichts dermaßen exotisches... ;)

Ansonsten bietet sich ein Blick in die First Steps an, sowieso das Writer Tutorial. Aber erwarte dir nicht zu viel, wie gesagt, die OpenOffice.org API ist Mist und die Beispiel alle in Java (man sieht halt SUNs Einfluss). Das Portieren nach Python ist nicht unbedingt schwer, aber man muss halt erstmal durch die Java Snippets durchsteigen.

Btw, vielleicht solltest du dir mal KWord anschauen (wenn du Linux + KDE einsetzt). Einfach ODT-Dokumente öffnet KWord auch ohne Probleme, aber die neue Skripting-API ist wesentlich angenehmer, da direkt auf Python ausgelegt. Allerdings ist sie auch noch Beta... Aber selbst die alte DCOP-API ist immer noch tausend mal besser als OpenOffice.org.
BlackJack

Corba? OOo benutzt doch kein Corba für seinen UNO-Kram.

Und selbst wenn, dürfte das kein Problem darstellen. Corba selbst sieht in Python recht angenehm aus. Es wäre aber nur die Technik zur Verbindung mit der UNO-Klassenhierarchie und genau da liegt IMHO das Problem. Das ist so eine furchtbare SUN-API ─ wenn in einer API nicht mindestens alle Entwurfsmuster aus dem GOF-Buch drin stecken, muss man sich unbedingt noch mehr Klassen und Interfaces ausdenken.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

sprudel hat geschrieben:Openoffice.Org mit Python "fernzusteuern"
Hallo sprudel!

UNO ist grausam!

Ich hätte so viele schöne Anwendungsfälle, die ich gerne mit Python und OpenOffice.org erledigen würde.
Aber allein schon die Tatsache (bitte korrigiert mich, wenn ich falsch liege), dass OOo nicht geöffnet sein darf (auch nicht der Schnellstarter in der Taskleiste) wenn eine UNO-Sitzung gestartet werden soll, macht die Sache schwierig.

Dann kommt noch dazu, dass sich die Entwickler von UNO anscheinend keine Gedanken darüber gemacht haben, wie man dem Programmierer die Sache einfacher machen könnte.

mfg
Gerold
:-)

PS: Ich glaube, alles was man für den Anfang wissen muss, steht hier drinn: http://udk.openoffice.org/python/python-bridge.html
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben:Das ist so eine furchtbare SUN-API
Also stimmt das ja noch immer (ist schon einige Jahre alt, aber ich finde es immer noch lustig)...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Das schlimme ist, das man die UNO-API niemandem zumuten kann, der nicht OOP und Entwurfsmuster verstanden hat, UML-Diagramme lesen und deuten kann, und in der Lage ist sich durch die Tonnen von generierter API-Doku zu wühlen.

Python wäre so eine schöne Sprache um Anfängern und Hobbyprogrammierern ─ eben typische Endanwender ─ in die Lage zu versetzen Makros zu schreiben. Und dann setzt man denen so eine API vor.

Das wäre vielleicht ein etwas ambitionierteres Projekt für die Ideenseite im Wiki: ein "pythonischer" Wrapper um die UNO-API, der diesen ganzen Boilerplate-Quelltext versteckt und einige Komfortfunktionen anbietet.
encbladexp
User
Beiträge: 61
Registriert: Freitag 7. März 2003, 19:28
Kontaktdaten:

Tja, ich finde es auch schade das Sun mit der OpenOffice API so viel mist gemacht hat, was ich eh net verstehe ist warum man für jede Office-Suite ne extra Sprache entwickelt, warum nehmen die net einfach Python oder irgendeine andere "Standartsprache", die viele können und leicht zu erlernen ist... Dann könnte man sich dieses Thema sparen...

mfg Betz Stefan
PS: Gibt es eigentlich für Python ne art libodf oder sowas???
lunar

BlackJack hat geschrieben:Corba? OOo benutzt doch kein Corba für seinen UNO-Kram.
Stimmt, ich hab was verwechselt. Aber das macht die API auch nicht besser...

Edit: Obwohl ein Script, welches diese API verwendet, gar nicht so übel aussieht. Ich habe gerade mal ein Blick auf ein Script geworfen, und der Code ist gut lesbar... Natürlich muss man aber erstmal die API verstehen. Das hat bei mir auch sehr, sehr lange gedauert ;)
BlackJack

@stefan_betz: Es wird ja nicht für jedes Office-Paket eine neue Sprache entwickelt. Die beiden grossen setzen auf eine möglichst sprachunabhängige Schnittstelle. Bei MS-Office sollte man jede Sprache nehmen können, die COM-Objekte ansprechen kann und wohl auch alles was auf .NET läuft (da bin ich nicht so auf dem laufenden) und SUN hat die UNO-API.

Mit OOoPy gibt's immerhin ein Modul im Alphastadium, dass das Modifizieren von OpenOffice-Dokumenten erlaubt.
Antworten