如何在Django项目中将Python DateTime字段转为Excel可识别的日期格式
如何在Excel中获取格式正确的日期?
核心逻辑
Excel的日期类型本质是数值序列号,你需要传入Python原生的date/datetime类型对象而非格式化后的字符串,再配合Excel单元格格式配置,就能实现纯日期类型的写入效果。
第一步:修正基础转换逻辑
你当前使用strftime的写法会直接将时间对象转为字符串,完全不符合需求,先替换为以下代码得到原生date类型:
result["date_result_stamp"] = result["date_result_stamp"].date()
不同导出库的适配写法
- 如果你使用openpyxl做导出:
写入单元格后单独设置数字格式即可,示例:from openpyxl import Workbook wb = Workbook() ws = wb.active # 写入date类型值 ws['A1'] = result["date_result_stamp"] # 设置单元格显示格式为年-月-日 ws['A1'].number_format = 'YYYY-MM-DD' - 如果你使用pandas做导出:
导出时指定date_format参数即可,无需手动转换格式:import pandas as pd # 先将字段统一转为date类型 df['date_result_stamp'] = pd.to_datetime(df['date_result_stamp']).dt.date # 导出时配置日期格式 with pd.ExcelWriter('output.xlsx', date_format='YYYY-MM-DD') as writer: df.to_excel(writer, index=False) - 如果你使用django-import-export做导出:
直接在Resource类中配置字段组件即可,无需额外处理数据:from import_export import resources, fields from import_export.widgets import DateWidget from .models import YourModel class YourModelResource(resources.ModelResource): date_result_stamp = fields.Field( column_name='结果日期', attribute='date_result_stamp', widget=DateWidget(format='%Y-%m-%d') ) class Meta: model = YourModel
内容的提问来源于stack exchange,提问作者Flower
相关产品推荐
相关产品推荐

