2309docx07样式

使用风格

访问风格

使用"Document.styles"属性访问风格:

document = Document()
styles = document.styles
styles
<docx.styles.styles.Styles object at 0x10a7c4f50>

Styles对象可字典访问风格:

styles["Normal"]
<docx.styles.style._ParagraphStyle object at <0x10a7c4f6b>
//查找风格要用英文名

迭代风格对象.可用BaseStyle上的标识属性,生成已定义风格的各种子集.如,此代码生成已定义段落风格的列表:

from docx.enum.style import WD_STYLE_TYPE
styles = document.styles
paragraph_styles = [
...     s for s in styles if s.type == WD_STYLE_TYPE.PARAGRAPH
... ]
for style in paragraph_styles:
...     print(style.name)
...
Normal
Body Text
List Bullet

应用风格

"段落","运行"和"表"对象各有个风格属性.给此属性指定风格对象应用该风格:

document = Document()
paragraph = document.add_paragraph()
paragraph.style
<docx.styles.style._ParagraphStyle object at <0x11a7c4c50>
paragraph.style.name
"Normal"
paragraph.style = document.styles["Heading 1"]
paragraph.style.name
"Heading 1"

也可直接赋值风格名:

paragraph.style = "List Bullet"
paragraph.style
<docx.styles.style._ParagraphStyle object at <0x10a7c4f84>
paragraph.style.name
"List Bullet"

还可在创建时使用风格对象或其名字来应用风格:

paragraph = document.add_paragraph(style="Body Text")
paragraph.style.name
"Body Text"
body_text_style = document.styles["Body Text"]
paragraph = document.add_paragraph(style=body_text_style)
paragraph.style.name
"Body Text"

添加或删除风格

可指定唯一名和风格类型,来给文档添加新风格:

from docx.enum.style import WD_STYLE_TYPE
styles = document.styles
style = styles.add_style("Citation", WD_STYLE_TYPE.PARAGRAPH)
style.name
"Citation"
style.type
PARAGRAPH (1)

使用base_style属性指定新风格应继承的风格:

style.base_style
None
style.base_style = styles["Normal"]
style.base_style
<docx.styles.style._ParagraphStyle object at 0x10a7a9550>
style.base_style.name
"Normal"

只需调用delete()方法,即可从文档删除风格:

styles = document.styles
len(styles)
10
styles["Citation"].delete()
len(styles)
9

Style.delete()方法从文档中删除风格的定义.它不会影响应用该风格的内容.有未定义风格的内容使用该内容对象默认风格渲染,如,对段落,则为"普通".

定义符格式

可如下访问风格字体:

扫描二维码关注公众号,回复: 16601941 查看本文章
from docx import Document
document = Document()
style = document.styles["Normal"]
font = style.font

如下设置字体和大小:

from docx.shared import Pt
font.name = "Calibri"
font.size = Pt(12)

三态属性,可带True,FalseNone值.True表示打开属性,False表示关闭属性.
表示"继承".

font.bold, font.italic
(None, None)
font.italic = True
font.italic
True
font.italic = False
font.italic
False
font.italic = None
font.italic
None

下划线有点特殊.True表示下划线,False表示没有下划线,但如果不需要下划线,则用None.
其他形式(如双划线或虚线)的下划线使用WD_UNDERLINE枚举成员指定:

font.underline
None
font.underline = True
# or perhaps
font.underline = WD_UNDERLINE.DOT_DASH

定义段落格式

paragraph_format属性,来访问ParagraphFormat对象.
段落格式包括如对齐,缩进,前后间距,分页符和控件等布局.
下面是如何创建有1/4英寸悬挂缩进,上方12磅间距和控件的段落风格的示例:

from docx.enum.style import WD_STYLE_TYPE
from docx.shared import Inches, Pt
document = Document()
style = document.styles.add_style("Indent", WD_STYLE_TYPE.PARAGRAPH)
paragraph_format = style.paragraph_format
paragraph_format.left_indent = Inches(0.25)
paragraph_format.first_line_indent = Inches(-0.25)
paragraph_format.space_before = Pt(12)
paragraph_format.widow_control = True
//这里

使用段落相关的风格属性

段落风格有个指定下个段落风格的next_paragraph_style属性.只在序列(如标题)中出现一次时,最有用.
此时,段落风格,可在完成标题后自动设置回正文风格.

下面是如何将标题1风格的下个段落风格更改为正文文本的示例:

from docx import Document
document = Document()
styles = document.styles
styles["Heading 1"].next_paragraph_style = styles["Body Text"]

可赋值为None风格来恢复默认:

heading_1_style = styles["Heading 1"]
heading_1_style.next_paragraph_style.name
"Body Text"
heading_1_style.next_paragraph_style = heading_1_style
heading_1_style.next_paragraph_style.name
"Heading 1"
heading_1_style.next_paragraph_style = None
heading_1_style.next_paragraph_style.name
"Heading 1"

控制在WordUI中显示方式的风格

风格属性分两类:行为格式属性.行为属性控制风格WordUI中出现的时间和位置.格式属性确定风格字体大小及段落缩进等内容格式.

风格有五个行为属性:

hidden
unhide_when_used
priority
quick_style
locked

优先级属性用整数值.其他四个风格行为属性是三态的.

在风格库中显示风格

from docx import Document
document = Document()
style = document.styles["Body Text"]
style.hidden = False
style.quick_style = True
style.priorty = 1

从风格库中删除风格

style = document.styles["Normal"]
style.hidden = False
style.quick_style = False

使用传统风格

访问文档中的传统风格

可从风格对象访问文档中的传统风格:

document = Document()
latent_styles = document.styles.latent_styles

支持按风格名len(),迭代字典风格访问LatentStyles对象:

len(latent_styles)
161
latent_style_names = [ls.name for ls in latent_styles]
latent_style_names
["Normal", "Heading 1", "Heading 2", ... "TOC Heading"]
latent_quote = latent_styles["Quote"]
latent_quote
<docx.styles.latent.LatentStyle object at 0x10a7c4f50>
latent_quote.priority
29

更改传统风格默认值

latent_styles.default_to_locked
False
latent_styles.default_to_locked = True
latent_styles.default_to_locked
True

添加传统风格定义

可在LatentStyles上使用add_latent_style()方法添加新的传统风格.如下:

latent_style = latent_styles["List Bullet"]
KeyError:"List Bullet"风格
latent_style = latent_styles.add_latent_style("List Bullet")
latent_style.hidden = False
latent_style.priority = 2
latent_style.quick_style = True
Delete a latent style definition 

可用delete()方法删:

latent_styles["Light Grid"]
<docx.styles.latent.LatentStyle object at 0x10a7c4f50>
latent_styles["Light Grid"].delete()
latent_styles["Light Grid"]
 键错误:没有叫"浅网格"的`传统风格`

猜你喜欢

转载自blog.csdn.net/fqbqrr/article/details/132711588