二、python-docx中paragraph说明

        Paragraph的简介在上一章已经介绍过,大家对Paragraph应该已经有了基本的了解。本章主要介绍Paragraph里各项属性和方法的说明及主要的使用场景及使用方式。

1、添加标题

标题由文档对象document添加,默认是添加一级标题,可以通过参数 level 设置,范围是1-9,如果设置为0,则表示是段落标题。

示例代码:

# 添加段落标题
document.add_heading('我是段落标题', level=0)

# 添加标题,默认是一级标题
document.add_heading('我是一级标题')

# 添加二级标题
document.add_heading('我是二级标题', level=2)

# 添加三级标题
document.add_heading('我是三级标题', level=3)

效果

2、添加段落和文本

段落(paragraph)由文档(document)创建,文本(run)由段落(paragraph)创建。

即一个文档由多个段落组成,一个段落由多个文本组成。

段落和文本通常是一起使用的。

2.1、普通文本

包括 内容文本,无序列表,有序列表,标题

示例:

p = document.add_paragraph('A plain paragraph having some ')
p.add_run('bold').bold = True
p.add_run(' and some ')
p.add_run('italic.').italic = True

p1 = document.add_paragraph()
r1 = p1.add_run()
r1.text = 'run2'
r1.bold = True

document.add_heading('Heading, level 1', level=1)
document.add_paragraph('Intense quote', style='Intense Quote')

document.add_paragraph(
    'first item in unordered list', style='List Bullet'
)
document.add_paragraph(
    'first item in ordered list', style='List Number'
)

效果:

2.2、超链接

超链接在python-docx里不能像普通文本这样去处理,后面单独用一章去讲解在Word中如何对超链接进行读取,添加,更新,删除。

3、段落设置

      3.1、对齐方式

        段落对齐方式的设置主要用到Paragraph. alignmen这个属性。

        新建的Paragraph默认段落设置为None。

paragraph = document.add_paragraph()
paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 设置为居中对齐

        WD_PARAGRAPH_ALIGNMENT是docx.enum.text. WD_PARAGRAPH_ALIGNMENT中定义的枚举类型常量。

常量1说明2

LEFT

左对齐

0
CENTER居中1
RIGHT右对齐2
JUSTIFY两端对齐3
DISTRIBUTE分散对齐4
JUSTIFY_MED以中等字符压缩比调整5
JUSTIFY_HI以高字符压缩比调整6
JUSTIFY_LOW以低字符压缩比调整7
THAI_JUSTIFY以泰语格式调整8

        前5种与Word中的定义相同

        3.2、缩进

段落的缩进主要分为 左侧缩进、右侧缩进、首行/悬挂缩进 这三个部分。分别对应python-docx中docx.text.parfmt.ParagraphFormat中的left_indent、right_indent和first_line_indent三个属性。

这三个属性都可以设置值,属于Length类型,所以需要从docx.shared类中导入单位,主要单位有pt(磅)、cm(厘米)、inches(英寸)、mm(毫米),其中pt的值为Int类型,另外三个的值为float类型。

# 导入单位
from docx.shared import Pt, Cm, Inches

3.2.1、左侧缩进

左缩进属性为left_indent,默认值为None,赋值时,必须使用单位转换,如Cm(0.75)代表值为0.75厘米。

p2.paragraph_format.left_indent = Cm(1)   # 左侧缩进1厘米

3.2.2、右侧缩进

右缩进属性为right_indent,默认值为None,赋值时,必须使用单位转换,如Inches(0.75)代表值为0.75英寸。效果同左侧缩进。

p2.paragraph_format.right_indent = Cm(0.75)   # 右侧缩进

3.2.3、首行/悬挂缩进

首行/悬挂缩进使用first_line_indent属性来实现,当值大于0时,为首行缩进;当值为小于0时,为悬挂缩进,用法同left_indent。

p2.paragraph_format.left_indent = Cm(1)     # 左侧缩进一厘米
p2.paragraph_format.first_line_indent = Pt(10.5) * 2   # 首行缩进2个汉字位; Pt(10.5)是五号字体的大小,x2表示两个字的大小

        3.3、间距

段落的间距主要分为 段前间距、段后间距和行间距。分别对应python-docx中docx.text.parfmt.ParagraphFormat中的space_before,space_after和line_spacing、line_spacing_rule 几个属性。

前三个值为Length类型,设置时需要做单位转换。

3.3.1、段前间距

设置段前间距使用space_before,默认值为None,用法同left_indent。

paragraph.paragraph_format.space_before = Pt(10) # 段前间距10磅

3.3.2、段前间距

设置段后间距使用space_after,默认值为None,用法同left_indent。

paragraph.paragraph_format.space_after = Pt(20) # 段后间距20磅

3.3.3、行间距

设置行间距可以使用2个属性line_spacing和line_spacing_rule,这两个属性不用同时设置。

paragraph.paragraph_format.line_spacing_rule = WD_LINE_SPACING.ONE_POINT_FIVE # 1.5倍行距

line_spacing_rule的值是docx.enum.text. WD_LINE_SPACING中的枚举类型的常量,值的列表如下:

ONE_POINT_FIVE1.5倍行距
AT_LEAST

最小行距

DOUBLE双倍行距
EXACTLY固定值
MULTIPLE多倍行距
SINGL单倍行距

当line_spacing_rule的值设置为EXACTLY或MULTIPLE时,需要对line_spacing属性进行设置具体的数值。

当只使用line_spacing属性时,如果值满足line_spacing_rule的规则,line_spacing_rule自动进行赋值。例如当line_spacing为2时,line_spacing_rule自动赋值为WD_LINE_SPACING.DOUBLE。

如果生成的Word文档,行间距特别大,则可以使用该属性对行间距进行设置。

4、样式

        4.1、定义文档样式

       创建一个新文档的时候,默认使用内置样式“Normal”,对内置样式做设置后,段落和文本就默认使用文档上的样式,这样就不需要为每一个段落去指定样式了,除非某个段落的样式比较特殊,再单独设置,通常是对段落里的文本做特殊设置来实现,段落本身没有样式的设置。

        4.1.1、查看有哪些样式

可以通过以下代码查看:        

doc=Document()
for s in doc.styles:
    print(s)

结果:

        4.1.2、常用样式的设置方式

doc = Document()
doc.styles["Normal"].font.name = "宋体"    # 设置全局字体
doc.styles["Normal"]._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')   # 如果想要设置中文字体,需要加上这一句
doc.styles["Normal"].font.color.rgb = RGBColor(0,0,0)   # 设置正文全局颜色为黑色
doc.styles["Normal"].font.size = docx.shared.Pt(12)      # 设置正文全局大小为12磅

doc.styles["Heading 1"].font.size = docx.shared.Pt(26)
doc.styles["Heading 2"].font.size = docx.shared.Pt(22)
# ... 可以逐项设置好

        4.1.3、常用字号和颜色

Word里面用阿拉伯数字表示字体大小,磅数为字体大小的一半,比如说五号字体,对应的是字体大小是21,则对应的磅数是10.5磅。

常用颜色RGB
颜色RGB
黑色000
红色25500
蓝色00255
黄色2552550
绿色02550
白色255255255

        4.2、段落样式

        段落(paragraph)的样式继承自Document的样式,其本身没有样式(如字体,大小,颜色等)的设置,通常是对段落(paragraph)中的内容(runs)做设置,实现不同的显示效果。

        4.3、设置文本样式

        可以灵活的设置段落内文本的各种样式,设置方式参考以下代码。

import docx
from docx import Document
from docx.shared import Pt
from docx.oxml.ns import qn
from docx.shared import RGBColor

#创建一个word文档
doc = Document()
doc.styles["Normal"].font.name = "宋体"    # 设置全局字体
doc.styles["Normal"]._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')   # 如果想要设置中文字体,需要加上这一句
doc.styles["Normal"].font.color.rgb = RGBColor(0,0,0)   # 设置正文全局颜色为黑色
doc.styles["Normal"].font.size = docx.shared.Pt(12)      # 设置正文全局大小为12磅

doc.styles["Heading 1"].font.size = docx.shared.Pt(28)
doc.styles["Heading 2"].font.size = docx.shared.Pt(26)
# ... 可以逐项设置好

doc.add_paragraph("这是使用Document输入的内容")

paragraph1 = doc.add_paragraph()
run1 = paragraph1.add_run()

run1.font.name = "Times New Roman"  # 设置西文是新罗马字体
run1.element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')  # 设置中文是宋体
run1.font.size = Pt(22)  # 字号大小

run1.font.bold = False  # 是否加粗
run1.font.italic = False  # 是否斜体
run1.font.underline = False  # 是否下划线
run1.bold = True  # 加粗
run1.italic = True  # 斜体
run1.underline = True  # 下划线
# run1.font.underline = WD_UNDERLINE.DOUBLE  # 双下划线
# run1.font.shadow = True  # 是否阴影
# run1.font.strike = True  # 是否删除线
# run1.font.double_strike = True  # 是否双删除线
run1.font.color.rgb = RGBColor(0, 255, 0)  # 字体颜色
# run1.font.color.rgb = RGBColor.from_string("ff0056")  # 网页色
# run1.font.highlight_color = WD_COLOR_INDEX.YELLOW  # 文本高亮颜色,此次设置为黄色

run1.text = "这是第一个段落的第一段内容。"


run2 = paragraph1.add_run()

run2.font.name = "Times New Roman"  # 设置西文是新罗马字体
run2.element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')  # 设置中文是宋体
run2.font.size = Pt(16)  # 字号大小

run2.font.bold = True   # 是否加粗
run2.font.italic = False  # 是否斜体
run2.font.underline = False  # 是否下划线
run2.bold = True  # 加粗
run2.italic = True  # 斜体
run2.underline = True  # 下划线
# run2.font.underline = WD_UNDERLINE.DOUBLE  # 双下划线
# run2.font.shadow = True  # 是否阴影
# run2.font.strike = True  # 是否删除线
# run2.font.double_strike = True  # 是否双删除线
run2.font.color.rgb = RGBColor(255, 0, 0)  # 字体颜色
# run2.font.color.rgb = RGBColor.from_string("ff0056")  # 网页色
# run2.font.highlight_color = WD_COLOR_INDEX.YELLOW  # 文本高亮颜色,此次设置为黄色

run2.text = "这是第一个段落的第二段内容。"

doc.save("Run_Demo.docx")

效果:

下一章介绍如何替换Paragraph里的内容,是比较实用的一个场景,通常是在需要生成大量格式相同内容不同的文档,或频繁生成重复文档的时候使用。实现方式是基于Word模板动态替换其中的内容生成新文档。

        

Python-docx是一个可以在Python中操作Microsoft Word文档的库。它允许我们使用Python来创建、修改和读取Word文档,并且具有丰富的功能和灵活性。 Python-docx中的主要对象是paragraph(段落),它是一个文档中的文本块。通过paragraph对象,我们可以对文本进行格式化和操作。 要使用Python-docxparagraph功能,首先需要导入库并打开一个文档: ```python from docx import Document doc = Document('example.docx') ``` 要获取文档中的所有段落,可以使用`paragraphs`属性: ```python for paragraph in doc.paragraphs: print(paragraph.text) ``` 要创建一个新的段落,可以使用`add_paragraph()`方法: ```python new_paragraph = doc.add_paragraph('This is a new paragraph.') ``` 可以使用paragraph对象的属性来设置段落的格式和样式,例如字体、对齐方式、行间距等。以下是一些常用的属性和示例: ```python paragraph = doc.paragraphs[0] # 设置粗体 paragraph.runs[0].bold = True # 设置字体大小 paragraph.runs[0].font.size = Pt(20) # 设置对齐方式 paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER # 设置行间距 paragraph.paragraph_format.line_spacing = Pt(15) ``` 除了文本之外,段落还可以包含其他对象,如图片和表格。要在段落中插入图片,可以使用`add_picture()`方法: ```python paragraph = doc.add_paragraph() paragraph.add_run().add_picture('image.png', width=Inches(1.0)) ``` Python-docx还提供了丰富的方法来处理段落,包括删除、复制、移动和替换等操作。此外,还可以使用段落的`style`属性来应用预定义的样式,或者创建自定义的样式。 总的来说,Python-docx中的paragraph教程为我们提供了灵活和方便的功能,使我们能够通过Python来创建和处理Word文档,满足我们各种文档处理的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

jerry_xizn

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

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

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

打赏作者

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

抵扣说明:

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

余额充值