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
🙏 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!🍀
>> 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
Re: In Java im Writer nach einer Tabelle suchen
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.
Die notwendigen Hinweise dazu habe ich im Buch Java LibreOffice Programming von Andrew Davison (https://fivedots.coe.psu.ac.th/~ad/jlop/) gefunden.
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);
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.