成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python自動化辦公之Excel拆分并自動發郵件

開發 后端
今天我們來分享一個真實的自動化辦公案例,希望各位 Python 愛好者能夠從中得到些許啟發,在自己的工作生活中更多的應用 Python,使得工作事半功倍!

需求

需要向大約 500 名用戶發送帶有 Excel 附件的電子郵件,同時必須按用戶從主 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()

可以看出,CUSTOMER_ID 就是那個唯一的用戶 ID,下面我們以該字段來分組,得到如下數據。

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

我們再來看下用戶 A1005 所對應的數據形式。

接下來我們就為每一個用戶創建一個 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 如下

我們已經收集了客戶名單、他們的電子郵件和附件,現在我們就可以用 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'])

最后,我們再把所有生成的 Excel 存檔,以備后面審查、比對等。

archive_dir = Path.cwd() / 'archive'
for f in attachments:
shutil.move(f[1], archive_dir)

至此,我們的編碼結束,整體來看還是比較簡單的。

責任編輯:龐桂玉 來源: 菜鳥學Python
相關推薦

2020-04-21 10:45:47

PythonWordExcel

2021-07-09 07:24:47

Python自動化辦公

2021-12-28 09:24:49

Python郵件Word

2020-11-05 12:56:19

Python辦公自動化

2024-05-29 11:16:33

PythonExcel

2022-06-13 09:12:04

PythonPDF代碼

2025-04-23 08:15:00

2022-07-05 08:26:10

Python報表自動化郵箱

2023-10-18 13:57:17

2021-12-14 07:40:08

Excel自動化辦公

2021-02-01 11:03:36

Python開發郵件

2023-11-20 22:07:51

PythonPDF

2021-04-17 23:10:59

Python微軟Word

2024-10-28 19:36:05

2017-12-17 21:58:18

2020-05-25 14:32:42

Python電子郵件自動化

2009-07-16 17:06:23

Windows Emb

2024-09-24 17:20:16

Python自動化辦公

2021-02-01 12:24:40

Python日志Expect

2021-06-11 06:54:34

程序郵件Django
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品在线观看入口 | 免费看大片bbbb欧美 | 亚洲综合二区 | 中文天堂网 | 免费在线观看一区二区 | 国产精品中文字幕在线观看 | av色站| 日韩一区二| 久久久久久中文字幕 | 国产一区二区三区在线 | 日韩中文字幕一区二区 | 日韩成人免费视频 | 欧美精三区欧美精三区 | 午夜视频一区二区三区 | 亚洲欧美在线免费观看 | 国产精品日韩一区二区 | 国产97色| 欧美日韩视频 | 丁香一区二区 | 久久精品亚洲一区二区三区浴池 | 人人干在线视频 | 成人免费小视频 | 综合色在线 | 久久视频一区 | 欧美久久久久久久 | 久草免费在线视频 | 99精品国产一区二区青青牛奶 | 欧美色综合 | 四虎最新视频 | 久久人体视频 | 日韩色在线 | 成年免费在线观看 | 一级亚洲| 欧美日韩精品免费观看 | 成年人黄色一级毛片 | 成人在线免费 | 777zyz色资源站在线观看 | 中文字幕在线视频一区二区三区 | 亚洲免费在线 | 男女羞羞免费网站 | 亚洲国产福利视频 |