百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python自动化办公实战:包含Word、Excel、Pdf和Email邮件案例

off999 2025-07-27 23:16 34 浏览 0 评论

背景

想象一下,现在你有一份Word邀请函模板,然后你有一份客户列表,上面有客户的姓名、联系方式、邮箱等基本信息,然后你的老板现在需要替换邀请函模板中的姓名,然后将Word邀请函模板生成Pdf格式,之后编辑统一的邀请话术(邮件正文),再依次发送邀请函附件到客户邮箱,你会怎么做?

私信小编01即可获取大量Python学习资源

正常情况下,我们肯定是复制粘贴Excel表格中的客户姓名,之后挨个Word文档进行替换,之后将Word转Pdf格式,然后复制Excel表格中的邮箱进行发送编辑好的邮件正常,之后附上邀请函附件,点击发送,大概算一下,激情高昂的状态下,这个流程快的话,大概需要1分钟甚至更多。如果客户只有几十个就还好,一个小时就可以搞定,如果客户有几百个,上千个,甚至上万个呢?那估计要哭晕在办公室了。

不过别慌,Python自动化办公,一套组合拳,使用Python自动化办公——Word文档替换、Excel表格读取、Pdf文件生成和Email自动邮件发送一条龙服务安排,下面一起来看看吧!

实现过程

1)替换Word模板生成对应邀请函

这里以上面的Word模板做案例,编写一个函数以客户姓名进行替换模板中的<name>,一步到位。

def get_invitation(name):  
    doc = docx.Document("template.docx")  
    for para in doc.paragraphs:  
        if '<name>' in para.text:  
            for run in para.runs:  
                if '<name>' in run.text:  
                    runrun.text = run.text.replace('<name>', name)  
        doc.save(f'./邀请函/{name}.docx') 

上面这个代码需要理解Word文档的结构,一个文档有多个段落,用doc.paragraphs获取;段落中的文字用para.text获取;一个段落中可能有多个不同样式的文本,这些不同的样式被称为run,一个段落中包含多个run,用para.runs获取,一个run中的具体文本用run.text获取。了解了这些,再看上述代码,是不是清晰很多呢?

2)将Word邀请函转化为Pdf格式

这个就简单很多了,Python自动化办公中,一行代码就可以实现,而且速度还十分快。

from docx2pdf import convert  
convert(f"./邀请函/{name}.docx") 

使用convert()函数可以把docx格式的文件转换成同名的Pdf文档。

3)读取Excel表格中的姓名和邮箱

这里需要用到openpyxl库了,当然关于Excel的库还是很多的,这里以这个库作为示例,代码如下:

def get_username_email():  
    workbook = openpyxl.load_workbook("names.xlsx")  
    worksheet = workbook.active  
    for index, row in enumerate(worksheet.rows):  
        if index > 0:  
            name = row[0].value  # 获取表格第一列的姓名  
            email = row[3].value  # 获取表格第四列的邮箱  
            # print(name, email) 
            # print(f"{name}邀请函正在生成...")  
            # get_invitation(name)  
            send_email(name, email) 

上面的代码,理解起来应该并不难,读取Excel中的姓名和邮箱,之后传到get_invitation()生成邀请函,之后传给send_email()函数中自动发送邮件。实际上,这两部是分开进行的,这里是先执行get_invitation()函数,先生成邀请函,之后再将该函数注释掉,再执行发送邮件函数,

4)自动发送邮件

关于自动发送邮件,历史文章中也曾经发布过好几篇了,这里继续用上了,一开始我也觉得挺难的,后来发现也没有想的那么复杂,代码如下:

smtp = smtplib.SMTP(host="smtp.qq.com", port=587)  
# smtp.login(邮箱, 授权码)  
smtp.login('235977@qq.com', "ruybefkipoo")  
def send_email(name, email):  
    msg = MIMEMultipart()  
    msg["subject"] = f"您好,{name},您的邀请函!"  
    msg["from"] = "2352180977@qq.com"  
    msg["to"] = email  
    html_content = f"""  
    <html>  
        <body>  
                <p>您好:{name}<br>  
                    <b>欢迎加入Python进阶者学习交流群,请在附件中查收您的门票~</b><br>  
                    点击这里了解更多:<a href="https://www.pdcfighting.com">演唱会主页</a>  
                </p>  
        </body>  
    </html>  
    """  
    html_part = MIMEText(html_content, "html")  
    msg.attach(html_part)  
    with open(f"./邀请函/{name}.pdf", "rb") as f:  
        doc_part = MIMEApplication(f.read())  
        doc_part.add_header("Content-Disposition", "attachment", filename=name)  
        # 把附件添加到邮件中  
        msg.attach(doc_part)  
        # 发送前面准备好的邮件  
        smtp.send_message(msg)  
        # 如果放到外边登录,这里就不用退出服务器连接,所以注释掉了  
        # smtp.quit() 

这里需要注意三点,其一是邮箱登录放在了函数外边,防止函数多次调用,短时间多次请求登录邮箱被封禁;其二邮箱登录里边用的是授权码,而不是你的邮箱登录密码,这里使用的是qq邮箱做示例,其他邮箱需要更改smtp服务;其三这个代码里边除了正文中引用了html写法,还携带了Pdf格式的邀请函附件,稍显复杂。

5)完整代码

以上四个步骤进行拆分了,依次完成了Word文档替换、Excel表格读取、Pdf文件生成和Email自动邮件发送任务,这里附上完整的代码。

import docx  
from docx2pdf import convert  
import openpyxl  
import smtplib  
from email.mime.text import MIMEText  
from email.mime.multipart import MIMEMultipart  
from email.mime.application import MIMEApplication  
# 生成对应的邀请函,并转存pdf格式  
def get_invitation(name):  
    doc = docx.Document("template.docx")  
    for para in doc.paragraphs:  
        if '<name>' in para.text:  
            for run in para.runs:  
                if '<name>' in run.text: 
                    runrun.text = run.text.replace('<name>', name)  
        doc.save(f'./邀请函/{name}.docx')  
    convert(f"./邀请函/{name}.docx")  
smtp = smtplib.SMTP(host="smtp.qq.com", port=587)  
smtp.login('235977@qq.com', "ruybefkipoo")  
def send_email(name, email):  
    msg = MIMEMultipart()  
    msg["subject"] = f"您好,{name},您的邀请函!"  
    msg["from"] = "2352180977@qq.com"  
    msg["to"] = email  
    html_content = f"""  
    <html>  
        <body>  
                <p>您好:{name}<br>  
                    <b>欢迎加入Python进阶者学习交流群,请在附件中查收您的门票~</b><br>  
                    点击这里了解更多:<a href="https://www.pdcfighting.com">演唱会主页</a>  
                </p>  
        </body>  
    </html>  
    """  
    html_part = MIMEText(html_content, "html")  
    msg.attach(html_part)  
    with open(f"./邀请函/{name}.pdf", "rb") as f:  
        doc_part = MIMEApplication(f.read())  
        doc_part.add_header("Content-Disposition", "attachment", filename=name)  
        # 把附件添加到邮件中  
        msg.attach(doc_part)  
        # 发送前面准备好的邮件  
        smtp.send_message(msg)  
        # 如果放到外边登录,这里就不用退出服务器连接,所以注释掉了  
        # smtp.quit()  
def get_username_email():  
    workbook = openpyxl.load_workbook("names.xlsx")  
    worksheet = workbook.active 
    for index, row in enumerate(worksheet.rows):  
        if index > 0:  
            name = row[0].value  
            email = row[3].value  
            # print(name, email)  
            # print(f"{name}邀请函正在生成...")  
            # get_invitation(name)  
            send_email(name, email)  
if __name__ == '__main__':  
    get_username_email()  
    # get_invitation('Python进阶者') 

总结

这篇文章基于Python自动化办公,主要介绍了使用Python相关库,依次完成Word文档替换、Excel表格读取、Pdf文件生成和Email自动邮件发送任务。程序运行之后,邀请函会自动生成,然后邮件会自动发送,速度也非常快,给几百个、上千个客户发送邀请函就不害怕了,如果有上万个客户,可能需要借助第三方平台辅助了,毕竟一般的普通邮箱,每日发送邮箱数是有限制的。

相关推荐

win98安装教程(win98iso怎么安装)

如何安装windows98  一、具体安装步骤  备份好重要文件之后,就可以安装windows98了。  第一步:启动安装程序。  用户如果原来已安装了windows95/97/98,现在拟对其进行升...

雨林木风win7安装(雨林木风win732位安装教程)

  安装步骤如下:  1、光盘放入光驱,复制光盘上的win7.gho和安装系统.exe到硬盘非C盘的文件夹;(gho文件名可以是其他名字,后缀为gho,体积最大的就是。)  2、双击安装系统.exe;...

win10解绑管理员账户(win10管理员账户怎么取消开机密码)

要解除Windows10电脑上的管理员权限,您需要进行以下操作:1.打开“控制面板”:右键单击“开始”按钮,然后选择“控制面板”。2.进入“用户账户”:在控制面板中,选择“用户账户”。3.点击...

win10家庭版没有组策略编辑器

Win10组策略编辑器找不到怎么办  解决方法  一、win10系统版本本身不提供组策略的功能。  1、运行gpedit.msc直接提示找到gpedit.msc(组策略)。  2、运行MMC,在“添加...

tplogin管理员登录入口(tplogin重新设置密码)

tplogin.cn是新版tplink路由器的登录地址(管理页面地址),在浏览器中输入tplogin.cn,就可以打开tplink路由器的管理页面(登录页面)。具体的登录方法如下:1、打开电脑上的浏...

psp模拟器怎么导入游戏(psp模拟器怎么导入游戏 Vivo手机)

方法如下:1、打开能操作文件的助手软件,用pp链接后点击左下文件,然后点常用目录下的程序用户,会出现ppsspp的文件夹。2、打开ppsspp文件夹,会出来四个选项文件夹,第一个进去后是psp文件夹,...

电脑系统怎样升级(电脑系统怎么升级)

电脑系统升级方法步骤,1、打开电脑,点击电脑左下角的开始菜单,在弹出的菜单选项中选择“控制面板”。2、点击“开始”,点击“控制面板”3、在控制面板中,点击“系统和安全”。4、点击启用或禁用自动更新。5...

win10正版系统下载网站(win10官方下载网站)
  • win10正版系统下载网站(win10官方下载网站)
  • win10正版系统下载网站(win10官方下载网站)
  • win10正版系统下载网站(win10官方下载网站)
  • win10正版系统下载网站(win10官方下载网站)
windows无法激活(windows无法激活有什么影响)

1.如果修复或重新组装了电脑,则可能是安装了不同版本的Windows。或者,如果在修复过程中为电脑使用了其他产品密钥,当使用该密钥的电脑数大于Microsoft软件许可条款允许的电脑数时,该密钥...

新机怎么激活windows10(新机怎么激活电池)
  • 新机怎么激活windows10(新机怎么激活电池)
  • 新机怎么激活windows10(新机怎么激活电池)
  • 新机怎么激活windows10(新机怎么激活电池)
  • 新机怎么激活windows10(新机怎么激活电池)
u盘文件恢复软件免费(恢复u盘数据免费的软件)
u盘文件恢复软件免费(恢复u盘数据免费的软件)

u盘损坏文件恢复方法:1、打开电脑桌面的“计算机”或“我的电脑”。2、然后再找到需要修复的u盘。3、打开“运行”窗口(可以直接按“Windows+R”快捷打开),输入“CMD”并点击“确定”按钮以进入命令提符界面。4、从打开的“命令提示符”...

2025-12-28 22:03 off999

win10蓝屏代码大全以及解决方法
  • win10蓝屏代码大全以及解决方法
  • win10蓝屏代码大全以及解决方法
  • win10蓝屏代码大全以及解决方法
  • win10蓝屏代码大全以及解决方法
电脑uac是什么意思

UAC就是用户帐户控制,在对计算机进行更改之前,用户帐户控制(UAC)会通知您。比如安装软件驱动什么的,默认UAC设置会在程序尝试对计算机进行更改时通知您,但您可以通过调整设置来控制UAC...

笔记本找不到自己家的wifi怎么办

1.笔记本电脑缺少无线网卡驱动,需要下载驱动如果笔记本电脑开机之后,无法显示WiFi网络的图标,这个时候多半是因为电脑缺少无线网卡驱动造成的,有时候自己在清理电脑的时候,不小心清理了驱动程序,便会...

电信宽带办理电话是多少(电信宽带办理联系电话)

电信宽带不一定需要电信手机号码,可以根据自身需要选择,有单独的宽带业务,一般要求预存一定时间的使用费。不过一般包含了宽带、手机号码的融合套餐总体上更优惠,对客户来说更划算。如果有相应需求的话,建议同时...

取消回复欢迎 发表评论: