1

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

我试过了:

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

并将千位分隔符设置为','.

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

有任何想法吗?

4

1 回答 1

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
于 2010-05-15T13:19:51.987 回答