python自动化办公之 python操作Word
更新时间:2022-11-05
上次给大家介绍 Python 如何操作 Excel ,感觉挺有意思的吗?今天再给大家介绍一下。 Python 如何操作 Word ,这可能与数据处理关系不大,用的也不多,但是可以先知道什么功能可以在紧急情况下实现。
安装 python-docx
处理 Word 需要用到 python-docx 库,目前版本是 0.8.10 ,执行以下安装命令:
$ pip3 install python-docx
################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################ 运行结果 ########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
Collecting python-docx
Downloading https://files.pythonhosted.org/packages/e4/83/c66a1934ed5ed8ab1dbb9931f1779079f8bca0f6bbc5793c06c4b5e7d671/python-docx-0.8.10.tar.gz (5.5MB)
|████████████████████████████████| 5.5MB 553kB/s
Requirement already satisfied: lxml>=2.3.2 in /usr/local/lib/python3.7/site-packages (from python-docx) (4.4.1)
Building wheels for collected packages: python-docx
Building wheel for python-docx (setup.py) ... done
Stored in directory: /Users/mjg/Library/Caches/pip/wheels/18/0b/a0/1dd62ff812c857c9e487f27d80d53d2b40531bec1acecfa47b
Successfully built python-docx
Installing collected packages: python-docx
Successfully installed python-docx-0.8.10
OK,若提示上述信息,则安装成功。
写入 Word
我们通常在操作 Word 写文档时,一般分为标题、章节、段落、图片、表格、引用、项目符号编号等几个部分。让我们根据这些部分来使用它们 Python 操作逐一介绍。
标题
文档标题的创建相对简单 Document() 只要调用空白文档,创建空白文档 add_heading 该方法可以创建标题。
# word_1.py
# 导入库
from docx import Document
from docx.shared import Pt
from docx.shared import Inches
from docx.oxml.ns import qn
# 新建空白文档
doc1 = Document()
# 新文档标题
doc1.add_heading(';如何使用? Python 创建 Word',0)
# 保存文件
doc1.save('word1.docx')
这样,创建文档和文章标题的操作就完成了,下面是命令 python word_1.py 操作程序将生成名称 word1.docx 打开文章,如下图所示:
标题
章节与段落
有了文章的标题,让我们来看看如何操作章节和段落。在上述代码后面添加章节和段落的代码如下:
# word_1.py
# 导入库
from docx import Document
from docx.shared import Pt
from docx.shared import Inches
from docx.oxml.ns import qn
# 新建空白文档
doc1 = Document()
# 新文档标题
doc1.add_heading(';如何使用? Python 创建 Word',0)
# 创建段落描述
doc1.add_paragraph(';我们通常使用它; Word 用来处理文章,可能没想到可以用 Python 下面我们将介绍如何具体操作……')
# 创建一级标题
doc1.add_heading('安装 python-docx 库',1)
# 创建段落描述
doc1.add_paragraph(&现在我们来介绍一下如何安装 python-docx 库,具体需要以下两个步骤:')
# 创建二级标题
doc1.add_heading(';第一步:安装: Python',2)
# 保存文件
doc1.save('word1.docx')
我们上面说的 add_heading 该方法用于添加文章的标题,但通过上述代码,我们可以知道该方法的第二个参数是数字。事实上,这是用来标记几个级别的标题,通常用来标记章节。add_paragraph 方法是用来在文章中添加段落,所以我们现在通过命令 python word_1.py 操作程序看效果:
章节段落
字体和引用
我们在前面通过 add_paragraph 该方法增加了两段。现在让我们来看看如何操作段落中的字体,以及引用段落的操作。继续修改上述代码,增加文章字体大小、粗体、倾斜等操作。具体代码如下:
# word_1.py
# 导入库
from docx import Document
from docx.shared import Pt
from docx.shared import Inches
from docx.oxml.ns import qn
from docx.shared import RGBColor
# 新建空白文档
doc1 = Document()
# 新文档标题
doc1.add_heading(';如何使用? Python 创建 Word',0)
# 创建段落描述
doc1.add_paragraph(';我们通常使用它; Word 用来处理文章,可能没想到可以用 Python 下面我们将介绍如何具体操作……')
# 创建一级标题
doc1.add_heading('安装 python-docx 库',1)
# 创建段落描述
doc1.add_paragraph(&现在我们来介绍一下如何安装 python-docx 库,具体需要以下两个步骤:')
# 创建二级标题
doc1.add_heading(';第一步:安装: Python',2)
# 创建段落,添加文档内容
paragraph = doc1.add_paragraph(';这是安装描述的第一步!')
# 在段落中添加文本,并设置字体大小
run = paragraph.add_run(';(注意:这里有20个字号)')
run.font.size = Pt(20)
# 设置英文字体
run = doc1.add_paragraph(';英文字体设置在这里:').add_run('This Font is Times New Ro ** n ')
run.font.name = 'Times New Ro ** n'
# 设置中文字体
run = doc1.add_paragraph(';中文字体设置在这里:').add_run('当前字体为黑体')
run.font.name='黑体'
r = run._element
r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')
# 设置斜体
run = doc1.add_paragraph(';本段设置:').add_run(';文字是斜体 ')
run.italic = True
# 设置粗体
run = doc1.add_paragraph(';本段再设置:').add_run(';粗体设置在这里;').bold = True
# 下划线设置字体带
run = doc1.add_paragraph(';这段是下划线:').add_run(',带下划线设置在这里').underline = True
# 设置字体颜色
run = doc1.add_paragraph(';字体为红色:').add_run(';这里是红色的')
run.font.color.rgb = RGBColor(0xFF, 0x00, 0x00)
# 增加引用
doc1.add_paragraph(';这是我们引用的一段话:人生苦短,我用Python。', style='Intense Quote')
# 保存文件
doc1.save('word1.docx')
以上代码主要针对段落字体的各种设置,每个段落的代码都标有注释,应该更容易理解。现在通过命令 python word_1.py 操作程序看效果:
字体引用
项目列表
我们通常使用它 Word 为了更清晰地显示,将使用项目符号和编号通过列表显示内容。让我们建立一个新的文件 word_2.py 并编写以下代码:
# word_2.py
# 导入库
from docx import Document
from docx.shared import Pt
from docx.shared import Inches
from docx.oxml.ns import qn
# 新建文档
doc2 = Document()
doc2.add_paragraph(';哪一种不是水果:')
# 增加无序列表
doc2.add_paragraph(
'苹果', style='List Bullet'
)
doc2.add_paragraph(
'香蕉', style='List Bullet'
)
doc2.add_paragraph(
'馄炖', style='List Bullet'
)
doc2.add_paragraph(';2020年度计划:')
# 增加有序列表
doc2.add_paragraph(
';每周健身一天;', style='List Number'
)
doc2.add_paragraph(
';学习50本书;', style='List Number'
)
doc2.add_paragraph(
';减少加班时间;', style='List Number'
)
# 保存文件
doc2.save('word2.docx')
现在通过命令 python word_2.py 操作程序看效果:
项目列表
图片和表格
在编辑文章时,我们经常使用插入图片和表格。 Python 如何操作插入图片和表格?首先,我们随便找了一张图片,我用了 Python 文件名为安装截图 python_install.png,然后在 word_2.py 在文件中添加以下代码:
# word_2.py
# 导入库
from docx import Document
from docx.shared import Pt
from docx.shared import Inches
from docx.oxml.ns import qn
# 新建文档
doc2 = Document()
doc2.add_paragraph(';哪一种不是水果:')
# 增加无序列表
doc2.add_paragraph(
'苹果', style='List Bullet'
)
doc2.add_paragraph(
'香蕉', style='List Bullet'
)
doc2.add_paragraph(
'馄炖', style='List Bullet'
)
doc2.add_paragraph('2020年度计划:')
# 增加有序列表
doc2.add_paragraph(
'每周健身一天', style='List Number'
)
doc2.add_paragraph(
'学习50本书', style='List Number'
)
doc2.add_paragraph(
'减少加班时间', style='List Number'
)
doc2.add_heading('图片',2)
# 增加图像
doc2.add_picture('python_install.png', width=Inches(5.5))
doc2.add_heading('表格',2)
# 增加表格,这是表格头
table = doc2.add_table(rows=1, cols=3)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '编号'
hdr_cells[1].text = '姓名'
hdr_cells[2].text = '职业'
# 这是表格数据
records = (
(1, '张三', '电工'),
(2, '张五', '老板'),
(3, '马六', 'IT')
)
# 遍历数据并展示
for id, name, work in records:
row_cells = table.add_row().cells
row_cells[0].text = str(id)
row_cells[1].text = name
row_cells[2].text = work
# 手动增加分页
doc2.add_page_break()
# 保存文件
doc2.save('word2.docx')
OK,现在再来让我们再来看下效果:
图片表格
读取 Word 文件
上面写了很多用 Python 创建空白 Word 文件格式化字体并保存到文件中,接下来我们再简单介绍下如何读取已有的 Word 文件,请看如下代码:
# word_3.py
# 引入库
from docx import Document
# 打开文档1
doc1 = Document('word1.docx')
# 读取每段内容
pl = [ paragraph.text for paragraph in doc1.paragraphs]
print('###### 输出word1文章内容')
# 输出读取到的内容
for i in pl:
print(i)
# 打开文档2
doc2 = Document('word2.docx')
print('
###### 输出word2文章内容')
pl2 = [ paragraph.text for paragraph in doc2.paragraphs]
# 输出读取到的内容
for j in pl2:
print(j)
# 读取表格材料,并输出结果
tables = [table for table in doc2.tables]
for table in tables:
for row in table.rows:
for cell in row.cells:
print (cell.text,end=' ')
print()
print('
')
以上代码是将之前我们输出的两个文档内容都读取出来,当然这里只是打印到控制台,并没有做其他处理。现在我们来执行命令 python word_3.py 把代码执行看下结果:
读取并打印
总结
本文为大家介绍了 Python 中如何操作 Word 文档,其中写入文件时,我们常用各种标题段落字体设置等,会比较复杂,这里只是简单介绍了最常用的几种方法,如果想了解更多请参考文末官网介绍,之后会为大家介绍其他类型文件的操作方式,希望大家能多多关注。
参考
python-excel 官网:https://python-docx.readthedocs.io/en/latest/index.html
本文转自网络
欢迎查看个人网站:
懒人找资源-知识应当自由平等地流向每一个人
推荐课程
-
唐山现代多元Design全能班
346人 报名小编
-
唐山现代多元Design精英班
393人 报名小编
-
唐山现代艺术设计全能班
373人 报名小编
-
唐山电商课程培训班
331人 报名小编
-
唐山专业盲打指法训练
251人 报名小编