python+docx:(一)页、标题、段落、图片操作

目录

标题

段落

新增段落(插入段落)

追加内容

段落样式

图片

新增页


安装:pip install python-docx

1、docx中设置尺寸width或height时,需要使用 Inches,Cm 【英寸、厘米】等才能生效,更多见docx.shared脚本库
2、对齐方式:alignment,需要from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
3、Word 中一般可以结构化成三个部分:文档 Document、段落 Paragraph、文字块 Run

from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT, WD_ALIGN_PARAGRAPH, WD_COLOR_INDEX, WD_COLOR
from docx.shared import Inches, Cm, Pt, RGBColor

# 创建文件对象:有参数时打开,没有参数时为新建
docx_file = Document()  

标题

添加标题.add_heading,参数为标题名称和级别,级别为0-9,默认为1,0级别标题下自带下划线。

docx_file.add_heading(text='0级标题', level=0)
docx_file.add_heading(text='一级标题', level=1)
docx_file.add_heading(text='二级标题', level=2)
docx_file.add_heading(text='三级标题', level=3)

段落

新增段落(插入段落)

for i in range(1, 5):
    docx_file.add_paragraph(fr'这是第{i}段')

par_last = docx_file.add_paragraph('最后一段')
par_last.insert_paragraph_before('这是在当前段落对象前插入一段内容')  # 在par_last前插入一段

追加内容

追加内容适合所有段落类型的操作

## 对指定段落操作,使用索引标获取段落对象进行操作,每个标题、图片等内容都可成为一个段落对象
print(len(docx_file.paragraphs))  # 获取段落数
par_last3 = docx_file.paragraphs[-3]
par_last3.insert_paragraph_before('倒数第三段前插入一行内容')

### 段落追加内容
par_last3.add_run('这是给倒数第三段追加的内容!!')

段落样式

设置文档字体样式,修改段落的add_run()对象的属性来设置样式。暂时无法单独设置中文字体样式 (name属性只对西文起作用)

par_style = docx_file.add_paragraph()
t1 = par_style.add_run()
t1.text = '忽焉纵体,以遨以嬉。\n左倚采旄,右荫桂旗。\n攘皓腕于神浒兮,采湍濑之玄芝。\n余情悦其淑美兮,心振荡而不怡。\n无良媒以接欢兮,托微波而通辞。\n愿诚素之先达兮,解玉佩以要之。'
t1.italic = True  # 设置斜体,同t1.font.italic = True
t1.bold = True  # 设置粗体,t1.font.bold = True
t1.underline = True  # 是否加下划线,同t1.font.underline = True
t1.font.size = Pt(15)  # 字体大小
t1.font.color.rgb = RGBColor(210, 100, 50)  # 字体颜色设置
t1.font.highlight_color = WD_COLOR_INDEX.BRIGHT_GREEN  # 设置背景色(WD_COLOR_INDEX 或 WD_COLOR)

中文字体与全局样式设置

t1.font.name = 'MS PGothic'  # 设置西文字体
docx_file.styles['Normal'].font.name = u'楷体'
docx_file.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'),u'楷体')  # 设置全局中文字体
t1.element.rPr.rFonts.set(qn('w:eastAsia'),u'楷体')
par_style.style.font.size = Pt(5)
par_style.style.font.italic = True
par_style.style.font.bold = True

图片

添加图片.add_picture,之前介绍过PPT的操作,同PPT一样,图片等对象不能单独做对齐方式等样式的修改,只能修改段落对齐方式,处理方法有两种:
1、直接添加的图片对象也是一个段落对象,可先添加图片后再获取图片所在段落进行修改

img_path = r'C:\Users\Administrator\Desktop\testfile\测试图片\8.png'
docx_file.add_picture(image_path_or_stream=img_path, width=Cm(8))  # 参数:图片位置\宽度\高度。图片默认左边距对齐
op = docx_file.paragraphs[-1]
op.alignment = WD_ALIGN_PARAGRAPH.RIGHT

2、先添加段落然后给段落追加图片,可通过添加段落后将图片追加给段落然后对段落做对齐样式的设置(先创建段落后,给段落对象追加图片可设置对齐方式)

par_img = docx_file.add_paragraph()
pimg = par_img.add_run()
pimg.add_picture(image_path_or_stream=img_path, width=Cm(8))
par_img.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

新增页

新增页:add_page_break()增加分页符会使两页隶属同一个节,使得对节的属性调整会应用到两页上,因此若一直使用add_page_break()增加页数的话,会使所增加的页面都属于同一个节,都共用同一个页面属性。
1、新增页.add_page_break():增加一个分页符,表现为增加一页,但所增加的页和前一页属于同一个“节”。

for i in range(1, 3):
    s = docx_file.add_page_break()
    docx_file.add_heading(text=f'这是新的一页{i}', level=0)

2、新增页.add_section():增加一个“节”,表现为增加一页。添加的节的属性默认会沿袭上一个节的属性,因此添加的节的页边距等属性与上一个节相同(段落等不会相同)

for i in range(1, 3):
    docx_file.add_section()
    docx_file.add_heading(text=f'这是新的一页{i}', level=1)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值