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

如何检测XLSX单元格内文本子串是否为加粗格式?

检测XLSX单元格内文本子串的加粗格式

不用转格式,直接用openpyxl就能读取XLSX单元格里的富文本片段及其格式,具体实现方法如下:

  1. 加载工作簿时保持默认的data_only=False,这样才能读取到单元格的富文本结构(而非纯文本内容)
  2. 判断目标单元格的内容是否为RichText类型——这是openpyxl对富文本的封装对象
  3. 遍历RichText里的每个run(每个run对应一段格式统一的文本片段),检查每个run的font.bold属性,同时可追踪文本片段在单元格中的位置

示例代码

from openpyxl import load_workbook
from openpyxl.cell.text import RichText

# 加载目标XLSX文件
wb = load_workbook("target_file.xlsx", data_only=False)
ws = wb.active

# 定位到要检查的单元格,这里以A1为例
target_cell = ws["A1"]

if isinstance(target_cell.value, RichText):
    current_index = 0
    for text_run in target_cell.value:
        segment_text = text_run.text
        # 检查该片段是否加粗,未显式设置时默认非加粗
        is_bold = text_run.font.bold if hasattr(text_run.font, "bold") else False
        # 输出片段信息及位置范围
        print(f"文本片段:'{segment_text}' | 是否加粗:{is_bold} | 位置:{current_index} - {current_index + len(segment_text) - 1}")
        current_index += len(segment_text)
else:
    # 非富文本单元格,直接检查整体是否加粗
    cell_is_bold = target_cell.font.bold if hasattr(target_cell.font, "bold") else False
    print(f"单元格文本:'{target_cell.value}' | 是否整体加粗:{cell_is_bold}")

注意事项

  • data_only=False是关键,若设为True会丢失富文本格式信息,只保留纯文本
  • 对于多语言文件,openpyxl基于XML解析XLSX,不会丢失特殊字符或多语言内容
  • 部分run可能未显式设置加粗属性,此时默认按非加粗处理,代码中用hasattr避免属性不存在的报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:40:37