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

如何修改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}")

核心修改点

  1. 全覆盖遍历:针对富文本单元格,逐个检查每个文本分段的字体删除线属性,而非只处理单元格整体样式
  2. 区分文本类型:分别处理纯文本单元格和混合字体的富文本单元格,避免遗漏
  3. 精准过滤:仅保留不带删除线的文本分段,彻底清除所有带删除线的内容

验证建议

测试时重点覆盖以下场景:

  • 整个单元格带删除线
  • 单元格内部分字符带删除线(混合字体)
  • 单元格内多段不同字体的文本,部分带删除线
  • 空单元格或无删除线的正常单元格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:35:18