1. 概述

Word 是一个十分常用的文字处理工具,通常我们都是手动来操作它,本节我们来看一下如何通过 Python 来操作。

Python 提供了 python-docx 库,该库就是为 Word 文档量身定制的,安装使用 pip install python-docx 命令即可。

2. 写入

首先,我们使用 Python 来创建一个 Word 文档并向其中写入一些内容。

2.1 标题

我们先来创建 Word 文档并向其中添加标题,完整实现代码如下所示:

  •  
from docx import Document
# 创建文档document = Document()# 标题document.add_heading('标题0', 0)document.add_heading('标题1', 1)document.add_heading('标题2', 2)# 保存document.save('test.docx')

看一下效果: 

Python 进阶(七): Word 基本操作_Python

2.2 段落

我们接着向 Word 文档中添加段落内容,完整实现代码如下所示:

  •  
from docx import Document
# 创建文档document = Document()# 标题document.add_heading('标题0', 0)document.add_heading('标题1', 1)# 段落document.add_paragraph('你们平时Word文档用的多吗?')# 列表document.add_paragraph('A:我们用的多', style='List Bullet')document.add_paragraph('B:我们用的少', style='List Bullet')document.add_paragraph('C:我们用的不多不少', style='List Bullet')document.add_heading('标题2', 2)# 段落document.add_paragraph('我平时基本都是手动操作Word文档,现在打算利用Python来操作它,' '你们平时是手动操作Word文档?如果是的话,一起来了解下如何通过' 'Python来操作吧!')# 保存document.save('test.docx')

看一下效果: 

Python 进阶(七): Word 基本操作_Python_02

2.3 表格

我们接着向文档中插入表格,完整实现代码如下所示:

  •  
from docx import Document
# 创建文档document = Document()# 标题document.add_heading('标题0', 0)document.add_heading('标题1', 1)# 段落document.add_paragraph('你们平时Word文档用的多吗?')# 列表document.add_paragraph('A:我们用的多', style='List Bullet')document.add_paragraph('B:我们用的少', style='List Bullet')document.add_paragraph('C:我们用的不多不少', style='List Bullet')document.add_heading('标题2', 2)# 段落document.add_paragraph('我平时基本都是手动操作Word文档,现在打算利用Python来操作它,' '你们平时是手动操作Word文档?如果是的话,一起来了解下如何通过' 'Python来操作吧!')# 表格table = document.add_table(rows=3, cols=2, style='Table Grid')# 表头hc = table.rows[0].cellshc[0].text = '姓名'hc[1].text = '年龄'# 表体bc1 = table.rows[1].cellsbc1[0].text = '张三'bc1[1].text = '22'bc2 = table.rows[2].cellsbc2[0].text = '李四'bc2[1].text = '33'# 保存document.save('test.docx')

看一下效果:

Python 进阶(七): Word 基本操作_Python_03

2.4 图片

我们接着向文档中插入图片,完整实现代码如下所示:

  •  
from docx import Documentfrom docx.shared import Inches
# 创建文档document = Document()# 标题document.add_heading('标题0', 0)document.add_heading('标题1', 1)# 段落document.add_paragraph('你们平时Word文档用的多吗?')# 列表document.add_paragraph('A:我们用的多', style='List Bullet')document.add_paragraph('B:我们用的少', style='List Bullet')document.add_paragraph('C:我们用的不多不少', style='List Bullet')document.add_heading('标题2', 2)# 段落document.add_paragraph('我平时基本都是手动操作Word文档,现在打算利用Python来操作它,' '你们平时是手动操作Word文档?如果是的话,一起来了解下如何通过' 'Python来操作吧!')# 表格table = document.add_table(rows=3, cols=2, style='Table Grid')# 表头hc = table.rows[0].cellshc[0].text = '姓名'hc[1].text = '年龄'# 表体bc1 = table.rows[1].cellsbc1[0].text = '张三'bc1[1].text = '22'bc2 = table.rows[2].cellsbc2[0].text = '李四'bc2[1].text = '33'# 分页# document.add_page_break()# 图片document.add_picture('pic.jpg', width=Inches(1))# 保存document.save('test.docx')

看一下效果:

Python 进阶(七): Word 基本操作_Python_04

2.5 样式

我们再设置一下基本样式,比如:标题居中、字体加粗、首行缩进等,完整实现代码如下所示:

  •  
from docx import Documentfrom docx.shared import Inchesfrom docx.enum.text import WD_PARAGRAPH_ALIGNMENTfrom docx.shared import Cm, Pt
# 创建文档document = Document()style = document.styles['Normal']# 标题t0 = document.add_heading('标题0', 0)# 居中t0.alignment = WD_PARAGRAPH_ALIGNMENT.CENTERdocument.add_heading('标题1', 1)# 首行缩进两个字符paragraph_format = style.paragraph_formatparagraph_format.first_line_indent = Cm(0.74)# 段落p1 = document.add_paragraph('你们平时')# 字体加粗p1.add_run('Word文档').bold = True# 斜体p1.add_run('用的多吗?').italic = True# 列表document.add_paragraph('A:我们用的多', style='List Bullet')document.add_paragraph('B:我们用的少', style='List Bullet')document.add_paragraph('C:我们用的不多不少', style='List Bullet')document.add_heading('标题2', 2)# 段落p2 = document.add_paragraph('我平时基本都是手动操作Word文档,现在打算利用Python来操作它,' '你们平时是手动操作Word文档?如果是的话,')run = p2.add_run('一起来了解下如何通过Python来操作吧!')# 设置字体大小run.font.size = Pt(12)# 表格table = document.add_table(rows=3, cols=2, style='Table Grid')# 表头hc = table.rows[0].cellshc[0].text = '姓名'hc[1].text = '年龄'# 表体bc1 = table.rows[1].cellsbc1[0].text = '张三'bc1[1].text = '22'bc2 = table.rows[2].cellsbc2[0].text = '李四'bc2[1].text = '33'# 分页# document.add_page_break()# 图片document.add_picture('pic.jpg', width=Inches(1))# 保存document.save('test.docx')

看一下效果: 

Python 进阶(七): Word 基本操作_Python_05

3. 读取

我们再来读取一下之前 Word 文档中写入的内容,完整代码实现如下所示:

  •  
from docx import Document
# 打开文档document = Document('test.docx')# 读取标题、段落、列表内容ps = [ paragraph.text for paragraph in document.paragraphs]for p in ps: print(p)# 读取表格内容ts = [table for table in document.tables]for t in ts: for row in t.rows: for cell in row.cells: print(cell.text, end=' ') print()