如何修改Python函数以彻底删除Excel中所有删除线文本?
彻底清除Excel中所有删除线文本的代码修改方案
问题根源
现有代码大概率只处理了单元格整体删除线或部分富文本分段,未完全遍历混合字体单元格中每个带独立字体设置的文本块,导致部分删除线文本遗漏。
修改后的完整代码(基于openpyxl)
from openpyxl import load_workbook def process_eCRF_file(file_path): wb = load_workbook(file_path) for ws in wb.worksheets: for row in ws.iter_rows(): for cell in row: if cell.value is None: continue # 处理普通文本单元格(无混合字体) if not hasattr(cell, "rich_text"): if cell.font.strike: cell.value = None continue # 处理混合字体的富文本单元格 filtered_content = [] for segment in cell.rich_text: # 富文本分段格式:要么是纯字符串,要么是带font属性的文本对象 if isinstance(segment, str): # 纯字符串继承单元格字体,无删除线则保留 if not cell.font.strike: filtered_content.append(segment) else: # 带独立字体的文本块,检查删除线属性 if hasattr(segment, "font") and not segment.font.strike: filtered_content.append(segment) # 更新单元格:过滤后为空则设为None,否则保留有效内容 cell.value = filtered_content if filtered_content else None wb.save(f"processed_{file_path}")
核心修改点
- 全覆盖遍历:针对富文本单元格,逐个检查每个文本分段的字体删除线属性,而非只处理单元格整体样式
- 区分文本类型:分别处理纯文本单元格和混合字体的富文本单元格,避免遗漏
- 精准过滤:仅保留不带删除线的文本分段,彻底清除所有带删除线的内容
验证建议
测试时重点覆盖以下场景:
- 整个单元格带删除线
- 单元格内部分字符带删除线(混合字体)
- 单元格内多段不同字体的文本,部分带删除线
- 空单元格或无删除线的正常单元格
内容的提问来源于stack exchange,提问作者Gatinovitv
相关产品推荐
相关产品推荐

