如何使用openpyxl在单个Excel单元格内为不同文本设置不同字号
同单元格差异化字体设置实现方案
完全可以实现。你当前通过给单元格font属性直接赋值的写法,仅支持给整个单元格配置统一字体样式,要实现同单元格内不同文本段的字号差异化设置,需要使用openpyxl的富文本能力。
前置要求
使用该功能需要保证你的openpyxl版本不低于3.1.0,低版本无原生富文本分段样式支持。
实现逻辑
通过CellRichText构造富文本对象,用TextBlock给每段需要单独设置样式的文本绑定独立的InlineFont内联样式,再将富文本对象赋值给单元格即可,不需要额外给单元格设置全局font属性。
完整示例代码
from openpyxl import Workbook from openpyxl.cell.rich_text import TextBlock, CellRichText from openpyxl.cell.text import InlineFont wb = Workbook() sheet = wb.active # 分段设置样式:Apple为10号字,Banana为20号字,中间空格保留默认样式 sheet['A1'].value = CellRichText( TextBlock(InlineFont(sz=10), 'Apple'), ' ', TextBlock(InlineFont(sz=20), 'Banana') ) wb.save('test123.xlsx')
注意事项
- 不要给已设置富文本的单元格直接赋值全局
Font对象,否则会覆盖所有分段样式,单元格会变回统一字体格式 InlineFont的字号参数名为sz,和全局字体类Font使用的size参数名不同,配置时不要写错- 除字号外,你还可以给不同
TextBlock绑定的InlineFont单独设置字体名、颜色、加粗、斜体、下划线等样式,实现复杂的文本混排效果
内容的提问来源于stack exchange,提问作者Shihau
相关产品推荐
相关产品推荐

