如何检测XLSX单元格内文本子串是否为加粗格式?
检测XLSX单元格内文本子串的加粗格式
不用转格式,直接用openpyxl就能读取XLSX单元格里的富文本片段及其格式,具体实现方法如下:
- 加载工作簿时保持默认的
data_only=False,这样才能读取到单元格的富文本结构(而非纯文本内容) - 判断目标单元格的内容是否为
RichText类型——这是openpyxl对富文本的封装对象 - 遍历
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
相关产品推荐
相关产品推荐

