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

Python设置Excel日期列条件格式触发NoneType报错求解决方案

问题原因

运行代码抛出'NoneType' object has no attribute 'group'错误,核心来自两个实现问题:

  • xlsxwriter写入引擎的date类型条件格式,不支持直接传入Python原生datetime对象作为边界值,传入后内部正则匹配标准日期格式失败,就会触发空对象调用属性的报错。
  • 需求是筛选H列中晚于ip_date的单元格高亮,不需要用between规则搭配9999年的远场上限,直接用大于判断的规则逻辑更简洁,也能减少参数传错的概率。
可行实现方案

需要先把Python日期对象转成Excel可识别的日期序列值,用xlsxwriter自带的datetime_to_excel_datetime工具方法做转换即可,推荐直接用大于匹配规则,代码如下:

import datetime
import xlsxwriter
from xlsxwriter.utility import datetime_to_excel_datetime

# 日期转换:第二个参数对应是否为1904日期系统,普通Windows Excel默认填False
target_excel_date = datetime_to_excel_datetime(ip_date, False, False)

writer.sheets[sheet_name].conditional_format('H:H',
    {
        'type': 'date',
        'criteria': 'greater than',
        'value': target_excel_date,
        'format': latest_format
    }
)

如果要保留原有between的写法,只需要把上下限两个日期都做同样的格式转换即可:

import datetime
import xlsxwriter
from xlsxwriter.utility import datetime_to_excel_datetime

min_excel_date = datetime_to_excel_datetime(ip_date, False, False)
max_excel_date = datetime_to_excel_datetime(
    datetime.datetime.strptime('9999-01-01','%Y-%m-%d'), 
    False, 
    False
)

writer.sheets[sheet_name].conditional_format('H:H',
    {
        'type': 'date',
        'criteria': 'between',
        'minimum': min_excel_date,
        'maximum': max_excel_date,
        'format': latest_format
    }
)

注意:如果处理的是Mac系统生成的、启用了1904日期系统的Excel文件,转换日期时把datetime_to_excel_datetime的第二个参数改为True即可,避免日期偏移。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:45:35