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

如何用OpenPyxl实现Excel单元格内文本分色格式化?

问题分析

你的代码核心问题是颜色参数格式错误:OpenPyxl的InlineFont.color采用ARGB格式(Alpha透明度+RGB颜色值),你写的FF000000实际是黑色,而非红色;另外修改已有文件需用load_workbook,而非新建Workbook。


正确实现方案

1. 新建文件并设置单元格内多色文本

from openpyxl import Workbook
from openpyxl.cell.rich_text import CellRichText, TextBlock
from openpyxl.cell.text import InlineFont

wb = Workbook()
ws = wb.active

# 定义字体:绿色(ARGB格式:FF00FF00)、红色(FFFF0000)
green_font = InlineFont(color="FF00FF00")
red_font = InlineFont(color="FFFF0000")

# 构建富文本:拆分片段分别绑定字体
rich_text = CellRichText(
    TextBlock(green_font, "Hello"),
    " ",  # 空格使用默认字体
    TextBlock(red_font, "World!")
)

ws["A1"] = rich_text
wb.save("hello_world_richtext.xlsx")

2. 修改已有Excel文件(核心需求场景)

from openpyxl import load_workbook
from openpyxl.cell.rich_text import CellRichText, TextBlock
from openpyxl.cell.text import InlineFont

# 加载目标已有文件
wb = load_workbook("your_existing_file.xlsx")
ws = wb["Sheet1"]  # 指定需要修改的工作表,替换为你的表名

# 定义字体样式
green_font = InlineFont(color="FF00FF00")
red_font = InlineFont(color="FFFF0000")

# 以A1单元格为例,构造多色富文本
# 若需基于原有内容拆分,可先获取ws["A1"].value再处理
rich_text = CellRichText(
    TextBlock(green_font, "Hello"),
    " ",
    TextBlock(red_font, "World!")
)

ws["A1"] = rich_text
wb.save("modified_file.xlsx")  # 可选择覆盖原文件或另存为新文件

关键细节说明

  • ARGB颜色规则:前两位为透明度(一般用FF表示完全不透明),后六位为RGB颜色值:
    • 绿色:FF00FF00
    • 红色:FFFF0000
    • 黑色:FF000000
  • 富文本构造逻辑:CellRichText支持传入多个TextBlock或普通字符串,TextBlock负责绑定字体与对应文本片段;普通字符串会沿用单元格默认字体。
  • 已有文件修改:必须通过load_workbook加载文件,修改后保存即可保留原有文件的其他内容与格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 23:31:09