我正在使用openpyxl和pandas来生成Excel文件,并且需要将日期格式化为Excel中的日期。导出文件中的日期以dd/mm/yyyy格式正确格式化,但是当我右击一个单元格并转到“设置单元格格式”时,它显示“自定义”,有没有办法更改为日期?下面是我指定日期格式的代码。
writer = pd.ExcelWriter(dstfile, engine='openpyxl', date_format='dd/mm/yyyy')我也曾尝试设置cell.number_format = 'dd/mm/yyyy',但仍然在Excel中获得自定义格式。
发布于 2020-05-22 18:42:28
如果在数据框中将它们另存为字符串,则可能需要将它们转换为python中的datetime对象。一种方法是遍历单元格,并在使用ExcelWriter之后执行
cell = datetime.strptime('30/12/1999', '%d/%m/%Y')
cell.number_format = 'dd/mm/yyyy'一种更好的方法是在此之前转换数据帧中的列。你可以在Pandas中使用to_datetime函数来实现。
有关转换数据帧中的整个列的信息,请参阅this answer。
发布于 2022-01-14 20:36:21
答案可以在Converting Data to Date Type When Writing with Openpyxl的评论中找到。
确保将datetime.datetime对象写入单元格,然后:
.number_format = 'mm/dd/yyyy;@' # notice the ';@'例如,
import datetime
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws['A1'] = datetime.datetime(2021, 12, 25)
ws['A1'].number_format = 'yyyy-mm-dd;@'
wb.save(r'c:\data\test.xlsx')注:这些日期仍然有点“有趣”,因为它们不会在数据透视表中自动分组为月和年(如果你喜欢这样的东西)。在数据透视表中,您可以手动单击它们并设置分组:https://support.microsoft.com/en-us/office/group-or-ungroup-data-in-a-pivottable-c9d1ddd0-6580-47d1-82bc-c84a5a340725
https://stackoverflow.com/questions/61948513
复制相似问题