这是 Python 小专栏的第 ⑤ 期
在大家日常工作和学习中,Word和Excel文档是经常打交道的。Python 中有很多库提供了对文档和表格的操作处理功能,借助这些库,可以轻松实现文档表格的生成和修改。
想象这样的场景:从公司系统中导出的 Excel 数据,要填到 Word 文档中做成报告的形式。如果每天都要这样做,人工去复制各个数据不仅麻烦低效,也很容易出错。借助 Python,只需很少的代码,就能轻松实现这些操作。
今天给大家介绍几个非常实用的 Word 和 Excel 处理的库。篇幅限制,不会对每个库都详细讲解,大家可以搜索库的名字,找到相关的博客文章,但更建议熟悉英文阅读的小伙伴参考给出的官方文档来学习使用。
python-docx
文档地址:http://python-docx.readthedocs.io/en/latest/
这是一个用来生成和修改 Word 文档的库,你可以添加标题、段落、图片、表格,设置格式。
例如官方示例中,通过下面的代码,你就能生成一份如图所示的 Word 文档:
生成的文档效果:
python-docx-template
文档地址:http://docxtpl.readthedocs.io/en/latest/
这也是操作 Word 文档的库,而且是在上一个 python-docx 的基础之上开发的。主要原因是作者觉得 python-docx 库在生成 Word 文档方面很强大,但是在批量查找替换方面做的不够好。
这个库的 Python 包名叫 docxtpl,借助它,你可以在 Word 文档中使用 jinja2 的模板语法来准备一份 Word 模板,然后在 Python 中传入相关参数就能实现查找替换,批量生成 Word 文档。(熟悉前端开发的小伙伴大概都知道网页的模板引擎,jinja2 是 Python web 开发中广泛使用的一种模板引擎。具体语法请自行搜索)
例如,在 Word 中,可以写这样一段内容:
然后使用 docxtpl 写这段代码:
就能生成下图的 Word 文档。其中 {} 的位置,替换成了 hello 参数的值。而 你好 这两个字,由于参数中没有 today,不符合 if 的判断条件,就不会输出。
借助 docxtpl,你可以在一份预先排好版的 Word 模板中,预留一些标签占位,然后使用实际数据 render 一下这份模板,就能把数据填进去了。
xlrd, xlwt,xlutils
文档地址:
http://xlrd.readthedocs.io/en/latest/
http://xlwt.readthedocs.io/en/latest/
http://xlutils.readthedocs.io/en/latest/
主要用来处理 Excel 文档的几个库, xlrd 用来读, xlwt 用来写, xlutils 用于做复制、筛选等针对文档文件的操作。
代码示例:
通常 Excel 是一张二维表格的形式,通过行号和列号来找到每一个单元格,Python 库中对 Excel 的操作也是如此,指定行号和列号就能定位到一个单元格,可以在这里读取或写入数据,甚至设定格式等。
应用场景
应用场景很广泛,主要适合工作中的报表自动化等环节。例如文章开头提到的场景中,你可以将每天要做的 Word 报告,使用 docxtpl 做成模板,各个位置用 {} 设置好占位符。然后每天拿到 Excel 表格,可以使用 xl** 相关包把数据读取出来,然后自动替换到 Word 模板中。开发这套流程需要一点时间,但一旦做成,生成一份报表只要几秒钟。
领取专属 10元无门槛券
私享最新 技术干货