使用openpyxl加载xlsx文件先后遇TypeError与ValueError求助
解决openpyxl打开带条件格式的XLSX文件报错问题
问题描述
使用openpyxl 3.10版本打开XLSX文件,代码如下:
path = (r'C:\Users\karol\OneDrive\Pulpit\OASIS\*.xlsx') list_of_files = glob.glob(path) latest_file = max(list_of_files, key=os.path.getctime) excel = openpyxl.load_workbook(latest_file)
出现错误:TypeError: expected <class 'openpyxl.worksheet.cell_range.MultiCellRange'>,经排查是文件中的条件格式导致。
降级至openpyxl 2.4.11版本后,又出现错误:ValueError: {0} is not a valid coordinate or range,但代码中并未指定任何坐标或范围。
解决方案
方法1:跳过条件格式加载(推荐,无需降级)
在load_workbook中添加参数,直接跳过条件格式的解析:
excel = openpyxl.load_workbook(latest_file, read_only=True, conditional_formatting=False)
read_only=True:以只读模式加载,提升加载速度同时避免部分格式解析冲突conditional_formatting=False:彻底跳过条件格式的解析,从根源解决触发的报错- 若仅需读取单元格值而非公式,可额外添加
data_only=True参数
方法2:升级到openpyxl最新稳定版
旧版本的条件格式解析存在已知bug,升级到最新稳定版(如3.1.2)可修复部分问题:
pip install --upgrade openpyxl
升级后直接使用原代码加载,若仍报错,结合read_only=True模式尝试。
方法3:清理文件中的异常条件格式
若文件内的条件格式存在无效范围等异常,可手动修复:
- 打开目标Excel文件,选中所有工作表
- 点击「开始」选项卡 → 「条件格式」→ 「清除规则」→ 「清除整个工作表的规则」
- 保存文件后再用openpyxl加载
内容的提问来源于stack exchange,提问作者Karolina Lęcznar
相关产品推荐
相关产品推荐

