Как локализовать стиль при написании ячейки с помощью xlwt - PullRequest
1 голос
/ 14 мая 2010

Я пишу электронную таблицу Excel с xlwt Python, и мне нужно отформатировать числа с помощью "." как разделитель тысяч, как это происходит на бразильском португальском языке.

Я пробовал:

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

И он устанавливает разделитель тысяч как ','.

Если я попытаюсь установить num_format_str to '#.##0', я получу число в формате 1234.000 вместо 1.234. И если я открою n документов в OpenOffice и отформатирую ячейки, я могу установить язык ячейки на «Португальский (Бразилия)», а затем OpenOffice покажет код формата как "#.##0", но я не могу найти способ установите язык ячейки на бразильский португальский.

Есть идеи?

1 Ответ

6 голосов
/ 15 мая 2010

Разделитель тысяч (и десятичная «точка» и т. Д.) Записываются в файл XLS независимо от локали. Записанный разделитель тысяч - это запятая. Как это отображается, зависит от локали пользователя. OpenOffice calc позволяет пользователю переопределить локаль по умолчанию (Инструменты / Параметры / Языки / Настройка локали).

С xlwt напишите ваш num_format_str как "#,###.00", а ваши данные как float("1234567.89"), например:

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")

Откройте выходной файл с помощью OO Calc и попробуйте различные настройки локали. Я получил эти результаты:

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