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

Python实现Excel单元格彩色与非彩色文本提取

Excel单元格多色文本提取方案

多色文本单元格示例

各库支持情况说明

  • pandas、xlrd:无法实现需求。这两个库读取单元格时仅会返回完整的纯文本内容,不会保留单元格内不同文本段的独立字体颜色属性,无法拆分多色文本。
  • openpyxl:可以实现需求,仅支持.xlsx格式文件。该库支持读取单元格富文本属性,可逐段提取文本内容和对应的字体颜色。
  • 若需要处理旧版.xls格式文件,可使用xlwings(跨平台,依赖本地安装Excel/WPS)或pywin32(仅Windows平台)调用Office原生接口读取,核心逻辑和openpyxl方案一致。

openpyxl实现代码

首先安装依赖:

pip install openpyxl

提取代码示例:

from openpyxl import load_workbook
from openpyxl.cell.rich_text import TextBlock

# 加载文件时必须开启rich_text参数,否则无法读取分段富文本
wb = load_workbook("你的目标文件.xlsx", rich_text=True, data_only=False)
ws = wb["目标工作表名称"]

# 示例:提取A1单元格的分色文本,可按需遍历整列单元格
cell = ws["A1"]
color_content = {}

for seg in cell.value:
    # 无单独格式的普通文本段,使用单元格默认字体颜色
    if isinstance(seg, str):
        # 获取单元格默认字体颜色,无特殊设置时默认是黑色
        default_color = cell.font.color.rgb if cell.font.color else "FF000000"
        color_content.setdefault(default_color, []).append(seg)
    # 带独立格式的富文本块
    elif isinstance(seg, TextBlock):
        seg_color = seg.font.color.rgb if seg.font.color else "FF000000"
        color_content.setdefault(seg_color, []).append(seg.text)

# 拼接同颜色的文本片段
for color in color_content:
    color_content[color] = "".join(color_content[color])

print(color_content)
# 输出格式为 颜色ARGB值: 对应文本内容,示例:
# {'FF000000': '这是黑色文本', 'FFFF0000': '这是红色文本'}

注意事项

  • openpyxl返回的颜色值为ARGB格式十六进制字符串,例如纯红色为FFFF0000、纯黑色为FF000000,可根据实际文件内的颜色值做映射匹配。
  • 读取文件时不要设置data_only=True,否则可能丢失富文本格式信息。
  • 如果需要批量处理整列多色单元格,只需要遍历对应列的单元格,对每个单元格执行上述分段提取逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:09:17