Texttabellenfelder formatieren

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

stoni
*
Beiträge: 14
Registriert: Fr, 28.03.2008 22:47

Texttabellenfelder formatieren

Beitrag von stoni »

Hallo,

über ein Makro werden Zeilen aus einer Textdatei in eine Texttabelle (Writer!) kopiert. Nun möchte ich einzelne Felder der Tabelle gern per Basic formatieren (Ausrichtung, Zeichenformat,...). Könnte mir bitte jemand sagen, wie man die Zelleneigenschaften setzt?

Danke schon mal!
stoni
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Texttabellenfelder formatieren

Beitrag von komma4 »

..ich glaube, dass ich Dir diese Antwort schonmal gab: zum Bearbeiten von Texttabellen siehe ATL2 - AutoTextListe2
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)
stoni
*
Beiträge: 14
Registriert: Fr, 28.03.2008 22:47

Re: Texttabellenfelder formatieren

Beitrag von stoni »

ja, das ist richtig. Nur muss ich gestehen, dass ich damit keine Antwort auf meine Frage gefunden habe.
Ich habe mit

Code: Alles auswählen

oRange = oTab.getCellRangeByName("D" & iZeile & ":F" & iZeile)
oRange.NumberFormat = 4
getestet - aber ohne Erfolg (auch keine Fehlermeldung). Nach meinen Recherchen soll NumberFormat=4 das Format #.##0,00 erzeugen...

stoni
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Texttabellenfelder formatieren

Beitrag von komma4 »

stoni hat geschrieben: Nach meinen Recherchen soll NumberFormat=4 das Format #.##0,00 erzeugen...
Woher nimmst Du das?


Zum Problem:
Xray sagt mir, dass die Eigenschaft .NumberFormat im Kontext nicht existiert.


Fügst Du reine nummerische Werte ein? Wie?
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)
stoni
*
Beiträge: 14
Registriert: Fr, 28.03.2008 22:47

Re: Texttabellenfelder formatieren

Beitrag von stoni »

komma4 hat geschrieben:Woher nimmst Du das?
PDF-Dokument im Internet gefunden:
"... Und die Zahlenspalte soll ebenfalls nicht ganz rechts „hängen“, sondern mit einem entsprechenden Abstand. Außerdem soll das Zahlenformat die Form „#.##0,00“ erhalten, also mit Tausender-Trennzeichen, Dezimaltrenner und zwei Nachkommastellen. Hierzu wird ein entsprechender Formatcode (dieser ist identisch bei dem von Calc verwendeten Formatcode) zugewiesen. Das gewünschte Format hat den Code 4:"

Code: Alles auswählen

REM zweite Spalte formatieren
oSpEuro = oTab.getCellRangeByName("B2:B" & oRows.getCount())
oSpEuro.NumberFormat = 4
oSpEuro.ParaRightMargin = 500
end sub
Autor: © Thomas Krumbein, September 2005

Interessanterweise sind diese Codezeilen im aktuellen Buch "Makros in OpenOffice.org" (2. Auflage) von Thomas Krumbein nicht mehr vorhanden...
komma4 hat geschrieben:Fügst Du reine nummerische Werte ein? Wie?
Also ich habe einen Auswahldialog erstellt, aus dem man sich vordefinierte Texttabellenvorlagen auswählen kann. Diese Vorlagen sind aber sehr unterschiedlich, mal kann z.B. die Spalte [Preis] in der 3. und mal in der 5 Spalte stehen. Nun habe ich ein separates Makro zum Zeile einfügen erstellt das in Abhängigkeit der gewählten Texttabellenvorlage die eingefügte Zeile (bzw. einzelne Zellen der Zeile) formatieren soll. Z.B. suche ich auch nach der Möglichkeit, per Code den Zellschutz für eine Zelle zu setzen.

Viele Güße
stoni
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Texttabellenfelder formatieren

Beitrag von komma4 »

Es bleibt dabei: mit der hier verwendeten 2.4.0 kann ich NumberFormat setzen, wie ich möchte, das funktioniert nicht wie erwartet (Bug?).

Ich verwende bei den Tests die Konstanten aus com.sun.start.util.NumberFormat, dort ist
4 = TIME
und
8 = CURRENCY

Da Du in der BASE-Sektion schreibst: verwendes Du eine Datenquelle? Eine Abfrage?

Ich nutze die Formatierungsmöglichkeiten einer Abfrage, um die Ergebnisspalte "einfach" als Text einzufügen:
SELECT ... to_char( t091_rechnung.netto, '99G999D99 L' ) ...
[PostgreSQL-Syntax!]


Vielleicht ist das für Dich auch eine Lösung?!
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)
stoni
*
Beiträge: 14
Registriert: Fr, 28.03.2008 22:47

Re: Texttabellenfelder formatieren

Beitrag von stoni »

ein Teil der Zelleninhalte wird über eine Abfrage gefüllt - ich werde versuchen, Deine Lösung mal auszuprobieren. Dann brauche ich "nur noch" eine Lösung, wie ich einzelne Zellen per Code schützen kann. Über das Menü Zeile -> Zelle schützen kann ich einzelne Zellen der Texttabelle manuell schützen, dann müsste es doch auch eine (Zell-)Eigenschaft geben, die man per Code zuweisen kann?

Viele Grüße
stoni
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Texttabellenfelder formatieren

Beitrag von komma4 »

Natürlich :-)

Richtig erkannt: ist eine Zell-Eigenschaft - über RANGE kommst Du nicht weiter, aber so:

Code: Alles auswählen

oZelle = oTabelle.getCellByName( "B2" )
oZelle.isProtected = TRUE
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)
stoni
*
Beiträge: 14
Registriert: Fr, 28.03.2008 22:47

Re: Texttabellenfelder formatieren

Beitrag von stoni »

Vielen Dank! Genau das hatte ich gesucht. :lol:

Ciao
stoni
Antworten