[gelöst]Methode setString = Zahlenformat?

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

Moderator: Moderatoren

clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

[gelöst]Methode setString = Zahlenformat?

Beitrag von clag »

Hallo Kenner und Könner,
eine Kleingkeit an der Methode "setString" irritiert mich bzw. ich verstehe es nicht und ich hoffe auf Aufklärung.

Die Methode "setString" schreibt einen String in die gewählte Zelle soweit ok,
aber gleichzeitigt zwingt diese Schreibaktion die Zelle in das Zahlenformat!
Das erscheint mir unlogisch, selbst eine vorher gesetzte Text Formatierung wird wieder "platt" gemacht.
Hat das einen besonderen Grund, wenn ja welchen?
Zuletzt geändert von clag am Fr, 19.08.2016 13:53, insgesamt 1-mal geändert.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Methode setString = Zahlenformat?

Beitrag von F3K Total »

Hallo Clag,
tut mir leid, ich kann das nicht nachvollziehen, ob per Zellvorlage oder hart formatiert, am eingestellten Format ändert sich bei mir durch .setstring nichts.
Gruß R
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Methode setString = Zahlenformat?

Beitrag von Stephan »

aber gleichzeitigt zwingt diese Schreibaktion die Zelle in das Zahlenformat!
Das erscheint mir unlogisch, selbst eine vorher gesetzte Text Formatierung wird wieder "platt" gemacht.
kann ich nicht nachvollziehen, getestet mit AOO 4.1.2 und OOo 3.3.0 (Win 7) und den Zellformatierungen "@" und "#.##0,00;[ROT]-#.##0,00", sowie dem Makro:

Code: Alles auswählen

Sub Main
ThisComponent.Sheets(0).getCellByPosition(0,0).setString("abc")
End Sub



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

Re: Methode setString = Zahlenformat?

Beitrag von Toxitom »

Hey Clag,
Die Methode "setString" schreibt einen String in die gewählte Zelle soweit ok,
Nicht unbedingt. Sie kann einen String schreiben - tatsächlich schreibt sie nur den Stringwert (Text) des Zellinhaltes.

Eine Zelle kann nur drei unterschiedliche Inhalte (Typen) aufnehmen: Strings , Values oder Formeln (oder eben nichts). Der Inhalt selbst wird über die Type-Eigenschaft festgelegt. Da du den Type jedoch nicht explizit festlegen kannst, wird der eingegebene Wert interpretiert und entsprechend des Ergebnisses die Zelle formatiert (der Type gesetzt).

Wenn Du also schreibst :
- oZelle.setString("123") wird dies als Zahl gewertet, der Type erhält den Wert "1" und die Zelle wird numerisch formatiert.
- oZelle.setString("'123") wird dies als String gewertet, der Type erhält den Wert "2" und die Zelle wird textmäßig formatiert.
- oZelle.setString("=1+123") wird dies als Formel gewertet, der Type erhält den Wert "3" und die Zelle wird das Ergebnis der Formel anzeigen.

Funktioniert übrigens auch, wenn Du statt SetString() setFormula() nimmst.

Also: Nicht jeder "setString()" Wert ist immer ein Text!

VG Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Methode setString = Zahlenformat?

Beitrag von clag »

Hallo zusammen,

ersteinmal besten Dank für eure Antworten.
Mein Problem ist nun, ich kann nicht mehr reproduzieren was mich gestern über 2 Std beschäftigt hat. :-?
Aber es könnte möglicherweise eine falsche Erwartungshaltung meinerseits gewesen sein nämlich, das immer ein Textstring geschrieben wird.

also "tschuldigung" für den blinden Alarm
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Antworten