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

Openpyxl读取Excel日期输出为datetime对象如何转格式化字符串

解决openpyxl读取Excel日期输出为datetime对象的问题

openpyxl默认会将Excel中格式为日期的单元格值自动转换为datetime.datetime类型对象,直接写入文本文件时会输出对象的序列化格式,需要手动做类型判断和格式化转换。另外你原有代码还存在两个可优化的问题:一是不能直接将列表写入文本文件,二是循环边界设置错误会导致索引越界。

修改后的完整代码

from openpyxl import load_workbook
import datetime

wb = load_workbook(filename)
sheet = wb.active

# 使用with上下文管理器自动管理文件关闭,更安全
with open('textfile.txt', 'w+', encoding='utf-8') as report:
    # 遍历所有行,替代手动计数的while循环避免越界
    for row in sheet.rows:
        processed_cells = []
        for cell in row:
            cell_val = cell.value
            # 判断值类型为datetime时做格式化
            if isinstance(cell_val, datetime.datetime):
                processed_cells.append(cell_val.strftime('%Y-%m-%d'))
            else:
                # 非日期类型直接转字符串,空值留空
                processed_cells.append(str(cell_val) if cell_val is not None else '')
        # 用制表符拼接每行内容后写入,和原Excel列分隔格式对齐
        report.write('\t'.join(processed_cells) + '\n')

核心修改点说明

  • 增加datetime类型判断:通过isinstance(cell_val, datetime.datetime)识别日期类型的单元格值,调用strftime('%Y-%m-%d')方法转换为你需要的年-月-日格式字符串
  • 修复原代码写入报错问题:将每行的单元格处理后用制表符拼接为字符串再写入,避免直接写入列表触发类型错误
  • 优化循环逻辑:直接遍历sheet.rows替代手动计数的while循环,避免索引越界问题
  • 添加上下文管理器管理文件操作,避免文件忘记关闭导致的资源占用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:15:04