使用xlwt编写单元格时如何使用本地化样式

时间:2010-05-14 17:46:48

标签: python excel localization xlwt

我正在用Python的xlwt编写Excel电子表格,我需要使用“。”格式化数字。千万分隔符,就像巴西葡萄牙语一样。

我试过了:

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

它将千位分隔符设置为','

如果我尝试设置num_format_str to '#.##0',我会将数字格式化为1234.000而不是1.234。如果我在OpenOffice中打开n文档并格式化单元格,我可以将单元格的语言设置为“Portuguese(Brazil)”,然后OpenOffice将格式代码显示为"#.##0",但我找不到将细胞的语言设置为巴西葡萄牙语的方法。

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

千位分隔符(以及小数“点”等)以与语言环境无关的方式记录在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