2010-05-14 4 views
1

J'écris une feuille de calcul Excel avec xlwt de Python et j'ai besoin de chiffres pour être formatés en utilisant "." comme séparateur de milliers, comme c'est dans la langue portugaise brésilienne.Comment avoir un style localisé lors de l'écriture de cellule avec xlwt

J'ai essayé:

style.num_format_str = r '#, ## 0'

Et il définit le séparateur de milliers comme ''. Si j'essaie de mettre num_format_str à '#. ## 0', j'obtiendrai un nombre formaté de 1234.000 au lieu de 1.234. Et si j'ouvre un document dans OpenOffice et formate des cellules, je peux définir la langue de la cellule sur "Portugais (Brésil)" et OpenOffice montrera le code de format comme étant "#. ## 0", mais je ne trouve pas un moyen de définir la langue de la cellule au portugais brésilien.

Des idées?

Répondre

6

Le séparateur de milliers (et le "point" décimal, etc.) sont enregistrés dans le fichier XLS d'une manière indépendante des paramètres régionaux. Le séparateur de milliers enregistré est une virgule. La façon dont il est affiché dépend des paramètres régionaux de l'utilisateur. OpenOffice calc permet à l'utilisateur de remplacer les paramètres régionaux par défaut (paramètre Outils/Options/Langues/Paramètres régionaux).

Avec xlwt, écrivez votre num_format_str comme "#,###.00" et vos données comme float("1234567.89"), comme ceci:

import xlwt 
b = xlwt.Workbook() 
s = b.add_sheet('x') 
style = xlwt.easyxf("", "#,###.00") 
s.write(0, 0, 1234567.89, style) 
b.save("locale_fmt_demo.xls") 

Ouvrez le fichier de sortie avec OO Calc et essayer différents paramètres régionaux. J'ai obtenu ces résultats:

English (Australia): 1,234,567.89 
Portuguese (Brazil): 1.234.567,89 
French (France):  1 234 567,89 
+0

Hmmm, je vois. On dirait que dans OpenOffice je peux avoir une locale différente pour chaque cellule, mais pas dans Excel. J'ai fait un document avec trois cellules avec le même nombre et le même format mais les différentes locales et sauvé dans les formats .ods et .xls. Le .ods conserve les paramètres régionaux pour chaque cellule, mais les fichiers .xls auront les mêmes paramètres régionaux pour toutes les cellules. – lfagundes

+0

"les .xls auront les mêmes locales pour toutes les cellules" - NON, comme je l'ai dit, le formatage est enregistré de manière indépendante des paramètres régionaux. Le fichier "n'a" pas de paramètres régionaux. Excel affiche le fichier en fonction des paramètres régionaux de l'utilisateur. –

Questions connexes