TextTable-Name

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

mipa
*
Beiträge: 10
Registriert: So, 21.01.2007 17:54

TextTable-Name

Beitrag von mipa »

Hallo,

ich möchte per Java durch ein Writer-Dokument wandern und alle Tabellennamen ermitteln. Die Ermittlung der Tabellen und wie man verschiedene Properties setzen kann, habe ich bereits gefunden:

Code: Alles auswählen

XTextTablesSupplier xTablesSupplier = (XTextTablesSupplier) UnoRuntime.queryInterface(XTextTablesSupplier.class, doc);

XNameAccess xNamedTables = xTablesSupplier.getTextTables();

XIndexAccess xIndexedTables = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xNamedTables);

XPropertySet xTableProps = null;

for (int i = 0; i < xIndexedTables.getCount(); i++){
	
	Object table = xIndexedTables.getByIndex(i);
	
	xTableProps = (XPropertySet) 
		UnoRuntime.queryInterface(XPropertySet.class, table);
	
	xTableProps.setPropertyValue("BackColor", new Integer(0xC8FFB9));

	// Tabellenname???

	// String tableName = (String) xProp.getPropertyValue("Name"); --> gibt es nicht!

}
Ich brauche jedoch unbedingt den Tabellennamen. Er ist anscheinend keine Property der Tabelle.

Kann mir da jemand helfen?

Vielen Dank im Voraus und Gruß!
Michaela
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: TextTable-Name

Beitrag von komma4 »

Michaela,

Java-Code kann ich Dir keinen liefern... ich kann Dir aber sagen, dass der Name eine Eigenschaft der Tabelle selbst ist. In BASIC erhälst Du ihn also durch die Anweisung:

Code: Alles auswählen

msgbox table.getName()
angezeigt.

Hilft Dir das weiter?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
mipa
*
Beiträge: 10
Registriert: So, 21.01.2007 17:54

Re: TextTable-Name

Beitrag von mipa »

Hallo Winfried,

vielen Dank für Deine Antwort!

Leider geht das mit Java nicht so einfach wie mit Basic. Für meine Tabelle stehen mir Methoden wie zB getCellNames() zur Verfügung, aber leider kein getTableName() oder getName() :-(

Ich suche weiter...

Gruß, Michaela
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: TextTable-Name

Beitrag von Toxitom »

Hallo Michaela,
mipa hat geschrieben:Leider geht das mit Java nicht so einfach wie mit Basic....
Na ja, da beide auf die API (und UNO) zugreifen, sind die Inhalte identisch. Möglicherweise nicht die Wege, sie zu erhalten....

Unter Basic ist der Tabellenname eine Eigenschaft des Objektes - und somit natürlich auch unter Java ;-). Wenn es keine direkte Methode dafür gibt (wie "getName()" oder so) hast du immer noch die Möglichkeit über getPropertyValue() zu gehen, wobei du den Namen der Eigenschaft übergibst. Nun programmier ich nicht Java, kenne also den exakten Weg nicht, nur sind alle Eigenschaften im Sammelcontainer vorhanden. Und die solltest du dort auch auslesen können :-)

Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
mipa
*
Beiträge: 10
Registriert: So, 21.01.2007 17:54

Re: TextTable-Name

Beitrag von mipa »

Hallo,

der Tabellenname kann leider nicht über eine Property der Tabelle ermittelt werden, das hatte ich ja über xProp.getPropertyValue("Name") probiert. Diese Property gibt es nicht.

Ich habe aber jetzt die Lösung gefunden, den Tabellennamen muss man über das Interface XNamed ermitteln.

Code: Alles auswählen

    XTextTablesSupplier xTablesSupplier = (XTextTablesSupplier) UnoRuntime.queryInterface(XTextTablesSupplier.class, doc);

    XNameAccess xNamedTables = xTablesSupplier.getTextTables();

    XIndexAccess xIndexedTables = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xNamedTables);

    XPropertySet xTableProps = null;

    for (int i = 0; i < xIndexedTables.getCount(); i++){
       
       Object table = xIndexedTables.getByIndex(i);
       
	// Tabellenname
	XNamed xNamed = (XNamed) UnoRuntime.queryInterface(XNamed.class, table);
	String tableName = xNamed.getName();
    }
Danke und viele Grüße
Antworten