BastiL hat geschrieben:Unter Linux sollte das keine Rolle spielen. Ich kompiliere libreoffice aus den Quellen gegen das System-Python (2.7.3). Also sollte da auch Python 2.7.3 verwendet werden.
Es kann natürlich sein, dass das interne Wrapper-Skript damit nicht mehr klarkommt. Was ich tun möchte ist eine Zelle in Euro formatieren:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys, datetime
import uno
from com.sun.star.sheet.CellInsertMode import DOWN
from com.sun.star.util import Date
thisComponent = XSCRIPTCONTEXT.getDocument()
sheet = thisComponent.Sheets.getByName('Tabelle 1')
oFormats = thisComponent.NumberFormats
aLocale = thisComponent.getPropertyValue("CharLocale")
format_waehrung = oFormats.addNew('#.##0,00 [$€-407];-#.##0,00 [$€-407]', aLocale )
sheet.getCellRangeByPosition(1,1).NumberFormat = format_waehrung
Aus soffice heraus ist nur Code innerhalb einer Function ausführbar (zumindest übers Menü),
warum postest du Code den man gründlich überarbeiten muss um ihn zu testen
zuerst mal die Version die mit LO 3 läuft.
( ich hab alles weggelassen was für
diese Function nicht benötigt wird, und zusätzlich eine 'if-Abfrage' eingebaut
um Fehler bei bereits vorhandenem Format auszuschliessen )
Code: Alles auswählen
# -*- coding: utf-8 -*-
def set_format():
thisComponent = XSCRIPTCONTEXT.getDocument()
sheet = thisComponent.Sheets.getByName('Tabelle1')
oFormats = thisComponent.NumberFormats
aLocale = thisComponent.getPropertyValue("CharLocale")
euro_format = '#.##0,00 [$€-407];-#.##0,00 [$€-407]'.decode('utf8') # hier ist der Unterschied
format_number = oFormats.queryKey(euro_format, aLocale, True)
if format_number == -1:
format_number = oFormats.addNew(euro_format, aLocale )
cell = sheet.getCellByPosition(1,1)
cell.NumberFormat = format_number
Für
LO4 mit Python3.3 ändert sich nur eine Zeile zu:
Code: Alles auswählen
<snip>
euro_format = '#.##0,00 [$€-407];-#.##0,00 [$€-407]'
# hier muss(bzw. darf) nicht mehr decodiert werden ↑↑
<snip>
Wenn du LO4 gegen Python2.7 compilierst
könnte die obere Version funktionieren -
Du solltest dann aber mal die Pythonscripte im Programmordner mit denen aus einem LO3.? vergleichen da sind ein paar Zeilen dazugekommen um mit Py3.3 kompatibel zu werden.
Karolus