🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

In Java im Writer nach einer Tabelle suchen

Alles zur Programmierung im LibreOffice.
Antworten
schalueck
Beiträge: 6
Registriert: Mo 12. Aug 2019, 14:10

In Java im Writer nach einer Tabelle suchen

Beitrag von schalueck » Do 22. Aug 2019, 13:56

Hallo,
ich will mit Java LibreOffice fernsteuern. Das meiste klappt auch, aber an einer Stelle hake ich nun ziemlich:
Ich habe ein TextDokument mit einer darin enthaltenen Tabelle und einer Textmarke/Platzhalter darin. Stellt euch eine Rechnungsvorlagedatei vor.
Ich suche mir den Platzhalter in der ersten Nutzzeile und möchte dann für jeden Bestellposten eine Zeile mit meinen Daten erstellen und füllen.
In der Vorlagedatei habe ich mich um Formatierung, Spaltenzahl etc. gekümmert, in meinem Programm möchte ich dann die Daten füllen.

Wenn ich mit einem SearchDescriptor suche, finde ich per findFirst-Methode auch den ersten Texteintrag. Aber dann komme ich nicht weiter.

Hat jemand eine Idee für mich?
Danke
Elmar

schalueck
Beiträge: 6
Registriert: Mo 12. Aug 2019, 14:10

Re: In Java im Writer nach einer Tabelle suchen

Beitrag von schalueck » Mo 2. Sep 2019, 13:09

Ich konnte mir selber helfen:
Mit der Klasse XTextTablesSupplier kann ich meine Tabellen durchiterieren und dann über Zeilen und Spalten meine Zielposition finden.
Dort ist es dann möglich, weitere Zeilen/Spalten einzufügen.

Code: Alles auswählen

XTextTablesSupplier xTablesSupplier = (XTextTablesSupplier)
UnoRuntime.queryInterface( XTextTablesSupplier.class, xTextDocument );
XNameAccess xNamedTables = xTablesSupplier.getTextTables();
for (String elementName : xNamedTables.getElementNames()) {
	System.out.println("Tabellenname : " + elementName);
}
			
Object oTable = xNamedTables.getByName("Tabelle1");
XTextTable xFoundTable = UnoRuntime.queryInterface(XTextTable.class, oTable);
			
XTableRows xRows = xFoundTable.getRows();
xRows.insertByIndex(3, 2);
Die notwendigen Hinweise dazu habe ich im Buch Java LibreOffice Programming von Andrew Davison (https://fivedots.coe.psu.ac.th/~ad/jlop/) gefunden.


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten