当前位置:

首页 > 编程开发 > Python怎么实现Excel拆分并自动发邮件

Python怎么实现Excel拆分并自动发邮件

需求需要向大约500名用户发送带有Excel附件的电子邮件,同时必须按用户从主Excel文件中拆分数据以创建他们自己的特定文件,然后将该文件通过电子邮件发送给正确的用户需求解析大致的流程就是上图,先拆分Excel数据,提取出对应的邮件地址和用户的数据信息,再自动添加到邮件的附件当中代码实现首先我们先来看下我们手中Excel的数据形式是怎么样的。importdatetimeimportosimportshutilfrompathlibimportPathimportpandasaspdsrc_file=Pa

需求

需要向大约 500 名用户发送带有 Excel 附件的电子邮件,同时必须按用户从主 Excel 文件中拆分数据以创建他们自己的特定文件,然后将该文件通过电子邮件发送给正确的用户

需求解析

Python怎么实现Excel拆分并自动发邮件

大致的流程就是上图,先拆分 Excel 数据,提取出对应的邮件地址和用户的数据信息,再自动添加到邮件的附件当中

代码实现

首先我们先来看下我们手中 Excel 的数据形式是怎么样的。

import datetime
import os
import shutil
from pathlib import Path
import pandas as pd
src_file = Path.cwd() / 'data' / 'Example4.xlsx'
df = pd.read_excel(src_file)
df.head()

Python怎么实现Excel拆分并自动发邮件

可以看出,CUSTOMER_ID 就是那个唯一的用户 ID,下面我们以该字段来分组,得到如下数据。

customer_group = df.groupby('CUSTOMER_ID')
for ID, group_df in customer_group:
print(ID)
>>>Output>>>
A1000
A1001
A1002
A1005
...

我们再来看下用户 A1005 所对应的数据形式。

Python怎么实现Excel拆分并自动发邮件

接下来我们就为每一个用户创建一个 Excel,后面就可以作为附件使用。

attachment_path = Path.cwd() / 'data' / 'attachments'
today_string = datetime.datetime.today().strftime('%m%d%Y_%I%p')
attachments = []
for ID, group_df in customer_group:
attachment = attachment_path / f'{ID}_{today_string}.xlsx'
group_df.to_excel(attachment, index=False)
attachments.append((ID, str(attachment)))

我们来看下变量 attachments 所包含的数据吧。

[('A1000',
'c:\Users\luobo\notebooks\2020-10\data\attachments\A1000_01162021_12PM.xlsx'),
('A1001',
'c:\Users\luobo\notebooks\2020-10\data\attachments\A1001_01162021_12PM.xlsx'),
('A1002',
'c:\Users\luobo\notebooks\2020-10\data\attachments\A1002_01162021_12PM.xlsx'),
('A1005',
'c:\Users\luobo\notebooks\2020-10\data\attachments\A1005_01162021_12PM.xlsx')]

最后我们可以通过将 DataFrame 合并在一起来生成带有电子邮件地址的文件列表。

email_merge = pd.merge(df, df2, how='left')
combined = email_merge[['CUSTOMER_ID', 'EMAIL', 'FILE']].drop_duplicates()

得到的 DataFrame 如下:

Python怎么实现Excel拆分并自动发邮件

我们已经收集了客户名单、他们的电子邮件和附件,现在我们就可以用 Outlook 发送一封电子邮件了。

import win32com.client as win32
today_string2 = datetime.datetime.today().strftime('%b %d, %Y')
class EmailsSender:
def __init__(self):
self.outlook = win32.Dispatch('outlook.application')
def send_email(self, to_email_address, attachment_path):
mail = self.outlook.CreateItem(0)
mail.To = to_email_address
mail.Subject = today_string2 + ' Report'
mail.Body = """Please find today's report attached."""
mail.Attachments.Add(Source=attachment_path)
# Use this to show the email
#mail.Display(True)
# Uncomment to send
#mail.Send()

通过上面这个简单的类,我们可以生成电子邮件并附加 Excel 文件。

同时我们还注意到,这里使用了 win32,关于这个库的具体使用,我们在下次的文章中再具体说明吧。

email_sender = EmailsSender()
for index, row in combined.iterrows():
email_sender.send_email(row['EMAIL'], row['FILE'])

Python怎么实现Excel拆分并自动发邮件

最后,我们再把所有生成的 Excel 存档,以备后面审查、比对等。

archive_dir = Path.cwd() / 'archive'
for f in attachments:
shutil.move(f[1], archive_dir)
本文内容来源于互联网,如有侵权请联系删除。
作者最新文章
编程开发 Python
相关文章 更多
Python安装后怎么打开:使用IDLE或命令行启动解释器
Python安装后怎么打开:使用IDLE或命令行启动解释器

刚在Windows安装好Python却不知道如何启动?本文详细演示如何通过开始菜单找到并打开IDLE集成开发环境,以及如何在PowerShell或命令提示符中使用python和py命令启动交互式解释器、运行.py脚本文件。包含退出解释器的方法及常见启动问题排查,帮助初学者快速验证安装成功并开始编写代码。

Windows系统Python安装教程:下载、勾选PATH及环境变量配置
Windows系统Python安装教程:下载、勾选PATH及环境变量配置

针对Windows初学者的Python安装实战指南。详细讲解如何从Python官网下载匹配架构的安装包,重点演示安装首屏勾选“Add python.exe to PATH”的关键操作,并提供使用python --version和py命令验证环境变量的具体步骤,帮助新手快速搭建开发环境并排查路径问题。

Excel筛选大于指定数值:操作步骤与结果验证
Excel筛选大于指定数值:操作步骤与结果验证

本教程演示如何在Excel中筛选大于指定数值的数据。核心步骤包括:确保数据连续、选中表头、通过“开始→排序和筛选”开启筛选,并在“数字筛选”中选择“大于”输入阈值。筛选仅隐藏不符合条件的行,不删除数据。完成后需逐行验证可见数据是否均大于阈值,并可通过取消筛选恢复全部数据。

Office三件套实战:Word+Excel+PPT高效协作工作流
Office三件套实战:Word+Excel+PPT高效协作工作流

本文通过“活动报名与费用汇报”真实案例,演示如何高效协同使用Word、Excel和PPT。从建立规范的项目文件夹开始,分别完成Word内容撰写、Excel数据统计与PPT结论展示,并强调多软件间数据一致性与交付检查的重要性,帮助新手建立完整的办公任务处理逻辑。

电脑入门自学路线:Word、Excel、PPT 实战练习指南
电脑入门自学路线:Word、Excel、PPT 实战练习指南

本文提供Word、Excel和PPT的零基础自学路线,强调以“可交付成果”为导向而非功能堆砌。通过分阶段练习文档排版、数据表格处理及演示文稿制作,帮助新手建立规范的文件管理、公式核对及放映检查习惯,快速掌握日常办公核心技能。

Excel怎么做台账自动统计
Excel怎么做台账自动统计

在日常工作中,台账的建立与统计几乎是绕不开的活儿——无论是考勤记录、项目跟踪,还是财务核算,一套清晰的台账就是效率的基石。而Excel,说它是实现这一目标的“利器”恐怕没人会反对。它既能帮你快速搭建表格,又能通过公式和透视表让数据自己“说话”。今天就来聊聊,怎么用Excel把台账这件事做到既省力又精

PDF表格怎么转换成Excel?如何免费将PDF表格转成Excel?
PDF表格怎么转换成Excel?如何免费将PDF表格转成Excel?

大家有没有遇到过PDF里的表格无法直接编辑的情况?这时候,将其转换为Excel再进行数据整理就会方便很多。下面,我给大家详细介绍3种完整的操作方法,每一步都配有对应的操作截图,同时还会说明普通PDF和扫描版表格在处理上的区别。 方法一:用极轻PDF转换Excel极轻PDF(pdf.cn)的PDF转E

麒麟OS如何查看Python进程的运行状态
麒麟OS如何查看Python进程的运行状态

要想确认麒麟OS中Python程序的运行状态以及资源占用情况,我们可以这样做:用ps -ef | grep python来筛选进程;通过top命令,按P键排序查看实时负载;使用pgrep -f "script.py"精准获取PID;借助lsof -p PID验证文件打开状态。另外,还可以结合syst

Mac如何把书签导出为Excel表格
Mac如何把书签导出为Excel表格

在Mac系统中,Safari和Chrome浏览器均不支持直接将书签导出为Excel的.xlsx格式,若想实现这一操作,需借助第三方工具或手动中转。具体而言,可先利用Safari浏览器将书签导出为Bookmarks.html文件,随后再通过Excel、Numbers等软件打开并进行格式转换;或者运行P

Word表格怎么转Excel?先转PDF再提取数据的方法
Word表格怎么转Excel?先转PDF再提取数据的方法

Word表格转Excel时,建议先转为PDF固定排版,再使用PDF转Excel工具提取数据。常用在线工具包括极轻PDF、PDFCandy和CleverPDF。转换后需重点检查合并单元格、数字格式、跨页表格及空白行,确保数据准确。此外,注意保护隐私,避免上传敏感文件。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师
macOS

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

WINDOWS 更多
Windows 10
Windows 10
Windows

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘
Windows/macOS/iOS/Android

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。