效率成倍提升!使用 Python 来处理 Word/Excel 文档

这是 Python 小专栏的第 ⑤ 期

在大家日常工作和学习中,WordExcel文档是经常打交道的。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 模板中。开发这套流程需要一点时间,但一旦做成,生成一份报表只要几秒钟。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180620G0VNJD00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券