Openpyxl中PatternFill无法正常工作,保存文件崩溃求助
openpyxl保存文件时报错:Type error: expected<class 'openpyxl.styles.fills.Fill'>
使用openpyxl修改Excel文件填充样式时,保存阶段触发类型错误,报错提示Type error: expected<class 'openpyxl.styles.fills.Fill'>。示例代码如下:
import openpyxl fp=r'c:\\path to\\file.xlsx' wb=openpyxl.load_workbook(fp) ws1=wb['Sheet name'] pat_fil=openpyxl.styles.fills.PatternFill(patternType="solid", fgColor="00800080") ws1["A2"].fill=pat_fil wb.save("name.xlsx")
已尝试修改start_color/end_color参数、降级openpyxl至2.5.4版本,均未解决问题,环境为Microsoft 365。
可能的解决方向:
1. 简化导入并验证PatternFill参数正确性
PatternFill是Fill的子类,可直接赋值给单元格fill属性。尝试简化导入方式并使用标准纯色填充参数:
import openpyxl from openpyxl.styles import PatternFill fp = r'c:\path to\file.xlsx' # r前缀下无需双反斜杠 wb = openpyxl.load_workbook(fp) ws1 = wb['Sheet name'] # 纯色填充使用fgColor,直接传入RGB值(无需透明度前缀也可生效) pat_fil = PatternFill(patternType="solid", fgColor="800080") ws1["A2"].fill = pat_fil wb.save("name.xlsx")
2. 排除原工作簿损坏问题
创建新工作簿测试基础功能,确认是否为原文件异常导致:
import openpyxl from openpyxl.styles import PatternFill wb = openpyxl.Workbook() ws = wb.active pat_fil = PatternFill(patternType="solid", fgColor="800080") ws["A2"].fill = pat_fil wb.save("test.xlsx")
若测试文件能正常保存,说明原工作簿可能存在样式损坏,建议复制数据到新工作簿后再操作。
3. 清理openpyxl环境并重装
若存在多版本冲突,彻底卸载后重装指定版本:
pip uninstall -y openpyxl pip install openpyxl==2.5.4 # 或最新稳定版本
4. 确认工作表名称正确性
确保wb['Sheet name']中的工作表名称与原文件完全一致(注意大小写、空格),错误的名称会导致后续操作异常。
内容的提问来源于stack exchange,提问作者NoobQuestions1
相关产品推荐
相关产品推荐

