如何使用XlsxWriter设置Excel单元格日期格式为'MMM DD'?
问题根因
你传入的number是Python的Unix时间戳(从1970-01-01起算的秒数),但Excel的日期序列值是从1900-01-01起算的天数,两者计数规则完全不匹配,才会出现异常的远古日期显示。
正确实现代码
XlsxWriter原生支持直接传入datetime对象,不需要手动转时间戳,框架会自动处理为符合Excel规则的日期值,同时保留你设置的显示格式,编辑栏也会展示完整的原始日期:
import xlsxwriter from datetime import datetime def Test(): # 替换为你实际的文件路径 path = "test_date.xlsx" workbook = xlsxwriter.Workbook(path) worksheet = workbook.add_worksheet() date_string = "2021-07-02" datex = datetime.fromisoformat(date_string) # 设置单元格显示格式为MMM DD formatx = workbook.add_format({'num_format': 'MMM DD'}) # 直接传入datetime对象即可,无需转时间戳 worksheet.write('A1', datex, formatx) workbook.close()
效果说明
- 单元格内会按你设置的格式显示为
July 02 - 顶部编辑栏会自动展示完整的原始日期
07/02/2021(具体格式和你系统区域的短日期设置匹配)
如果有特殊场景需要手动生成Excel日期序列值,可调用XlsxWriter内置工具方法转换:
from xlsxwriter.utility import datetime_to_excel excel_date_num = datetime_to_excel(datex) worksheet.write('A1', excel_date_num, formatx)
内容的提问来源于stack exchange,提问作者Asta
相关产品推荐
相关产品推荐

