Datum auf Englisch in Calc

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

Moderator: Moderatoren

fichte.buche
***
Beiträge: 55
Registriert: Di, 29.03.2005 12:38

Datum auf Englisch in Calc

Beitrag von fichte.buche »

Ich hab ein Makro mit dem ich eine Calc-Tabelle mit Infos vollschreibe. Dies funktioniert in Deutsch wunderbar, wenn ich aber für gewisse Kunden auf Englisch das ganze haben will scheitere ich immer an der Umstellung des Datums.

In Deutsch fomatier ich die Zelle mit

Code: Alles auswählen

Sheet.getCellByPosition(4,6).NumberFormat = 76
Ich hab jetzt mit Makro aufzeichnen herauszufinden welche Nummer ich brauche im auf Englisch umzustellen und dort bekomm ich die Nummer 5081.
Wenn ich das Makro aber dann laufen lasse steht das Datum immer noch in der Form T. MMMM JJJJ in DEUTSCH da.
Wie bekomm ich das Datum auf Englisch hin?

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

Beitrag von Toxitom »

Hey fichte.buche,

der Foramtcode für YYYY-MM-DD wäre 84.

Ich habe eine Übersicht und ein Makro, das dierdiese Formatcods ausliest und anzeigt. Du findest es -> hier.

Viel Spass

Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
fichte.buche
***
Beiträge: 55
Registriert: Di, 29.03.2005 12:38

Wie gehts auf Englisch

Beitrag von fichte.buche »

Hallo Thomas,

Vielen Dank für die rasche Antwort.
Leider wird mit diesen Indexnummern der Monat immer in Deutsch angezeigt.

z.B mit 76 -> 16. Jänner 2006

ich möchte aber
16. January 2006

gibt es hierfür auch eine Möglichkeit?

Viele Grüße
Georg
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Georg,
ch möchte aber
16. January 2006

gibt es hierfür auch eine Möglichkeit?
Nein. Das wird über das Gebietsschema des Betriebssystems gesteuert. Dann müsstest du das umstellen - mit allen Konsequenzen.

Geht es dir nur um das Anzeigen eines solchen Datums, dann löse das Datum in Basic auf, und setze es als String wieder zusammen, dann kannst du einen Array mit englischen Monatsnamen definieren und entsprechend auswählen.
Jetzt lässt sich aber in Calc nicht mehr damit rechnen :-(

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
fichte.buche
***
Beiträge: 55
Registriert: Di, 29.03.2005 12:38

Danke

Beitrag von fichte.buche »

Hallo Thomas,

Vielen Dank für die Antwort, jetzt weiß ich wenistens, daß ich nicht mehr weitersuchen muß.
Es bleibt mir also nicht übrig wie wieder einmal drum-rum zu programmieren.
Aber zuerst werd ich mal versuchen meine Kollegen zu überzeugen, daß ein Datumsformat mit nur Zahlen hoffentlich ausreicht. Das wär schon x-mal einfacher.

Nochmals Danke

Gruß
Georg
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

ich möchte aber
16. January 2006

gibt es hierfür auch eine Möglichkeit?


Stelle es per Hand ein und lies es aus mit:

Code: Alles auswählen

Sub Main
x = ThisComponent.Sheets(0).getCellByPosition(4,6).NumberFormat
 msgbox x
End Sub
ergibt: 5081

dann kannst Du es künftig zuweisen:

Code: Alles auswählen

Sub Main
ThisComponent.Sheets(0).getCellByPosition(4,6).NumberFormat  = 5081
End Sub


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

Beitrag von Toxitom »

Hey Stefan,
ergibt: 5081
dann kannst Du es künftig zuweisen:
Ich glaube, das funktioniert nicht. Das geht nur, wenn du im aktuellen Dokument diesen Fromatcode einmalig "erstellt" hast - dann imgleichen Dokument. Der Controller speichert wohl diesen Code irgendwo als "benutzerdefinierten" Code- unter einer beliebigen Nummer.
Öffne mal ein neues Dokument und weise den Code einer Zelle zu - das Ergebnis ist nicht vorhersehbar.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Hallo Thomas,

Ich glaube, das funktioniert nicht.

Ja, Du hast Recht - peinlich ... :oops:

(Ich hatte mir nur das "Ausprobierverfahren" gemerkt und mußte jetzt erstmal nach einem Code suchen.)
Machen wir Dieses:

Code: Alles auswählen

Sub Datum_formatieren()
Dim Landesspezifisch As New com.sun.star.lang.Locale
oZelle = ThisComponent.Sheets(0).getCellByPosition(4,6)
Landesspezifisch.Language = "en"
Landesspezifisch.Country = "us"
FormatCode = "D. MMMM YYYY"
oNummerformat = ThisComponent.NumberFormats
FormatNummer = oNummerformat.queryKey(FormatCode, Landesspezifisch, True)
If FormatNummer = -1 Then
   FormatNummer = oNummerformat.addNew(FormatCode, Landesspezifisch)
End If
oZelle.NumberFormat = FormatNummer
End Sub
Der Controller speichert wohl diesen Code irgendwo als "benutzerdefinierten" Code- unter einer beliebigen Nummer.
Die "5081" ist meiner Meinung nach das 'Äquivalent' zu Deiner "81" in der verlinkten Beispieldatei, ich meine der 81er-Teil ist meiner Meinung nach immer die 'Codierung' für:
D. MMMM YYYY
in der jeweiligen Sprache, also wenn deutsch dann für:
T. MMMM JJJJ
Der Zusatz vor der "81" (also hier 50) ist die 'eingestellte' Sprache im obenstehenden Sinne also englisch(USA) (en + us) und ist der Zusatz nicht da ist die Einstellung "Standard". Nach kurzem Test würde ich sagen das gilt so generell, also auch für andere Codierungen, das heißt die 'Formatzahl' setzt sich zusammen aus der landesspezifischen Zahl plus die 'Formatzahl' von "Standard" (gemäß Deiner Beispieldatei).

Problem ist allerdings das ich bisher keine Möglichkeit kenne wie ich beispielsweise aus en + us auf 50 schließen kann ohne es auszuprobieren. Komisch ist auch das ich zwar das en und us bei entsprechenden Einstellungen in Absatzvorlagen (CharLocal) mittels .Language bzw. .Country auslesen konnte, das Gleiche mir aber bei Zahlenformaten in Zellen nicht gelingt (IDL-Referenz unter: .../com/sun/star/lang/Locale.html ist meiner Meinung nach der 'Einstieg' dafür)



Gruß
Stephan
Antworten