Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为不同文化/国家设置xlsx日期列格式(英国与美国)_Python_Date_Xlsx_Xlsxwriter - Fatal编程技术网

Python 为不同文化/国家设置xlsx日期列格式(英国与美国)

Python 为不同文化/国家设置xlsx日期列格式(英国与美国),python,date,xlsx,xlsxwriter,Python,Date,Xlsx,Xlsxwriter,恐怕我不能设置一个完美的复制,尽管如此,我希望我能得到一些提示 我的应用程序服务器位于英国,具有英国设置,我希望向其提供此增强功能的最终用户位于美国,具有美国设置 因此,我尝试通过在Python中格式化日期字段/列来促进日期类型转换,如下所示 d.strftime('%m/%d/%Y') 然后我使用一种格式编写xlsx format3 = workbook.add_format({'num_format': 'mm/dd/yy'}) worksheet.write(row, col, ite

恐怕我不能设置一个完美的复制,尽管如此,我希望我能得到一些提示

我的应用程序服务器位于英国,具有英国设置,我希望向其提供此增强功能的最终用户位于美国,具有美国设置

因此,我尝试通过在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中打开它时,它说这是一个日期,不是自定义的

但是当我从cmd
control international
启动并选择不同的语言格式(比如我从英国切换到美国)并再次打开xlsx时,日期的格式不会转换

我试图促进日期类型转换

人们根本不试图通过以那种方式传递字符串来“促进”日期类型转换。单元格的可视化格式与单元格的内容值完全不相交,因此请使用
工作簿保存您的代码(关于格式可视化)。添加格式
工作表。编写

format3 = workbook.add_format({'num_format': 'mm/dd/yy'})
worksheet.write(row, col,  item[0], format3)
但是删除愚蠢的字符串格式(在内容值中):

它只是在xlsxwriter中使用本机Python和Excel日期类型的开箱即用

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

format = wb.add_format()
format.set_num_format(0x0E)
完成了

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