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

openpyxl 3.1.2读取带筛选Excel报错,求无需取消筛选的解决方案

解决openpyxl读取带筛选Excel时的ValueError问题

当使用openpyxl 3.1.2执行wb = openpyxl.load_workbook(file)读取带筛选的Excel文件时,出现的ValueError: Value must be either numerical or a string containing a wildcard错误,是因为openpyxl对某些复杂筛选规则(如日期筛选、不含通配符的自定义文本筛选)的解析逻辑存在限制。以下是几种无需取消筛选即可加载文件的解决方案:

方法1:采用只读模式加载

只读模式下,openpyxl会跳过筛选规则的解析,仅读取单元格数据,直接绕过错误。代码示例:

import openpyxl
wb = openpyxl.load_workbook(file, read_only=True)

注意:只读模式仅支持读取操作,无法对文件进行编辑修改。

方法2:修改openpyxl源码修复筛选判断逻辑

若需要以读写模式加载文件,可手动修改openpyxl的filters.py文件(路径通常为Python安装目录下的site-packages/openpyxl/worksheet/filters.py):
找到处理筛选条件的_deserialize方法中抛出错误的代码段,将原有的数值验证逻辑:

if not (isinstance(v, (int, float)) or (isinstance(v, str) and "*" in v)):
    raise ValueError("Value must be either numerical or a string containing a wildcard")

修改为允许所有合法字符串类型的筛选条件:

if not isinstance(v, (int, float, str)):
    raise ValueError("Value must be either numerical or a string containing a wildcard")

修改后保存文件,即可用常规方式加载带筛选的Excel文件。

方法3:升级openpyxl到最新稳定版

该问题在openpyxl的后续版本中已被修复,通过升级版本可直接解决:

pip install --upgrade openpyxl

升级完成后,使用原代码wb = openpyxl.load_workbook(file)即可正常加载带筛选的文件。


内容的提问来源于stack exchange,提问作者hbszjjw

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:55:02