# Worddokument automatisiert bearbeiten



## dfs (27. Mai 2008)

Hallo,
ich bin seit Tagen im Internet auf der Suche nach der Lösung für das folgende Problem:

Ich habe aus einer Web-Anwendung einen Wert und möchte den an ein (Java-)Programm übergeben, das dann damit eine Textmarke eines Worddokuments (muss leider sein, also nix mit pdf o.ä.) versorgt.

Ich bin jetzt kein Profi in Java. Ich habe fast 6 Jahre nichts mehr damit programmiert und Perl  oder ein Shellskript wäre mir deutlich lieber, aber das scheint wohl nicht möglich zu sein.

Hat jetzt also jemand eine Idee, wie ich das machen kann.

Ach ja, das ganze muss auf einem UNIX-Server laufen und damit fällt so ziemlich alles aus, was ich bisher gefunden habe.


----------



## KSG9|sebastian (27. Mai 2008)

Hast du mal die Apache POI Lib versucht?

http://poi.apache.org/

Sonst bleibt wohl nix anderes als dass das WordDokument als XML vorliegt


----------



## Joker (27. Mai 2008)

was verstehst du unter einem Worddokument? Wenn du MS Word meinst unterstützt das mehrere Formate u.a. doc, docx, rdf und demnächst auch odf.

Mit den beiden letzten sollte es ziemlich problemlos möglich sein, die beiden ersten sind leider keine freigegebenen Standards (auch das neuste MS Office implementiert nicht den bei der ISO eingereichten OOXML "Standard") so das du da wohl ein Problem mit haben wirst.


----------



## Wildcard (27. Mai 2008)

Du kannst auch die API von OpenOffice.org verwenden.


----------



## Wolfram (27. Mai 2008)

Wenig hilfreich, aber: Word-Dokumente sind des Teufels. Was einmal in einem Word-Dokument drin ist, kriegst Du nicht vernünftig wieder heraus, und ohne Word aufzurufen, geht schon mal gar nix. Ein Word-Dokument mit einem Programm ändern zu wollen, das nicht WINWORD.EXE heißt, bedeutet Ärger. Und, um WINDOWRD.EXE aufzurufen, brauchst Du Windows.

"The one and only way", mit so einem Problem umzugehen, ist über Word zu gehen, genauer gesagt ein Word-Makro zu schreiben, das die Werte für die Textmarken aus einer Datenbank o.dgl. beschafft, die Du vorher aus Deiner Web-Applikation mit Werten befüllst.

Das hat natürlich mit Java nix mehr zu tun.

Und in Wirklichkeit ist "The one and only way" natürlich, den Boss auszulachen, wenn er verlangt, dass Daten an oder aus Word-Dokumenten zu senden/zu holen sind, aber was erzähle ich ... spielt nicht mit den Schmuddel-Textverarbeitungen!

(Wenn ich mich täusche, korrigiert mich bitte bitte bitte  )


----------



## Wildcard (27. Mai 2008)

Alle MS-Word Formate sind natürlich Schrott, da gebe ich dir recht, aber der Import/Export Filter von OpenOffice ist mittlerweile so gut, das man fast alle Manipulationen programatisch über OOo erledigen kann.


----------



## dfs (27. Mai 2008)

Leider ist das doc-Format bei uns vorgeschriebener Standard.
POI und die API von OpenOffice.org hab ich auch gefunden. Aber da finde ich einfach keinen Einstieg. Da ich bei Java halt wieder bei fast Null anfangen muss.

Kann mir also jemand kurz erklären wie ich mit diesen beiden APIs umgehe?
Und damit kann ich das Doc (das auf dem Unix-Server steht) bearbeiten, ohne dass sich das Doc sichtbar öffnet?

Vielen Dank an alle, die sich hier einbringen.


----------



## Wildcard (28. Mai 2008)

> Kann mir also jemand kurz erklären wie ich mit diesen beiden APIs umgehe?


Kurz? nein. Da muss schon ein wenig Eigeninitiative her.
Falls du dich für die OOo Variante entscheiden solltest, schau dir mal NOA an, da gibt es dann auch Beispiele.



> Und damit kann ich das Doc (das auf dem Unix-Server steht) bearbeiten, ohne dass sich das Doc sichtbar öffnet?


ja


----------



## dfs (28. Mai 2008)

NOA sieht gut aus. Da versteht ich sogar gleich einiges.
Allerdings hab ich bei den Beispielen immer den Eindruck, dass sie alle eine Anwendung zur Anzeige des Dokuments starten.
Ich konnte jetzt nichts finden, wie ich einen Stream zu einem Dokument öffne (im Hintegrund OHNE Anzeige), etwas mache (z.B. Text an's Ende einfügen) und dann wieder speichere (und schließe).

Dazu vielleicht noch eine kleine Hilfestellung?!


----------



## Wildcard (30. Mai 2008)

Im DocumentDescriptor wird eingestellt ob sich das Dokument sichtbar oder unsichtbar öffnet.
Aus dem Kopf heraus müsste das sowas wie DocumentDescriptor.DEFAULT_HIDDEN sein.


----------

