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

官方文档

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代表的文字格式为当前字符样式

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

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

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

 

实现一:新建样式

1. word模板中新建样式

python-docx-template包之----为文字自定义样式(一)_第1张图片

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

python-docx-template包之----为文字自定义样式(一)_第2张图片

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')

context = {
    'example' : rt,
}

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

结果:

python-docx-template包之----为文字自定义样式(一)_第3张图片

 

注意事项

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

你可能感兴趣的:(python-docx-template包之----为文字自定义样式(一))