You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Openpyxl向Excel写入短日期格式的数据?

解决Openpyxl写入Excel日期显示格式问题

我之前也踩过这个坑!用Openpyxl把datetime对象写入Excel时,默认会显示成带时间的格式(比如2018-01-09 0:00:00),但其实只要给目标单元格设置对应的数字格式,就能轻松改成你想要的短日期样式。

核心解决方案:设置单元格数字格式

Excel里的日期本质是存储为序列号,显示样式完全由单元格的数字格式控制。我们只需要在写入datetime对象后,给单元格指定短日期对应的格式代码即可。

修改后的代码示例:

import datetime
from openpyxl import load_workbook

# 假设你已经加载了工作簿和工作表
# wb = load_workbook('your_file.xlsx')
# ws1 = wb.active

# 解析日期字符串
dttm = datetime.datetime.strptime(ls25Dict[cell.value][2], "%m/%d/%Y")
# 获取目标单元格
target_cell = ws1['B' + str(cell.row)]
# 写入日期值
target_cell.value = dttm
# 设置短日期格式(对应1/9/2018样式)
target_cell.number_format = 'm/d/yyyy'

# 最后记得保存工作簿
# wb.save('your_file.xlsx')

额外技巧:复用样式(批量处理更高效)

如果需要给大量单元格设置短日期格式,可以定义一个命名样式,重复应用:

from openpyxl.styles import NamedStyle

# 创建一个短日期样式
short_date_style = NamedStyle(name="short_date")
short_date_style.number_format = 'm/d/yyyy'

# 应用到单元格
target_cell.style = short_date_style

格式代码说明

  • 'm/d/yyyy':显示为1/9/2018(无前置零的月/日)
  • 'mm/dd/yyyy':显示为01/09/2018(带前置零的月/日)
  • 你可以根据需求调整格式代码,完全匹配Excel内置的日期格式。

这样设置后,单元格里的内容依然是日期类型(不是文本),后续排序、筛选、计算都能正常进行,完美解决显示问题!

内容的提问来源于stack exchange,提问作者mickNeill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:09:18