Python Xlsxwriter-使日期遵循不同的语言环境格式

问题描述 投票:2回答:1

使用Xlsx编写器,我想编写符合操作系统区域/语言设置设置的语言环境格式的日期。例如,加拿大操作系统设置的默认格式为“ yyyy-mm-dd”,而在德国,默认格式为“ dd.mm.yy”。如何使日期具有响应性?

我已经阅读了文档,但仍然无法解决。

这是我尝试过的:

import xlsxwriter
from datetime import date

workbook = xlsxwriter.Workbook('sample.xlsx')
worksheet = workbook.add_worksheet()

my_date = date(2020, 1, 31)
my_format = workbook.add_format({'num_format': 'mm/dd/yyyy'})
worksheet.write(0, 0, my_date, my_format)

workbook.close()

  • 在Excel中设置为英语-加拿大,我希望是'2020-01-31',但得到的是'01 -31-2020'

  • 在Excel中设置为德语,我希望是'31 .01.20',但得到的是'01 .31.2020'。

因此它设法使用适当的定界符,但其余部分是错误的。

在此先感谢

python date format xlsxwriter
1个回答
0
投票

第一个问题是,是否可以在Excel中设置日期格式,该日期格式将更改为与所需语言环境相匹配的方式。我认为不是。

如果在Excel中设置任何“ mm-dd-yyyy”样式格式,则将在其他语言环境中获得该格式(分隔符除外)。

因此,如果在Excel中是不可能的,那么在XlsxWriter中将是不可能的(同样,如果在Excel中是可能的,那么它在XlsxWriter中也将相同)。

一种解决方法是使用XlsxWriter中的in-built Excel number formats之一。这些是数字索引而不是字符串:

import xlsxwriter
from datetime import date

workbook = xlsxwriter.Workbook('sample.xlsx')
worksheet = workbook.add_worksheet()

my_date = date(2020, 1, 31)
my_format = workbook.add_format({'num_format': 14})
worksheet.write(0, 0, my_date, my_format)

workbook.close()

此日期(2020年12月31日)在加拿大区域设置为20-12-31,在德国区域设置为31.12.20。但是,没有任何内置格式可以提供4位数的年份。

另请参见XlsxWriter文档中的Number Format CategoriesNumber Formats in different locales。>>

© www.soinside.com 2019 - 2024. All rights reserved.