使用python来对word文档进行操作的方法其实有很多,本文里只是写了用docx扩展包的方法(因为只学了这个方法[ennnn])。
我们用WPS/office操作文档的时候,不可能从头到尾都是一个格式的对吧,我们经常会用到标题,标题一,标题二,正文等格式,这是一篇文档所包含的基本元素,用Python操作word文档的时候当然也不能忽略这些格式:
In [7]: for s in doc.styles:
...: if s.type == WD_STYLE_TYPE.PARAGRAPH:
...: print(s)
...: print(s.font)
...: print(s.name)
...:
_ParagraphStyle('Normal') id: 109084624
Normal
_ParagraphStyle('Header') id: 109081432
Header
_ParagraphStyle('Footer') id: 109081432
Footer
_ParagraphStyle('Heading 1') id: 109081432
Heading 1
_ParagraphStyle('Heading 2') id: 109084232
Heading 2
_ParagraphStyle('Heading 3') id: 109084624
Heading 3
_ParagraphStyle('Heading 4') id: 109081432
Heading 4
_ParagraphStyle('Heading 5') id: 109084232
Heading 5
_ParagraphStyle('Heading 6') id: 109084624
Heading 6
_ParagraphStyle('Heading 7') id: 109081432
Heading 7
_ParagraphStyle('Heading 8') id: 109084232
Heading 8
_ParagraphStyle('Heading 9') id: 109084624
Heading 9
_ParagraphStyle('No Spacing') id: 109084624
No Spacing
_ParagraphStyle('Title') id: 109084624
Title
_ParagraphStyle('Subtitle') id: 109084624
Subtitle
_ParagraphStyle('List Paragraph') id: 109084624
List Paragraph
_ParagraphStyle('Body Text') id: 109084400
Body Text
_ParagraphStyle('Body Text 2') id: 109084400
Body Text 2
_ParagraphStyle('Body Text 3') id: 109084400
Body Text 3
_ParagraphStyle('List') id: 109084400
List
_ParagraphStyle('List 2') id: 109084232
List 2
_ParagraphStyle('List 3') id: 109081432
List 3
_ParagraphStyle('List Bullet') id: 109084400
List Bullet
_ParagraphStyle('List Bullet 2') id: 109084624
List Bullet 2
_ParagraphStyle('List Bullet 3') id: 109081432
List Bullet 3
_ParagraphStyle('List Number') id: 109084400
List Number
_ParagraphStyle('List Number 2') id: 109084624
List Number 2
_ParagraphStyle('List Number 3') id: 109081432
List Number 3
_ParagraphStyle('List Continue') id: 109084400
List Continue
_ParagraphStyle('List Continue 2') id: 109084624
List Continue 2
_ParagraphStyle('List Continue 3') id: 109081432
List Continue 3
_ParagraphStyle('macro') id: 109084400
macro
_ParagraphStyle('Quote') id: 109084400
Quote
_ParagraphStyle('Caption') id: 109084400
Caption
_ParagraphStyle('Intense Quote') id: 109084624
Intense Quote
_ParagraphStyle('TOC Heading') id: 109081432
TOC Heading
我们在用PWS编辑文档的时候还会用到一个功能,那就是文字样式,比如加粗,加下划线,变换文字颜色等,docx扩展包也支持这些操作,这些操作都放在了shared里。比如我想对字体进行操作,那我就导入Pt模块
注意每一段都是一个对象,都有对象名,我们通过对象名来对这一段进行操作
# -*- coding:utf-8 -*-
# test_document.py
# python操作word文档
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH # 添加对齐样式
from docx.shared import Pt
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
from docx.shared import Inches
# 创建document对象
doc_1 = Document()
# 加一个标题
# level表示几级标题,默认的时候为1,level=0时为大标题
head_1 = doc_1.add_heading("这是个测试的文档heading", level=0)
# 添加正文新的一个段落
# 第二个参数为样式,默认为正文
# Subtitle为副标题
paragraph_1 = doc_1.add_paragraph('kenny word', 'Subtitle')
paragraph_2 = doc_1.add_paragraph("今天早饭吃些什么呢?","Title")
# 给paragraph_2段落追加内容
paragraph_2.add_run("包子")
paragraph_2.add_run("饺子")
paragraph_2.add_run("大米粥")
# 设置为居中对齐
paragraph_3 = doc_1.add_paragraph("这个段落居中对齐")
paragraph_3.alignment = WD_ALIGN_PARAGRAPH.CENTER
# 对文字进行调整,注意更改的对象是文字,而不是段落
paragraph_4 = doc_1.add_paragraph("这个段落文字用来更改:")
par4_run = paragraph_4.add_run("这段文字发生了变化")
par4_run.font.bold = True # 是否加粗
par4_run.font.size = Pt(20) # 字号
# 添加图像
paragraph_5 = doc_1.add_picture('E:\Python\office\demo.png')
# 图像默认是左对齐的,若想更改对齐格式,可以像调整文字那样
last_paragraph = doc_1.paragraphs[-1]
last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
# 添加表格
# rows=行,cols=列.
rows = 5
cols = 5
table_1 = doc_1.add_table(rows, cols)
# 获取某一个单元格,例如获取单元格(1,1)
# 单元格从(0,0)开始
cell_1 = table_1.cell(1, 1)
# 对这个单元格进行文本添加
cell_1.text = 'kenny'
# 可以合并写
table_1.cell(3, 4).text = 'lalala'
# 更改表格样式
table_1.style = 'Light Grid Accent 6'
# 添加一行
row = table_1.add_row()
# 保存文档
doc_1.save("E:\\Python\\office\\test1.docx")