Python 3.9写入Excel的日期格式正确但无法正常排序求助
解决Excel无法识别日期并正确排序的问题
问题出在你把datetime对象转成了字符串写入Excel,哪怕后续设置了单元格格式,Excel依然会把该单元格内容识别为文本而非日期类型,自然无法按照日期逻辑排序。
解决方法:直接写入datetime对象,而非字符串
修改excel_update函数,去掉日期转字符串的步骤,直接将date(datetime对象)传入单元格,再通过number_format设置显示格式即可。
修改后的代码:
def excel_update(date): # 直接使用datetime对象,无需转为字符串 new_row = [date] # 追加新行到最后一行内容后的第一个空行 for col, value in enumerate(new_row, start=1): cell = sheet.cell(row=empty_row, column=col, value=value) cell.alignment = Alignment(horizontal='center', vertical='center') # 格式化日期、时间和时长列 if col in [1, 5, 6]: cell.number_format = 'DD/MM/YYYY' if col == 1 else 'HH:MM:SS' elif col == 7: cell.number_format = 'hh:mm:ss' global empty_row # 若empty_row为全局变量,需声明以修改其值 empty_row += 1 # 移动到下一个空行 wb.save(excel_file)
原理说明
- 当你写入
datetime对象时,openpyxl会自动将其转换为Excel原生的日期数值类型 - 设置
cell.number_format = 'DD/MM/YYYY'只是改变日期的显示样式,底层依然是可被Excel识别的日期值,这样排序时就会按照日期的先后逻辑处理。
内容的提问来源于stack exchange,提问作者Noob AF
相关产品推荐
相关产品推荐

