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

如何用Python读取Excel Autofilter(自动筛选)规则?

读取Excel自动筛选(Autofilter)规则的Python实现

下面针对不同Python库,给出读取Excel中已应用的自动筛选规则的实现方法:

一、使用xlwings读取

xlwings依赖本地Excel环境,能直接调用Excel原生对象,支持读取所有类型的筛选规则:

import xlwings as xw

# 打开目标工作簿
wb = xw.Book(r"C:\Users\Desktop\Example.xlsx")
ws = wb.sheets[0]

# 检查工作表是否启用自动筛选
if ws.api.AutoFilter is not None:
    autofilter = ws.api.AutoFilter
    print(f"筛选应用范围:{autofilter.Range.Address}")
    
    # 遍历所有筛选列
    for idx in range(1, autofilter.Filters.Count + 1):
        filter_col = autofilter.Filters(idx)
        if filter_col.On:  # 仅处理已启用筛选的列
            col_num = idx
            # 读取主筛选条件
            if filter_col.Criteria1:
                print(f"第{col_num}列筛选条件:{filter_col.Criteria1}")
            # 处理多条件筛选(如"大于x且小于y")
            if filter_col.Operator != 0:
                print(f"第{col_num}列筛选运算符:{filter_col.Operator},次条件:{filter_col.Criteria2}")

二、使用openpyxl读取

openpyxl无需依赖Excel,仅支持读取基础文本/数值类筛选规则:

from openpyxl import load_workbook

# 加载工作簿(data_only=False保留公式和筛选规则)
wb = load_workbook(r"C:\Users\Desktop\Example.xlsx", data_only=False)
ws = wb.active

# 检查是否存在自动筛选
if ws.auto_filter:
    autofilter = ws.auto_filter
    print(f"筛选应用范围:{autofilter.ref}")
    
    # 遍历所有设置了筛选的列
    for col_idx, filter_obj in autofilter.filter_columns.items():
        col_num = col_idx + 1  # 转换为自然列号(openpyxl列索引从0开始)
        if filter_obj.filter:
            print(f"第{col_num}列筛选条件:{filter_obj.filter.criteria}")
            if filter_obj.filter.operator:
                print(f"第{col_num}列筛选运算符:{filter_obj.filter.operator}")

三、补充说明

  • xlwings兼容性最强,能读取Excel支持的所有筛选规则(如颜色筛选、自定义公式筛选),但必须在装有Excel的Windows/macOS环境运行。
  • openpyxl无需依赖Excel,但对复杂筛选规则(如图标集、颜色筛选)的支持有限。
  • pandas没有直接读取筛选规则的API,若需获取规则需结合xlwings或openpyxl实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:20:22