龙空技术网

python处理Excel实战进阶篇day12(20行代码成替代邮件合并的力量)

黑板客爱技术 484

前言:

今天小伙伴们对“python邮件表格”大概比较关注,看官们都想要学习一些“python邮件表格”的相关资讯。那么小编在网上汇集了一些关于“python邮件表格””的相关资讯,希望各位老铁们能喜欢,同学们一起来学习一下吧!

实例12—python替代邮件合并的代码(结合docx综合案例)

场景需求:

在正常的教育教学中,经常牵涉到批量生成文档的时候,比如:学生录取通知书、学生奖状、学生家长告知书,当然其他领域类似的问题举不胜举,只要牵涉到批量、牵涉到文本,Word的邮件合并都会派上用场,其实邮件合并很简单,只需要动手点点点,什么,你不会邮件合并,那好,比邮件合并更轻松的来了。

结合对应视频看更轻松<全网首发python办公自动化openpylx结合docx实现邮件合并>

邮件合并让道吧, 不足20行代码,改改数字批量处理全不怕

所谓的批量,就是相似的操作循环地做个不停,这对人来说就是没有技术含量的重复劳动,这个计算机是最擅长的,那就交给它吧。

1、用到的知识点:

Python的for循环、python处理excel的openpyxl模块、处理Word的python-docx模块,Python函数定义,wb对象基本操作包括打开,ws的操作遍历读取等。

2、操作步骤思维导图:

python邮件合并思维导图

核心思想:循环遍历excel表格中的每一行,找到对应真实数据,替换Word模板中的变化的量

3、用到的文件:

举个栗子:以期末考试结束后,发放学生奖状为例子,两个文件截图如下

数据表

模板Word

思路就是遍历表格中的name和honor,遍历一行,取代一次,保存一份奖状

特别强调:1、模板图片要在文本下面固定,2、文字是普通的,不能是文本框中的!!!

用到的文件保存到阿里云盘,请自行下载,代码还是自己敲一遍为好。「邮件合并用文档」

有python,还要什么邮件合并

4、代码操作编写截图:

from openpyxl import load_workbookfrom docx import Document#打开表格wb = load_workbook('students.xlsx)ws = wb['Sheet1']#定义替换函数def repalceText(document,old_str,new_str):	for paragraph in document.paragraphs:#b遍历每一段,这里是Word模板的  	if old_str in paragraph.text:    	for run in paragraph.runs: #确保替换的就数据在模板中存在      	if old_str in run.text:        	run.text = run.text.replace(old_str,new_str) #存在替换新数据,也就是真实数据for i in range(2,ws.max_row+1): #循环遍历表格每行	document = Document('奖状模板.docx')# 遍历一次,新打开一次	name_new = ws.cell(i,1).value #找到真实name	honor_new = ws.cell(i,2).value #找到真实honor	replaceText(document,'name',name_new) # 替换掉模板中的name	replaceText(document,'honor',honor_new) # 替换掉模板中的honor	document.save(f'{name_new}的获奖证书.docx') # 循环一次打印以用户名命名的奖状

邮件合并结果截图1

批量的奖状

不足20行代码,不会邮件合并怕个啥,打印多少证书都不怕

不添加注释,仅仅17行代码,举一反三,仅仅需要改第4、14,15,16行中的个别变量,希望你能融会贯通,活学活用。

标签: #python邮件表格