如何用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
相关产品推荐
相关产品推荐

