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

Python如何提取Excel无填充色单元格并统计各值出现频次?

提取Excel中白色填充单元格并统计值出现次数

所需工具

用openpyxl库处理Excel单元格样式,它支持读取.xlsx格式文件的填充色信息。先安装依赖:

pip install openpyxl

实现步骤与代码

核心逻辑是遍历所有工作表的单元格,判断填充色是否为白色(RGB值FFFFFF),收集有效值后用Counter统计出现次数。

from openpyxl import load_workbook
from collections import Counter

def extract_white_cells(excel_path):
    WHITE_RGB = "FFFFFF"
    value_counter = Counter()
    
    # 只读模式加载文件,提升大文件处理效率
    wb = load_workbook(excel_path, read_only=True, data_only=True)
    
    for sheet_name in wb.sheetnames:
        sheet = wb[sheet_name]
        # 遍历所有有数据的单元格
        for row in sheet.iter_rows(values_only=False):
            for cell in row:
                if cell.value is None:
                    continue
                
                # 判断填充色:未设置填充的单元格默认背景为白色
                fill = cell.fill
                if fill.start_color.index == WHITE_RGB or not fill.start_color.index:
                    # 转字符串统一统计(可根据需求去掉str()保留原始类型)
                    value = str(cell.value)
                    value_counter[value] += 1
    
    wb.close()
    return value_counter

# 示例调用
if __name__ == "__main__":
    result = extract_white_cells("your_file.xlsx")
    # 按出现次数降序输出
    for value, count in sorted(result.items(), key=lambda x: x[1], reverse=True):
        print(f"{value}: {count}")

关键细节说明

  • read_only=True:开启只读模式,处理大文件时性能更优;data_only=True:读取单元格计算结果而非公式本身。
  • 填充色判断:部分单元格可能未主动设置填充色(默认背景为白色),因此需同时判断not fill.start_color.index的情况。
  • 值类型处理:将值转为字符串是为了避免数字与文本形式的同一内容被分开统计;若需保留原始数据类型,可移除str()转换。
  • 格式兼容:openpyxl仅支持.xlsx格式,若处理.xls文件,建议先转成.xlsx,或使用依赖Excel客户端的xlwings库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 18:05:16