# OpenOffice Writer und Zeilenumbruch



## Camino (21. Dez 2010)

Hallo,

ich möchte in einer Anwendung ein OpenOffice Writer-Dokument einlesen und Platzhalter dynamisch ersetzen, d.h. ich hab einen Platzhalter (z.B. <TEXT>) im Dokument (bzw. in der content.xml) stehen, welcher in meiner Anwendung durch einen String ersetzt wird. Klappt auch so ganz gut, nur hab ich jetzt das Problem, dass ich für einen Platzhalter mehrere Werte bekommen kann, die aufgelistet untereinander stehen sollen. Ich bekomm es aber nicht hin, nach einem Eintrag einen Zeilenumbruch einzufügen, der dann auch von OpenOffice Writer als solcher erkannt wird. Ich hatte es schon mit \r und \n versucht. Klappt auch nicht. Mein dynamisch erstellter String soll etwa so aussehen:
String = "Wert1<ZEILENUMBRUCH>Wert2<ZEILENUMBRUCH>Wert3".

Vorher steht im Dokument:
<TEXT>
Nach dem Ersetzen der Platzhalter:
Wert1
Wert2
Wert3

In dem Dokument (content.xml in odt) steht der Absatz mit dem Platzhalter so drin:
<text text:style-name="P8"><TEXT></text>

Der Style (hier P8) wird in dem Dokument (intern) fortlaufend für Absätze vergeben, kann sich also auch ändern.

Weiss jemand, wie ich in meinen String am einfachsten diese Zeilenumbrüche einfügen kann?

Viele Grüsse
Camino


----------



## Camino (21. Dez 2010)

OK, hab gerade herausgefunden, dass mit einem <text:line-break /> ein Zeilenumbruch eingefügt wird. Also, muss der String so aufgebaut werden:
"Wert1<text:line-break />Wert2<text:line-break />Wert3...usw."

Viele Grüsse
Camino


----------



## Wildcard (21. Dez 2010)

Du bearbeitest die XML Struktur eines ODT händisch? :autsch:
Warum benutzt du nicht die ODF Tools oder die OpenOffice API (UNO/NOA) dafür?


----------



## Camino (22. Dez 2010)

Wildcard hat gesagt.:


> Du bearbeitest die XML Struktur eines ODT händisch? :autsch:
> Warum benutzt du nicht die ODF Tools oder die OpenOffice API (UNO/NOA) dafür?


Ja, gute Frage. Ich hatte halt in einer Zeitschrift einen Artikel gelesen, in dem so ein Beispiel drin stand, wie man die Inhalte einer Writer-Datei einlesen, Platzhalter ersetzen und das neuerstellte Dokument dann ausdrucken kann. Beim Ersetzen der Platzhalter wird über TrueZip auf die content.xml zugegriffen und diese als String eingelesen. Die Platzhalter werden dann in der Java-Anwendung ersetzt und die content.xml wieder zurückgeschrieben und das Writer-Dokument wieder gepackt.

Ich glaube, ich muss mir wirklich nochmal NOA genauer anschauen, da dies ja eine Vereinfachung der UNO darstellt. Letztlich muss ich bei meiner jetzigen Lösung ja spätestens beim Drucken auch auf UNO zugreifen. Ich hatte mir ja auch schonmal NOA ein bisschen angeschaut, das dann aber wieder aufgegeben. Aber letztlich komme ich aber da nicht drum herum bzw. es vereinfacht wohl die Arbeit.

Danke für den Schubser in die richtige Richtung...

Camino


----------



## Wildcard (22. Dez 2010)

> Ich glaube, ich muss mir wirklich nochmal NOA genauer anschauen, da dies ja eine Vereinfachung der UNO darstellt. Letztlich muss ich bei meiner jetzigen Lösung ja spätestens beim Drucken auch auf UNO zugreifen. Ich hatte mir ja auch schonmal NOA ein bisschen angeschaut, das dann aber wieder aufgegeben. Aber letztlich komme ich aber da nicht drum herum bzw. es vereinfacht wohl die Arbeit.


NOA ist wirklich nicht sehr kompliziert. Im Source Zip sind Snippets enthalten die die typischen Tasks demonstrieren.


----------

