如何使用xlwt写入单元格时实现本地化样式

1 投票
1 回答
5563 浏览
提问于 2025-04-15 22:43

我正在用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

撰写回答