Python Openpyxl匹配列表值设置单元格加粗无效问题(MacOS)
问题原因
你的代码存在3个核心逻辑错误,导致加粗样式根本没有被正确应用到目标单元格:
- 循环变量覆盖+取值结构错误:
ws['A1':'A44']返回的是嵌套元组结构,外层对应每一行,内层是该行选中列的单元格对象(A列单区域切片下,每个内层元组仅包含1个A列单元格)。你写for words in A直接把原本存储关键词列表的words变量覆盖成了行元组,完全丢失了要匹配的关键词内容。 - 单元格对象未定义:循环里直接调用
cell变量,但你从来没在循环逻辑里声明、取出过单个单元格对象,正常这段代码应该抛出NameError才对,能无报错运行大概率是之前运行环境残留了同名cell变量,实际根本没遍历到目标区域的单元格。 - 匹配逻辑不符合需求:你要实现的是单元格内容包含关键词列表内的任意字符串,原代码写的是对象全等判断,完全匹配不到目标内容。
修正后可运行代码
先确保已经正确导入Font类,再按如下逻辑编写:
from openpyxl.styles import Font # 预定义加粗样式 header_style = Font(bold=True) # 选中目标区域 target_range = ws['A1':'A44'] # 定义匹配关键词列表 keywords = ['Assets', 'Current Assets', 'Liabilities', 'Equity'] # 遍历区域:外层取每行的单元格元组 for row in target_range: # 取出当前行A列的单元格对象 cell = row[0] # 跳过空单元格避免类型报错 if cell.value is None: continue # 判断单元格内容是否包含任意一个关键词 if any(keyword in str(cell.value) for keyword in keywords): cell.font = header_style # 必须执行保存操作,所有修改才会写入文件 wb.save('你的目标文件路径.xlsx')
补充说明
- 如果需要单元格值完全等于关键词才加粗,把判断条件替换为
if str(cell.value).strip() in keywords即可 - 不要在循环内重复创建Font样式对象,提前统一定义后复用即可,避免导出的Excel文件体积异常增大
- 所有样式、内容修改完成后必须调用
wb.save()写入磁盘,否则所有操作仅停留在内存中,打开原文件看不到任何变化
内容的提问来源于stack exchange,提问作者user18233539
相关产品推荐
相关产品推荐

