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

如何用openpyxl复制含字体颜色的单元格(含富文本)?

解决openpyxl复制单元格字体样式的问题

你的代码仅保留了A2的富文本样式,原因在于:

  • A2的颜色属于富文本内联样式,使用rich_text=True加载工作簿时,cell.value会返回带格式的RichText对象,直接赋值即可保留这些内联样式;
  • A1的颜色是单元格级字体样式,这类样式存储在单元格的font属性中,仅复制value不会同步这部分样式。

修改后的代码

import openpyxl as ox
import os
import sys

path = os.path.abspath(os.path.dirname(sys.argv[0])) 
fn = os.path.join(path, "test.xlsx")
# 加载工作簿时保留富文本格式
wb = ox.load_workbook(fn, rich_text=True)
ws = wb["input"]
wsOut = wb["output"]

# 处理A1:复制内容+单元格字体样式
cell_src = ws["A1"]
cell_dst = wsOut["A1"]
cell_dst.value = cell_src.value
# 复制单元格的字体属性(包含颜色、字号、加粗等所有字体样式)
cell_dst.font = cell_src.font

# 处理A2:直接复制富文本内容即可保留内联样式
cell_src = ws["A2"]
cell_dst = wsOut["A2"]
cell_dst.value = cell_src.value

wb.save("test.xlsx")

补充说明

如果需要复制更多单元格样式(比如填充、边框、对齐方式等),可以根据需求选择:

  • 若原单元格使用的是工作簿的命名样式,直接复制样式引用:
    cell_dst.style = cell_src.style
    
  • 若原单元格是自定义格式(非命名样式),需逐个复制对应属性:
    cell_dst.font = cell_src.font
    cell_dst.fill = cell_src.fill
    cell_dst.alignment = cell_src.alignment
    # 其他样式属性以此类推
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 18:50:56