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

如何用Python在Excel条件格式设置后按无填充筛选数据?

解决方案

一、Python实现方案(基于openpyxl)

假设你之前用openpyxl实现条件格式高亮,以下是基于填充格式筛选A列无填充内容的方法:

1. 读取并筛选无填充单元格

先加载文件,遍历A列判断单元格填充状态:

from openpyxl import load_workbook

# 加载工作簿
wb = load_workbook("your_file.xlsx")
ws = wb["Sheet1"]  # 替换为你的工作表名

# 收集A列无填充的行数据(跳过表头,假设表头在第1行)
no_fill_entries = []
for row in ws.iter_rows(min_col=1, max_col=1, min_row=2):
    cell = row[0]
    # 判断是否无填充(openpyxl中无填充的fill.type为None)
    if cell.fill.type is None:
        no_fill_entries.append({"row": cell.row, "value": cell.value})

# 输出结果或进一步处理
for entry in no_fill_entries:
    print(f"行{entry['row']}: {entry['value']}")

2. 直接在Excel中设置筛选规则

如果需要让保存后的Excel文件直接显示筛选结果,可以配置自动筛选:

# 开启自动筛选
ws.auto_filter.ref = ws.dimensions

# 配置A列的无填充筛选
from openpyxl.worksheet.filters import ColorFilter, FilterColumn

color_filter = ColorFilter(fill=True)
color_filter.criteria = [{"color": None}]  # 匹配无填充格式

# 将筛选规则应用到A列(列索引从0开始)
filter_col = FilterColumn(colId=0, filters=color_filter)
ws.auto_filter.filterColumn.append(filter_col)

# 保存修改后的文件
wb.save("filtered_file.xlsx")

补充:基于重复项逻辑筛选(更可靠)

如果无填充单元格对应非重复项,可以直接通过值判断,避免格式读取误差:

# 提取A列所有值(跳过表头)
a_values = [cell.value for cell in ws["A"][1:]]
seen = set()
unique_rows = []

for row_num, val in enumerate(a_values, start=2):
    if val not in seen:
        unique_rows.append((row_num, val))
        seen.add(val)

# 后续可根据行号筛选或标记

二、Excel原生操作(快速替代)

不需要代码的话,直接用Excel自带功能:

  • 选中A列,点击「数据」选项卡→「筛选」,开启自动筛选
  • 点击A列表头的筛选箭头,选择「颜色筛选」→「无填充」
  • 瞬间就能得到筛选结果,适合快速操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:33:26