Python 实现批量生成 Word 文档:市民水电费缴费通知单

这篇博客介绍了如何使用Python根据Excel数据和Word模板,自动化批量生成市民水电费缴费通知单。通过读取Excel文件,替换Word模板中的字段,创建并保存多个通知单文档。
摘要由CSDN通过智能技术生成

前言:

在日常办公中操作 Word 文档时,经常会对已经有的Word文档的内容进行修改,比较少会直接新建一个空白的 Word 文档,再往里面写东西。

这篇博客也是介绍一个根据已有的 Word 文档,按照特定需求生成多个Word文档的实例。

需求描述:

假定某市行政中心需要对管辖范围内的用水电气居民用户发送缴费通知单,通知单如下图:

在这里插入图片描述
用水电气数据已经统计在一个 Excel 文件中,Excel 表格数据如下:

在这里插入图片描述
上表有25条用户数据,就是要根据这些数据创建25个Word文档,手动更改Word 文档似乎也可以。但是实际情况不可能只有25条数据,很可能是几千条数据,要手动创建更改Word文档就很麻烦了。而面对这种重复性强,逻辑简单的办公需要,用 Python 来提高效率简直完美。

具体需求:

读取 Excel 文件数据,根据数据内容与Word模板,新建对应数据条数的缴费通知单,将新建通知单以用户名命令,并保存在一个文件夹中。

主要思路及代码:
读取Word模板数据:

分析:
从需求上来看,核心功能就是要: 读取模板文件,在不改变模板文件中段落、文字格式的前提下,根据数据内容替换部分文字。

根据需要,调整的 Word 模板文件截图:

在这里插入图片描述

从前面几篇博客的介绍,可知Word文档中文字信息及格式都是保存在 run 对象中的。

所以先获取 Word 模板中正文段落所有的 run 对象:

import docx

# 读取 word 模板文件
template_word = docx.Document('test01.docx')  # 获取docx对象

# word 模板正文段落、表格所有 run 对象列表
template_runs = []

# 获取正文所有段落对象列表
pars = template_word.paragraphs
print(pars)
print(len(pars))  # 8

# 遍历段落对象列表,获得每一个段落对象
for par in pars:
    # 遍历段落对象的 run 对象列表,获得每一个run对象
    for run in par.runs:
        # 测试(看一下 run 内字符串是否与预期一致!!!)
        print(run.text)
        template_runs.append(run)

测试的那一步很重要,因为在run对象中包含格式信息,所以有的 run.text 文字可能会和预期不一致

run.text 部分打印截图:

在这里插入图片描述
注:上面的打印信息里,一个 run.text 必须要包含想替换字段,否则后期替换就会失败。所以要保证:需替换字段格式必须完全一致。

接下来就是获取 Word 文档 表格内所有单元格的 run 对象 了:

# 获取 word 文档中表格对象
word_table = template_word.tables[0]
print(word_table)
# <docx.table.Table object at 0x000002173C43BB08>
# 获取文档表格中所有单元格的段落对象
for cell 
  • 19
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值