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

如何用Python修改现有考勤Excel单元格颜色?xlwt使用遇报错

解决现有Excel考勤表修改单元格颜色的问题

首先得说清楚,你踩了xlwt的一个关键坑:xlwt只能用来新建并写入.xls格式的Excel文件,完全不支持修改已存在的文件,这就是你遇到问题的核心原因。而且你代码里的df.merge(x,x,y,y,style)完全用错了——这是pandas用来合并数据框的方法,和设置单元格样式半毛钱关系都没有,自然会报错。

要修改现有Excel的单元格颜色,推荐用openpyxl(支持.xlsx格式,无需依赖本地Excel)或者xlwings(适合复杂Excel操作,但需要本地安装Excel),这里给你最常用的openpyxl方案:

步骤1:安装openpyxl

先在命令行里安装依赖:

pip install openpyxl

步骤2:编写修改单元格颜色的代码

下面的代码可以直接加载你现有的考勤Excel,修改指定单元格的颜色后保存:

from openpyxl import load_workbook
from openpyxl.styles import PatternFill

def set_cell_color(excel_path, target_row, target_col, fill_color="FFFF00"):
    # 加载已有的Excel文件
    wb = load_workbook(excel_path)
    # 获取要操作的工作表(如果不是默认Sheet1,改成你的表名,比如wb["员工考勤表"])
    ws = wb.active
    # 获取目标单元格(注意:openpyxl的行、列都是从1开始计数的)
    target_cell = ws.cell(row=target_row, column=target_col)
    # 设置实心填充颜色,这里的FFFF00对应你原来xlwt里的colour=4(黄色)
    solid_fill = PatternFill(start_color=fill_color, end_color=fill_color, fill_type="solid")
    target_cell.fill = solid_fill
    # 保存修改(可以直接覆盖原文件,也可以换路径存新文件)
    wb.save(excel_path)

# 调用示例:修改第3行第5列的单元格为黄色
set_cell_color("你的考勤表.xlsx", 3, 5)

一些实用提示

  • 如果你的考勤表是旧版.xls格式,openpyxl不支持,这时候可以先把文件转成.xlsx格式再操作,或者用xlrd读取原数据、xlwt新建文件写入修改后的内容(但这种方式需要复制所有原有数据,比较繁琐)。
  • 颜色的十六进制码可以自由调整,比如红色是FF0000、蓝色是0000FF,按需替换即可。
  • 如果需要批量修改调班员工的单元格,把要修改的坐标(比如[(2,3), (5,6)])存成列表,循环调用set_cell_color就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:58:19