如何使用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
相关产品推荐
相关产品推荐

