*push*
So, ich habe mir das Ganze mit
XML jetzt mal etwas genauer angesehn.
Ich öffne die content.xml in Delphi mit der JvSimpleXML und gehe rekursiv durch die einzelnen
Nodes/ChildNodes und ersetze dann jeweils die im Value stehenden Variablen.
Klappt soweit echt super.
Bezüglich der Tabellen habe ich mir überlegt einfach weitere Nodes einzufügen. Da das an zwei
verschiedenen Stellen geschehen muss könnte ich ja den Namen der Tabelle/Zelle im Bereich
"office:automatic-styles" suchen und das Ganze dann dort noch erweitern.
Dazu habe ich testweise eine Writer-Datei erstellt, die eine Tabelle mit drei Spalten und
einer Zeile besitzt. Jetzt sieht meine
XML folgendermaßen aus:
XML-Code:
<office:automatic-styles>
<style:style style:name="Tabelle1" style:family="table">
<style:table-properties style:width="16.999cm" table:align="margins"/>
</style:style>
<style:style style:name="Tabelle1.A" style:family="table-column">
<style:table-column-properties style:column-width="5.666cm" style:rel-column-width="21845*"/>
</style:style>
<style:style style:name="Tabelle1.A1" style:family="table-cell">
<style:table-cell-properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.C1" style:family="table-cell">
<style:table-cell-properties fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
</style:style>
</office:automatic-styles>
<office:body>
<office:text>
<table:table table:name="Tabelle1" table:style-name="Tabelle1">
<table:table-column table:style-name="Tabelle1.A" table:number-columns-repeated="3"/>
<table:table-row>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.C1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"/>
</table:table-cell>
</table:table-row>
</table:table>
</office:text>
</office:body>
Wie man sieht, sind im Bereich "office:automatic-styles" nur die Tabelle und 2 der 3 Spalten
deklariert. Im Bereich "office:body" wurde dann der Stylename 'Tabelle1.A1' doppelt vergeben,
obwohl es unterschiedliche Zellen sind.
In der
API-Beschreibung von OpenOffice habe ich gelesen, das die Zellennamen eindeutig zugewiesen
sind und man auch über Funktionen direkt auf eine spezielle Zelle per Namen zugreifen kann. Wo
sind diese Namen denn hinterlegt, wenn nicht hier? (habe alle andern .xml durchgeschaut aber nix
gefunden)
Eine weitere Frage ist, was mir "table:number-columns-repeated" aussagen soll. Ich habe in der Tabelle
doch alle Spalten/Zellen deklariert, wozu dann also nochmal solch eine Eigenschaft?
Ich werds weiterversuchen, für jede Hilfe bin ich dennoch dankbar.
Mfg
Killuah
Edit: "Delphi-Code" durch "
XML-Code" ersetzt