使用Pandas读取XLSX文件遇TypeError: CellStyle.__init__()参数异常求助
解决Pandas读取XLSX时的
TypeError: CellStyle.__init__() got an unexpected keyword argument 'applyFillId'错误 错误原因
该报错由openpyxl版本过低导致:Excel文件中包含了applyFillId这个较新的样式属性,而旧版openpyxl未实现对该属性的解析逻辑,即使指定engine='openpyxl'也无法解决。
解决方案
方案1:升级openpyxl到兼容版本
执行以下命令升级openpyxl,新版本已支持解析applyFillId属性:
pip install --upgrade openpyxl
升级后直接使用原有代码即可正常读取文件:
df = pd.read_excel(input_file, sheet_name=_sheetname, skiprows=10, usecols=5, names=_columnnames)
方案2:跳过样式加载(仅需数据时使用)
如果不需要保留Excel的格式信息,可以让openpyxl跳过样式解析,直接读取数据:
import pandas as pd from openpyxl import load_workbook # 加载工作簿时跳过样式,只读模式提升效率 wb = load_workbook(input_file, read_only=True, data_only=True) ws = wb[_sheetname] # 读取指定行列:跳过前10行,提取第5列(索引从0开始) data = [] for row in ws.iter_rows(min_row=11, values_only=True): if len(row) >= 5: data.append([row[4]]) # 转换为DataFrame df = pd.DataFrame(data, columns=_columnnames)
方案3:转换Excel文件格式
若无法升级库,可将原XLSX文件用Excel另存为.xls格式,再使用xlrd引擎读取:
pip install xlrd
df = pd.read_excel(input_file, sheet_name=_sheetname, skiprows=10, usecols=5, names=_columnnames, engine='xlrd')
注意:xlrd仅支持旧版.xls格式,不兼容.xlsx。
内容的提问来源于stack exchange,提问作者Timothee Muzaliwa
相关产品推荐
相关产品推荐

