如何使用xlwt写入单元格时实现本地化样式
我正在用Python的xlwt库写一个Excel表格,我需要把数字格式化成用“.”作为千位分隔符,就像巴西葡萄牙语那样。
我试过:
style.num_format_str = r'#,##0'
但是这样设置后,千位分隔符变成了','
。
如果我尝试把num_format_str设置为'#.##0'
,那么数字会显示成1234.000,而不是1.234。如果我在OpenOffice中打开一个文档并格式化单元格,我可以把单元格的语言设置为“葡萄牙语(巴西)”,这样OpenOffice会把格式代码显示为"#.##0"
,但我找不到方法把单元格的语言设置为巴西葡萄牙语。
有什么想法吗?
1 个回答
6
XLS文件中的千位分隔符(还有小数点等)是以一种不依赖地区的方式记录的。记录的千位分隔符是逗号。它的显示方式取决于用户的地区设置。OpenOffice Calc允许用户更改默认的地区设置(路径是:工具 / 选项 / 语言 / 地区设置)。
使用xlwt时,你可以把数字格式字符串写成"#,###.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