格式化不同文化/国家/地区的xlsx日期列(英国与美国)



恐怕我无法设置一个完美的repo,但我希望能收到一些提示。

我的应用服务器在英国,设置为英国,我想向其提供此增强功能的最终用户在美国,设置为美国。

因此,我试图通过在Python中格式化日期字段/列来促进日期类型转换,如下所示

d.strftime('%m/%d/%Y')

然后我用格式写xlsx

format3 = workbook.add_format({'num_format': 'mm/dd/yy'})
worksheet.write(row, col,  item[0], format3)

当我打开xlsx并尝试按日期筛选时,Excel无法将该列正确识别为日期。这只是我在英国的问题,还是我在美国的用户的问题?

奖励积分

我已经看到了答案,现在我有一个更难的问题。假设我在英国。如果我在Excel中将单元格保存为日期,当我的用户在美国打开它时,他们会看到本地化格式的cel。

如何在python-xlsx中实现它?

这就是我尝试过的

import xlsxwriter
from datetime import date
mydate = date(2021,12,29)
path = 'C:\my\path\test.xlsx'
wb = xlsxwriter.Workbook(path)
format = wb.add_format({'num_format': 'dd/mm/yyyy'})
ws = wb.add_worksheet('mydates')
ws.write(0,0,'date')
ws.write(1,0,mydate, format)
wb.close()

当我在excel中打开它时,它会说这是一个日期,而不是定制的。

但是,当我从cmdcontrol international启动并选择不同的语言格式(假设我从英国切换到美国(,然后再次打开xlsx时,日期的格式不会转换

我试图促进日期类型转换

一个人根本不会尝试">方便">日期类型转换,以这种方式传递字符串。单元格的可视化格式与单元格内容值完全脱节,因此请使用workbook.add_formatworksheet.write保留您的代码(关于格式可视化(

format3 = workbook.add_format({'num_format': 'mm/dd/yy'})
worksheet.write(row, col,  item[0], format3)

我建议删除字符串格式(在内容值中(:

d # .strftime('%m/%d/%Y')

它只是在xlsxwriter中开箱即用,具有本地Python与Excel的日期类型。

奖励积分

有一个魔术可以获得您的加分。您必须使用Excel标准日期格式:它是数字14,十六进制的E

format = wb.add_format()
format.set_num_format(0x0E)

完成!

最新更新