【问题标题】:How to have localized style when writing cell with xlwt使用 xlwt 编写单元格时如何具有本地化样式
【发布时间】:2018-06-23 02:54:56
【问题描述】:

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

我试过了:

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

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

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

有什么想法吗?

【问题讨论】:

    标签: python excel localization xlwt


    【解决方案1】:

    千位分隔符(和小数点“点”等)以与区域无关的方式记录在 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
    

    【讨论】:

    • 嗯,我明白了。看起来在 OpenOffice 中我可以为每个单元格设置不同的语言环境,但在 Excel 中却不行。我制作了一个包含三个单元格的文档,这些单元格的编号和格式相同,但语言环境不同,并以 .ods 和 .xls 格式保存。 .ods 保留每个单元格的区域设置,但 .xls 将具有所有单元格的相同区域设置。
    • “.xls 对所有单元格都具有相同的语言环境”——不,正如我所说,格式是以独立于语言环境的方式记录的。该文件没有“具有”语言环境。 Excel 根据用户的区域设置显示文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多