BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 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 nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten