Python自动化之批量生成含指定数据的word文档

 更新时间:2021年11月24日 09:18:33   作者:软件测试君  
在平时工作当中,经常需要处理文件,特别是Word,我们常常会机械的重复打开、修改、保存文档等一系列操作。本文将主要介绍如何通过Python批量生成含指定数据的word文档,感兴趣的同学可以来看一看

一、需求说明

在平时工作当中,经常需要处理文件,特别是Word,处理Word时会遇一类比较常见的场景:文档中大部分文字固定不变,小部分内容需要修改。

这时我们会机械的重复打开、修改、保存文档等一系列操作,内容少还可勉强接受,内容一旦多了,心里难免会心浮气躁。

今天我要给大家介绍一个秘密武器-docxtpl开发包,有了这个只需写一份模板,其他的都交给电脑自己进行。

首先需要你的电脑安装好了Python环境,并且安装好了Python开发工具。

如果你还没有安装,可以参考以下文章:

如果仅用Python来处理数据、爬虫、数据分析或者自动化脚本、机器学习等,建议使用Python基础环境+jupyter即可,安装使用参考Windows/Mac 安装、使用Python环境+jupyter notebook

如果想利用Python进行web项目开发等,建议使用Python基础环境+Pycharm,安装使用参考:Windows下安装、使用Pycharm教程,这下全了 和 Mac下玩转Python-安装&使用Python/PyCharm 。

秘密武器介绍

docxtpl:一个很强大的包,其主要通过对docx文档模板加载,从而对其进行修改。

pandas:提供高性能易用数据类型和分析工具

安装相关的第三方库

Windows下按住Win+R打开运行窗口,输入cmd进入命令提示符窗口(Mac打开终端即可),输入以下命令安装相关包:

pip install docxtpl

pip install pandas

使用案例

生成某学校计算机与信息工程学院的新生入学通知书合集。word模板和表格内容如下(双括号处为待填写的部分):

效果如下

二、开始动手动脑

第一步:导入相关模块:

from docxtpl import DocxTemplate
import pandas as pd
import os

第二步:用Python新建文件夹用来存放入学通知书,如果文件夹已存在代码会跳过这一步:

zpath = os.getcwd() + '\\'  #获取当前的路径
zpath = r'E:\python\tj' + '\\'
file_path = zpath + r'\通知书合集'
try:
    os.mkdir(file_path)  #创建一级目录
except:
    pass

第三步:读取csv文件中的数据:

把表格里的每一列数据分别赋值给一个series类型变量,可以把series看成数组一样的类型。

data = pd.read_csv(zpath+'AdmissionList.csv', encoding='gbk')  #读取csv里的目标数据
name = data["姓名"].str.rstrip()  # str.rstrip()用于去掉空白
academy = data["学院"].str.rstrip()
major = data["专业"].str.rstrip()
begin_date = data["开始时间"].str.rstrip()
end_date = data["结束时间"].str.rstrip()

第四步:将数据写入模板:

遍历表格的每一行,将数据存入字典列表,

num = data.shape[0]   # 获取数据行数
for i in range(num):
    context = {
       "姓名": name[i],
       "学院": academy[i],
       "专业": major[i],
       "开始时间": begin_date[i],
       "结束时间": end_date[i]
}

选定模板,

tpl = DocxTemplate(zpath+'入学通知书.docx')

渲染替换,将context里的内容写入word模板中,

tpl.render(context)#渲染替换

保存文件,名字为:**的入学通知书。

tpl.save(file_path+r"\{}的入学通知书.docx".format(姓名[i]))

上述操作重复num(即表格中数据的行数)次,写完这些就可以在file_path中找到生成的文件啦。

可能出现的错误:

  1. 文件名乱码:可以尝试把解码方式换成gbk;
  2. 权限问题:可能是需要读入的数据文件正在被使用,关闭就行了;
  3. 生成的word文件行数混乱:可以把str.rstrip()写成str.rstrip(‘\n');
  4. 只能生成同一份word文档:每渲染一次,就要重新选定模板。

三、总结

通过本次实验,我们实现了根据模板批量生成含指定数据的word文件,我最开始看代码时不懂它是用的哪种类型变量接收从csv中读取的数据,通过打印输出才知道是Pandas数据类型中的Series,百度后知道它类似于一维数组,可以保存任何数据类型。在后来运行代码的过程中又不断地出现各种各样的错误,还都是没遇到过的。

到此这篇关于Python自动化之批量生成含指定数据的word文档的文章就介绍到这了,更多相关Python生成含指定数据的word文档内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python建立Map写Excel表实例解析

    Python建立Map写Excel表实例解析

    这篇文章主要介绍了Python建立Map写Excel表实例解析,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • pandas添加新列的5种常见方法

    pandas添加新列的5种常见方法

    pandas为DataFrame格式数据添加新列的方法非常简单,下面这篇文章主要给大家介绍了关于pandas添加新列的5种常见方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Python解决非线性规划中经济调度问题

    Python解决非线性规划中经济调度问题

    Scipy是Python算法库和数学工具包,包括最优化、线性代数、积分、插值、特殊函数、傅里叶变换等模块。scipy.optimize模块中提供了多个用于非线性规划问题的方法,适用于不同类型的问题。本文将利用起解决经济调度问题,感兴趣的可以了解一下
    2022-05-05
  • pandas使用get_dummies进行one-hot编码的方法

    pandas使用get_dummies进行one-hot编码的方法

    今天小编就为大家分享一篇pandas使用get_dummies进行one-hot编码的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • python 实现dcmtk关联pacs功能推送下拉影像(推荐)

    python 实现dcmtk关联pacs功能推送下拉影像(推荐)

    这篇文章主要介绍了python 实现dcmtk关联pacs功能 推送下拉影像,包含dcmtk关联pacs技术笔记等相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • 分析python切片原理和方法

    分析python切片原理和方法

    这篇文章主要通过代码实例给大家详细介绍了python切片原理和方法,有兴趣的朋友跟着学习下吧。
    2017-12-12
  • python升级pip及失败处理方式

    python升级pip及失败处理方式

    这篇文章主要介绍了python升级pip及失败处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Python可视化学习之seaborn绘制线型回归曲线

    Python可视化学习之seaborn绘制线型回归曲线

    这篇文章主要为大家介绍了如何利用seaborn绘制变量之间线型回归(linear regression)曲线,2文中涉及如下两个重要函数:seaborn.regplot和seaborn.lmplot,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-02-02
  • Python实现简单生成验证码功能【基于random模块】

    Python实现简单生成验证码功能【基于random模块】

    这篇文章主要介绍了Python实现简单生成验证码功能,结合实例形式分析了Python基于random模块生成随机字符串的相关操作技巧,需要的朋友可以参考下
    2018-02-02
  • python3 如何解压缩.gz文件

    python3 如何解压缩.gz文件

    这篇文章主要介绍了python3 如何解压缩.gz文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09

最新评论