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
相关产品推荐
相关产品推荐

