如何用Python的openpyxl批量为Excel中值为Alexandre的单元格着色?
解决openpyxl批量为指定值单元格着色的问题
你的问题出在两个地方:
- 循环B列单元格时,你硬编码给固定的
B3设置颜色,所以只有这一个单元格会变色 - 尝试用
ws['B']、ws['B:B']这类写法时,返回的是单元格组成的元组(tuple),元组没有fill属性,因此报错
修正后的代码
path_to_excel="doc.xlsx" exemple=openpyxl.load_workbook(path_to_excel) ws = exemple['Sheet1'] # 目标工作表名称 from openpyxl.styles import PatternFill # 定义填充色(十六进制值) Ok_couleur = PatternFill(patternType='solid', fgColor='94e0de') # 遍历B列的每个单元格 for cell in ws['B']: if cell.value == "Alexandre": # 直接给当前匹配到的单元格设置填充色 cell.fill = Ok_couleur # 必须保存才能让修改生效 exemple.save(path_to_excel)
关键说明
- 遍历
ws['B']时,每个cell就是B列的单个单元格对象,直接操作它的fill属性即可 - 一定要调用
exemple.save(),否则修改只会停留在内存里,不会写入到Excel文件中
扩展:遍历整个工作表所有单元格
如果需要给整个表格里所有值为"Alexandre"的单元格着色,把循环改成这样:
# 遍历工作表所有行和单元格 for row in ws.iter_rows(): for cell in row: if cell.value == "Alexandre": cell.fill = Ok_couleur
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

