【基础】python-docx-template包之----为文字自定义样式(一)

这篇博客介绍了如何使用python-docx-template包为文字创建自定义样式。通过新建样式并指定程序中使用,文章详细阐述了两种实现方式,包括在Word模板中新建样式和在程序中直接指定样式。同时,提到了注意事项,如WPS不兼容某些颜色设置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官方文档

https://docxtpl.readthedocs.io/en/latest/

系列文

python-docx-template包之----为文字自定义格式(一)

python-docx-template包之----设置表格(二)

python-docx-template包之----疑难杂症(三)

代码操作Word时,自动更新目录(一)

python操作Word时,自动更新目录(二)

python-docx--设置表格进阶

需求:

1. word模板新建样式

2. 程序指定样式

安装

pip install docxtpl

概述

docxtpl会使用2个包

  • python-docx用于读取,编写和创建子文档
  • jinja2用于管理插入到模板docx中的标签

可以利用jinja2制作Word模板,并动态向模板中插入文字、图片、表格等内容。具体用法可查阅官方文档,这里详细介绍下如何为文字自定义样式。

{{ <var> }} 这种标签会使var代表的文字格式为当前字符样式

{{r <var> }} 如果使用richtext样式,则会在当前docx模板中删掉当前字符样式,此时如果没有指定richtext样式,则会使用Word默认样式,以下方法可以指定richtext样式。方法二可以设置文字大小、颜色、粗体、斜体。但最好使用方法一新建样式。

richtext,简写R或r,可以认为是行,这种类型新建样式的时候,样式类型是---字符,可以设置字体、颜色、大小、斜体加粗等,方法如下文。

paragraph,模板里写p,可以认为是段落,段落也有许多样式可以设置,比如缩进、对齐之类,本文并不适用,可以看我专栏里的另外一个博客  设置段落样式(缩进/对齐/间距)

 

实现一:新建样式

1. word模板中新建样式

2. 为自定义样式命名为: myrichtextstyle,需要注意的是样式基准必须为:a默认段落字体(即Character style), 可以为样式设置其他格式,比如字体大小、颜色行间距等

3. 在模板中将需要自定义格式的文字设置为richtext, 例如:

   {{r example}}

4. 在程序中,(以下为官方示例的richtext.py)

from docxtpl import DocxTemplate, RichText

tpl=DocxTemplate('test_files/richtext_tpl.docx')

rt = RichText('an exemple of ')
rt.add('a rich text', style='myrichtextstyle')
rt.add('some violet', color='#ff00ff')

context = {
    'example' : rt,
}

tpl.render(context)
tpl.save('test_files/richtext.docx')

实现二:程序指定

方法:

from docxtpl import DocxTemplate, RichText

tpl=DocxTemplate('test_files/richtext_tpl.docx')

rt = RichText('an exemple of ')
rt.add(' with ')
rt.add('some italic', italic=True)  #斜体
rt.add(' and ')
rt.add('some violet', color='#ff00ff') #颜色
rt.add(' and ')
rt.add('some striked', strike=True) #删除线
rt.add(' and ')
rt.add('some small', size=14) #字体大小
rt.add(' or ')
rt.add('big', size=60)
rt.add(' text.')
rt.add(' Et voilà ! ')
rt.add('\n1st line')
rt.add('\n2nd line')    #换行
rt.add('\n3rd line')
rt.add('\n\n<cool>')

context = {
    'example' : rt,
}

tpl.render(context)
tpl.save('test_files/richtext.docx')

结果:

 

注意事项

1. 在设置文字颜色时,rt.add("some violet",color='#ff00ff')这种设置方法,WPS不兼容,因此按照上述自定义类型的方法来设置文字颜色比较好

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晏九

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值