首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >openpyxl如何将单元格格式设置为日期而不是自定义

openpyxl如何将单元格格式设置为日期而不是自定义
EN

Stack Overflow用户
提问于 2020-05-22 13:37:04
回答 2查看 963关注 0票数 1

我正在使用openpyxl和pandas来生成Excel文件,并且需要将日期格式化为Excel中的日期。导出文件中的日期以dd/mm/yyyy格式正确格式化,但是当我右击一个单元格并转到“设置单元格格式”时,它显示“自定义”,有没有办法更改为日期?下面是我指定日期格式的代码。

代码语言:javascript
复制
 writer = pd.ExcelWriter(dstfile, engine='openpyxl', date_format='dd/mm/yyyy')

我也曾尝试设置cell.number_format = 'dd/mm/yyyy',但仍然在Excel中获得自定义格式。

EN

回答 2

Stack Overflow用户

发布于 2020-05-22 18:42:28

如果在数据框中将它们另存为字符串,则可能需要将它们转换为python中的datetime对象。一种方法是遍历单元格,并在使用ExcelWriter之后执行

代码语言:javascript
复制
cell = datetime.strptime('30/12/1999', '%d/%m/%Y')
cell.number_format = 'dd/mm/yyyy'

一种更好的方法是在此之前转换数据帧中的列。你可以在Pandas中使用to_datetime函数来实现。

有关转换数据帧中的整个列的信息,请参阅this answer

票数 0
EN

Stack Overflow用户

发布于 2022-01-14 20:36:21

答案可以在Converting Data to Date Type When Writing with Openpyxl的评论中找到。

确保将datetime.datetime对象写入单元格,然后:

代码语言:javascript
复制
.number_format = 'mm/dd/yyyy;@'  # notice the ';@'

例如,

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61948513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档