Openpyxl 2.5.12中能否直接复用提取的Font对象设置Excel单元格字体?
问题:能否直接复用提取到的openpyxl Font对象设置单元格字体?
我从Excel单元格中提取了一个Font对象,具体信息如下:
<openpyxl.styles.fonts.Font object> Parameters: name='Calibri', charset=None, family=2.0, b=False, i=False, strike=None, outline=None, shadow=None, condense=None, color=<openpyxl.styles.colors.Color object> Parameters: rgb=None, indexed=None, auto=None, theme=1, tint=0.0, type='theme', extend=None, sz=12.0, u='single', vertAlign=None, scheme='minor'
这个对象包含15个属性,其中嵌套了一个Color样式对象。我想知道是否可以直接用这个Font对象设置其他单元格的字体样式,不用逐个提取属性再单独设置?
比如直接执行类似这样的代码:
cell.font = 提取到的Font对象
而不是像下面这样逐个设置属性:
cell.font = Font(size=12) cell.font = Font(underline="single") # 其他属性依次设置
注:我使用的是openpyxl 2.5.12版本,无法升级。
回答
完全可以直接复用提取到的Font对象来设置单元格字体,不需要逐个提取属性。
具体操作方式
你需要先把提取到的Font对象赋值给一个变量,再直接将这个变量赋值给目标单元格的font属性即可,示例代码如下:
# 假设已从源单元格提取到Font对象,赋值给extracted_font extracted_font = source_cell.font # 直接将该对象应用到目标单元格 target_cell.font = extracted_font
关键注意事项
- 不要复制对象的字符串表示:你示例中写的直接把
<openpyxl.styles.fonts.Font object> ...这段字符串赋值给cell.font是错误的,必须引用实际的Font对象变量。 - 版本兼容:openpyxl 2.5.12完全支持这种直接赋值的方式,Font对象本身就是可复用的样式容器,赋值时会完整传递所有属性(包括嵌套的Color对象)。
- 避免覆盖问题:如果用多次
cell.font = Font(xxx)的方式,每次都会覆盖之前的字体设置;而直接复用Font对象能一次性应用所有样式,更高效准确。
内容的提问来源于stack exchange,提问作者Basti
相关产品推荐
相关产品推荐

