Python使用XlsxWriter为Excel添加条件格式时报AttributeError如何解决
错误原因
- 核心原因:XlsxWriter库的定位是创建全新的Excel文件,不支持读取、编辑已存在的Excel文件。你调用
xlsxwriter.Workbook()传入已有文件路径时,会直接生成一个空白的同名文件覆盖原有文件,这个空白文件中不存在名为Summary的工作表,get_worksheet_by_name()方法找不到对应工作表就会返回None,后续调用conditional_format方法就会抛出NoneType相关的属性错误。 - 额外潜在问题:原代码中条件格式的匹配值写为字符串
'0',如果单元格中的0是数值类型,即使工作表存在也无法匹配触发格式。
解决方法
改用支持读取编辑已有Excel的openpyxl库实现需求,参考代码如下:
from openpyxl import load_workbook from openpyxl.styles import Font from openpyxl.formatting.rule import CellIsRule # 加载已有Excel文件 wb = load_workbook(r"C:\Users\simon\REPORT.xlsx") # 获取指定工作表 ws = wb['Summary'] # 定义灰色字体样式 gray_font = Font(color='A6A6A6') # 添加条件格式:单元格值等于0时应用灰色字体 ws.conditional_formatting.add( 'E21:U49', CellIsRule(operator='equal', formula=[0], font=gray_font) ) # 保存修改,担心损坏原文件可修改为新的路径另存 wb.save(r"C:\Users\simon\REPORT.xlsx")
内容的提问来源于stack exchange,提问作者Berny
相关产品推荐
相关产品推荐

