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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 23:52:40