日常办公中,无论你是程序员还是普通文职人员,操作 Word 一定在你的工作中占了非常大的比例。项目文档、需求分析文档、合同报价、方案等等,这一系列都需要在 Word 中进行完成。但如何更高效灵活的使用 Word 你知道么?本小节将介绍 Python 第三方库 python-docx 模块完成对 Word 的操作。
1. python-docx 模块介绍python-docx 是用于创建和更新 Microsoft Word(.docx)文件的 Python 库。
通过本小节的学习,我们最终要完成 Word 文档 "info.docx" 的创建,文档内容(花式 pick 慕课网)如下图所示。
python-docx 是 Python 的第三方库,使用前需要通过以下命令进行安装:
pip install python-docx
步骤 1:导入 docx 模块
from docx import Document
步骤 2:创建(读取)一个文档对象
document = Document() # 新建文档对象Document("info.docx") #读取现有的word 建立文档对象
步骤 3:向文档中写入内容
根据 docx 提供的方法,完成 Word 文档所需内容的写入。
步骤 4:生成 Excel 文件
from docx import Documentdocument = Document() # 新建文档对象...省略部分代码document.save('C:/info.docx')# 保存文档
通过 save () 方法进行保存,生成 Word 文件,save () 方法可以传入你想要保存到的文件路径。到这里就完成了新的 Word 文档创建和内容写入的操作。
2. python-docx 操作 Word 写入接下来,针对 python-docx 提供的常用写入方法进行讲解,这里根据写入内容的类型进行划分。
2.1 写入文本写入文本内容常用方法见下表。
方法名 | 描述 |
add_heading(text=u’’, level=1) | 写入标题段落 |
add_paragraph(text = u’’,style=None) | 写入普通段落 |
insert_paragraph_before(text = u’’,style=None) | 插入段落到现有段落之前 |
下面来具体看下每个方法的使用:
add_heading () 使用:from docx import Documentdocument.add_heading('慕课网简介', level=1)document.save('info.docx')
代码解释:add_heading () 方法写入标题段落,段落样式由 level 决定,level 范围为 0 至 9,默认为 1。执行完成后,info.docx 文档效果如下图所示。
from docx import Documentdocument.add_heading('慕课网简介', level=1)p1 = document.add_paragraph( '慕课网是垂直的互联网IT技能免费学习网站。以独家视频教程、在线编程工具、学习计划、问答社区为核心特色。在这里,你可以找到最好的互联网技术牛人,也可以通过免费的在线公开视频课程学习国内领先的互联网IT技术')document.save('info.docx')
代码解释:add_paragraph () 方法写入段落,段落样式由 style 决定(本小节中仅写入段落,后续小节会对应用样式进行介绍),执行完成后,info.docx 文档效果如下图所示。
from docx import Documentdocument.add_heading('慕课网简介', level=1)p1 = document.add_paragraph( '慕课网是垂直的互联网IT技能免费学习网站。以独家视频教程、在线编程工具、学习计划、问答社区为核心特色。在这里,你可以找到最好的互联网技术牛人,也可以通过免费的在线公开视频课程学习国内领先的互联网IT技术')p1.insert_paragraph_before('!!!慕课网是垂直的互联网IT技能免费学习网站')document.save('info.docx')
代码解释:insert_paragraph_before () 方法为插入段落到现有段落之前,段落样式由 style 决定。执行完成后,info.docx 文档效果如下图所示。
写入图片方法,见下表。
方法 | 描述 |
add_picture(image_path_or_stream,width = None,height = None ) | 插入指定图片 |
对应代码中访问,如下所示:
from docx import Documentfrom docx.shared import Ptdocument.add_heading('慕课网简介', level=1)...省略部分代码document.add_picture('logo.jpg')document.add_picture('logo.jpg', Pt(20), Pt(30))document.save('info.docx')
代码解释:add_picture () 方法为插入指定图片,并根据宽度和高度缩放。如果未指定宽度或高度,则图片以其原始尺寸显示。代码中共插入了 2 张 logo 图片,第一张没有设置宽度和高度即按原始尺寸插入,第二张根据指定的宽度和高度按比例缩放,参数 Pt 为 points 磅,与字号对应可以参考下图。
执行完成后,info.docx 文档效果如下图所示。
写入表格方法,见下表。
方法 | 描述 |
add_table(rows, cols) | 插入指定行数、列数的表格 |
通过表格可以很好的展示列表形式的数据,下面使用 add_table () 方法创建一个关于最新课程的表格,包含课程名称、讲师和价格。代码如下所示:
...省略部分代码# 插入表格(1行3列,表格应用样式Medium List 2)table = document.add_table(rows=1, cols=3, style='Medium List 2')# 获取到第一行中的单元格列表header_cells = table.rows[0].cellsheader_cells[0].text = '新上好课' header_cells[1].text = '讲师'header_cells[2].text = '价格'# 初始化课程数据data = ( ['Java实操避坑指南', "勤一", 298], ['Vue2.5->2.6->3.0 开发去哪儿网APP', "DELL", 266], ['Vue3.0(正式版) TS 仿知乎专栏企业级项目', "张轩", 298],)# 循环课程数据for item in data: # 使用add_row()方法创建新的一行 rows_cells = table.add_row().cells rows_cells[0].text = item[0] rows_cells[1].text = item[1] rows_cells[2].text = str(item[2])document.save('info.docx')
代码解释:add_table () 方法为插入指定行数、列数的表格,参数 rows 为指定行数,cols 为指定列数,style 为表格应用的样式。代码中初始表格为 1 行 3 列,在填充处理的位置,通过遍历调用 add_row () 方法添加新的一行,为其设置各单元格内容。执行完成后,info.docx 文档效果如下图所示。
本节课程我们主要学习了 python-docx 模块的使用。本节课程的重点如下:
了解 python-docx 模块作用及使用步骤;掌握 python-docx 模块中写入文本、图片、表格的使用方法。,