Python-操作Word
-
安装 python-docx
处理 Word 需要用到 python-docx 库,目前版本为
0.8.10
,执行如下安装命令: -
写入 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 Roman ') run.font.name = 'Times New Roman' # 设置中文字体 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')
-
读取 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('\n###### 输出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('\n')
- 以上代码是将之前我们输出的两个文档内容都读取出来,当然这里只是打印到控制台,并没有做其他处理。现在我们来执行命令
python word_3.py
把代码执行看下结果: