国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Py自動化辦公-Word文檔替換、Excel表格讀取、Pdf文件生成和Email自動郵件發送實戰案例

開發 前端 自動化
想象一下,現在你有一份Word邀請函模板,然后你有一份客戶列表,上面有客戶的姓名、聯系方式、郵箱等基本信息,然后你的老板現在需要替換邀請函模板中的姓名,然后將Word邀請函模板生成Pdf格式,之后編輯統一的邀請話術(郵件正文),再依次發送邀請函附件到客戶郵箱,你會怎么做?

[[440244]]

前言

前幾天在學習【麥叔】的《Python辦公效率手冊》一書,受益匪淺,原來Python自動化辦公這么有趣,目前學完了前面四章,將四章內容串起來,整理成一篇小文章,分享給大家。當然了,這里的展示只是冰山一角,更多精彩內容還是要到原文中去汲取。

背景

想象一下,現在你有一份Word邀請函模板,然后你有一份客戶列表,上面有客戶的姓名、聯系方式、郵箱等基本信息,然后你的老板現在需要替換邀請函模板中的姓名,然后將Word邀請函模板生成Pdf格式,之后編輯統一的邀請話術(郵件正文),再依次發送邀請函附件到客戶郵箱,你會怎么做?

正常情況下,我們肯定是復制粘貼Excel表格中的客戶姓名,之后挨個Word文檔進行替換,之后將Word轉Pdf格式,然后復制Excel表格中的郵箱進行發送編輯好的郵件正常,之后附上邀請函附件,點擊發送,大概算一下,激情高昂的狀態下,這個流程快的話,大概需要1分鐘甚至更多。如果客戶只有幾十個就還好,一個小時就可以搞定,如果客戶有幾百個,上千個,甚至上萬個呢?那估計要哭暈在辦公室了。

不過別慌,Python自動化辦公,一套組合拳,使用Python自動化辦公——Word文檔替換、Excel表格讀取、Pdf文件生成和Email自動郵件發送一條龍服務安排,下面一起來看看吧!

實現過程

1)替換Word模板生成對應邀請函

這里以上面的Word模板做案例,編寫一個函數以客戶姓名進行替換模板中的,一步到位。

  1. def get_invitation(name): 
  2.     doc = docx.Document("template.docx"
  3.     for para in doc.paragraphs: 
  4.         if '<name>' in para.text: 
  5.             for run in para.runs: 
  6.                 if '<name>' in run.text: 
  7.                     run.text = run.text.replace('<name>'name
  8.         doc.save(f'./邀請函/{name}.docx'

上面這個代碼需要理解Word文檔的結構,一個文檔有多個段落,用doc.paragraphs獲取;段落中的文字用para.text獲取;一個段落中可能有多個不同樣式的文本,這些不同的樣式被稱為run,一個段落中包含多個run,用para.runs獲取,一個run中的具體文本用run.text獲取。了解了這些,再看上述代碼,是不是清晰很多呢?

2)將Word邀請函轉化為Pdf格式

這個就簡單很多了,Python自動化辦公中,一行代碼就可以實現,而且速度還十分快。

  1. from docx2pdf import convert 
  2. convert(f"./邀請函/{name}.docx"

使用convert()函數可以把docx格式的文件轉換成同名的Pdf文檔。

3)讀取Excel表格中的姓名和郵箱

這里需要用到openpyxl庫了,當然關于Excel的庫還是很多的,這里以這個庫作為示例,代碼如下:

  1. def get_username_email(): 
  2.     workbook = openpyxl.load_workbook("names.xlsx"
  3.     worksheet = workbook.active 
  4.     for index, row in enumerate(worksheet.rows): 
  5.         if index > 0: 
  6.             name = row[0].value  # 獲取表格第一列的姓名 
  7.             email = row[3].value  # 獲取表格第四列的郵箱 
  8.             # print(name, email) 
  9.             # print(f"{name}邀請函正在生成..."
  10.             # get_invitation(name
  11.             send_email(name, email) 

上面的代碼,理解起來應該并不難,讀取Excel中的姓名和郵箱,之后傳到get_invitation()生成邀請函,之后傳給send_email()函數中自動發送郵件。實際上,這兩部是分開進行的,這里是先執行get_invitation()函數,先生成邀請函,之后再將該函數注釋掉,再執行發送郵件函數,

4)自動發送郵件

關于自動發送郵件,歷史文章中也曾經發布過好幾篇了,這里繼續用上了,一開始我也覺得挺難的,后來發現也沒有想的那么復雜,代碼如下:

  1. smtp = smtplib.SMTP(host="smtp.qq.com", port=587) 
  2. # smtp.login(郵箱, 授權碼) 
  3. smtp.login('235977@qq.com'"ruybefkipoo"
  4.  
  5.  
  6. def send_email(name, email): 
  7.     msg = MIMEMultipart() 
  8.     msg["subject"] = f"您好,{name},您的邀請函!" 
  9.     msg["from"] = "2352180977@qq.com" 
  10.     msg["to"] = email 
  11.  
  12.     html_content = f""
  13.     <html> 
  14.         <body> 
  15.                 <p>您好:{name}<br> 
  16.                     <b>歡迎加入Python進階者學習交流群,請在附件中查收您的門票~</b><br> 
  17.                     點擊這里了解更多:<a href="https://www.pdcfighting.com">演唱會主頁</a> 
  18.                 </p> 
  19.         </body> 
  20.     </html> 
  21.     ""
  22.     html_part = MIMEText(html_content, "html"
  23.     msg.attach(html_part) 
  24.     with open(f"./邀請函/{name}.pdf""rb"as f: 
  25.         doc_part = MIMEApplication(f.read()) 
  26.         doc_part.add_header("Content-Disposition""attachment", filename=name
  27.         # 把附件添加到郵件中 
  28.         msg.attach(doc_part) 
  29.         # 發送前面準備好的郵件 
  30.         smtp.send_message(msg) 
  31.         # 如果放到外邊登錄,這里就不用退出服務器連接,所以注釋掉了 
  32.         # smtp.quit() 

這里需要注意三點,其一是郵箱登錄放在了函數外邊,防止函數多次調用,短時間多次請求登錄郵箱被封禁;其二郵箱登錄里邊用的是授權碼,而不是你的郵箱登錄密碼,這里使用的是qq郵箱做示例,其他郵箱需要更改smtp服務;其三這個代碼里邊除了正文中引用了html寫法,還攜帶了Pdf格式的邀請函附件,稍顯復雜。關于授權碼的獲取,這里不再贅述了,之前歷史文章頁寫過,網上的教程頁很多,不會的話,私我就行。

5)完整代碼

以上四個步驟進行拆分了,依次完成了Word文檔替換、Excel表格讀取、Pdf文件生成和Email自動郵件發送任務,這里附上完整的代碼。

  1. import docx 
  2. from docx2pdf import convert 
  3. import openpyxl 
  4. import smtplib 
  5. from email.mime.text import MIMEText 
  6. from email.mime.multipart import MIMEMultipart 
  7. from email.mime.application import MIMEApplication 
  8.  
  9.  
  10. # 生成對應的邀請函,并轉存pdf格式 
  11. def get_invitation(name): 
  12.     doc = docx.Document("template.docx"
  13.     for para in doc.paragraphs: 
  14.         if '<name>' in para.text: 
  15.             for run in para.runs: 
  16.                 if '<name>' in run.text: 
  17.                     run.text = run.text.replace('<name>'name
  18.         doc.save(f'./邀請函/{name}.docx'
  19.     convert(f"./邀請函/{name}.docx"
  20.  
  21.  
  22. smtp = smtplib.SMTP(host="smtp.qq.com", port=587) 
  23. smtp.login('235977@qq.com'"ruybefkipoo"
  24.  
  25.  
  26. def send_email(name, email): 
  27.     msg = MIMEMultipart() 
  28.     msg["subject"] = f"您好,{name},您的邀請函!" 
  29.     msg["from"] = "2352180977@qq.com" 
  30.     msg["to"] = email 
  31.  
  32.     html_content = f""
  33.     <html> 
  34.         <body> 
  35.                 <p>您好:{name}<br> 
  36.                     <b>歡迎加入Python進階者學習交流群,請在附件中查收您的門票~</b><br> 
  37.                     點擊這里了解更多:<a href="https://www.pdcfighting.com">演唱會主頁</a> 
  38.                 </p> 
  39.         </body> 
  40.     </html> 
  41.     ""
  42.     html_part = MIMEText(html_content, "html"
  43.     msg.attach(html_part) 
  44.     with open(f"./邀請函/{name}.pdf""rb"as f: 
  45.         doc_part = MIMEApplication(f.read()) 
  46.         doc_part.add_header("Content-Disposition""attachment", filename=name
  47.         # 把附件添加到郵件中 
  48.         msg.attach(doc_part) 
  49.         # 發送前面準備好的郵件 
  50.         smtp.send_message(msg) 
  51.         # 如果放到外邊登錄,這里就不用退出服務器連接,所以注釋掉了 
  52.         # smtp.quit() 
  53.  
  54.  
  55. def get_username_email(): 
  56.     workbook = openpyxl.load_workbook("names.xlsx"
  57.     worksheet = workbook.active 
  58.     for index, row in enumerate(worksheet.rows): 
  59.         if index > 0: 
  60.             name = row[0].value 
  61.             email = row[3].value 
  62.             # print(name, email) 
  63.             # print(f"{name}邀請函正在生成..."
  64.             # get_invitation(name
  65.             send_email(name, email) 
  66.  
  67.  
  68. if __name__ == '__main__'
  69.     get_username_email() 
  70.     # get_invitation('Python進階者'

總結

這篇文章基于Python自動化辦公,主要介紹了使用Python相關庫,依次完成Word文檔替換、Excel表格讀取、Pdf文件生成和Email自動郵件發送任務。程序運行之后,邀請函會自動生成,然后郵件會自動發送,速度也非常快,給幾百個、上千個客戶發送邀請函就不害怕了,如果有上萬個客戶,可能需要借助第三方平臺輔助了,畢竟一般的普通郵箱,每日發送郵箱數是有限制的。

本文轉載自微信公眾號「Python爬蟲與數據挖掘」,可以通過以下二維碼關注。轉載本文請聯系Python爬蟲與數據挖掘公眾號。

 

責任編輯:武曉燕 來源: Python爬蟲與數據挖掘
相關推薦

2021-12-28 09:24:49

Python郵件Word

2022-03-21 10:09:08

PythonExcel郵件

2025-11-10 09:14:26

PythonExcel自動化

2023-11-20 22:07:51

PythonPDF

2024-09-25 10:00:00

Python自動化辦公

2020-04-21 10:45:47

PythonWordExcel

2021-04-17 23:10:59

Python微軟Word

2022-07-05 08:26:10

Python報表自動化郵箱

2021-02-01 11:03:36

Python開發郵件

2020-11-05 12:56:19

Python辦公自動化

2022-06-13 09:12:04

PythonPDF代碼

2024-11-11 16:55:54

2024-05-29 11:16:33

PythonExcel

2021-07-09 07:24:47

Python自動化辦公

2025-04-23 08:15:00

2020-01-16 09:00:00

AI人工智能ML

2021-03-12 08:56:10

Java組件

2017-12-17 21:58:18

2023-10-18 13:57:17

2014-06-26 09:23:34

點贊
收藏

51CTO技術棧公眾號

99精品视频在线免费播放| 日韩欧美成人免费视频| 国产精品爽爽爽| 亚洲精品亚洲人成在线| 91深夜福利视频| 丝袜美腿亚洲色图| 一二三四视频社区在线| 自拍偷拍亚洲欧美日韩| 国产日韩精品在线看| 日韩av在线看| 9l视频自拍蝌蚪9l视频成人| 国产福利视频一区二区| 国产视频一区免费看| 99视频精品全部免费看| 亚洲国产精品精华液ab| 国产视频网站在线| 中文亚洲视频在线| 久久在线免费| 永久免费在线看片视频| 中文字幕在线一区免费| 日本高清中文字幕在线| 美女隐私在线观看| 美女国产精品| 99久久免费精品| 欧美一区二区三区喷汁尤物| 玛丽玛丽电影原版免费观看1977| 日韩大片b站免费观看直播| 丁香婷婷综合色啪| 你懂的国产精品| 亚洲欧美日本视频在线观看| 国产精品丝袜在线| 精品视频一二| 在线亚洲高清视频| 中文字幕电影在线| 疯狂做受xxxx欧美肥白少妇| 日本私人影院在线观看| 亚洲一区二区高清| 麻豆传媒在线播放| 亚洲不卡一区二区三区| 国产毛片av在线| 日韩精品一区二区三区中文不卡| sm在线观看| 亚洲国产高清福利视频| a级片在线免费观看| 日韩精品视频在线免费观看| 色香欲www7777综合网| 免费99精品国产自在在线| 欧美巨大xxxx| 成人av影视在线| 国产乱码精品一区二区三区av| 免费在线激情视频| 偷拍一区二区三区四区| 国产黄色小视频在线| 夜夜嗨av色一区二区不卡| 麻豆一区二区麻豆免费观看| 91视频88av| 国产河南妇女毛片精品久久久 | 欧美一区免费视频| 国产一区二区三区观看| 国内自拍视频网| 欧美性少妇18aaaa视频| caoprom在线| 91高清视频免费观看| 亚洲乱码视频| 免费看的黄色大片| 欧洲av一区二区嗯嗯嗯啊| 3d性欧美动漫精品xxxx软件| 国产精品69精品一区二区三区| 亚洲一区视频| 5月婷婷6月丁香| 欧美最新大片在线看| 一级欧美视频| 国产伦一区二区三区色一情| 成人av综合在线| 国外av在线| 久99久在线视频| 久久aⅴ国产紧身牛仔裤| 国产高潮免费视频| 精品少妇一区二区三区视频免付费| gogo人体一区| 亚洲精品中字| 精品久久久视频| 日本国产一区| 欧美黑人xxxxx| 亚洲欧美日韩国产成人精品影院| 伦理在线一区| 国产精品夜色7777狼人| 国产成人精品1024| shkd中文字幕久久在线观看| 欧美国产一区二区三区| 丝袜国产日韩另类美女| 黄色直播在线| 日韩在线观看免费| 在线视频免费在线观看一区二区| 日本va中文字幕| 日韩精品视频在线观看免费| 中文字幕亚洲精品乱码| 中文字幕国产免费| 中文字幕亚洲欧美日韩高清| 久久在线精品| 日本aaa在线观看| 欧美性受xxx| 91丝袜美腿高跟国产极品老师 | 亚洲成人一区在线| 国产亚洲久久| av不卡在线免费观看| 欧美日韩免费不卡视频一区二区三区| 日韩免费高清视频网站| 丁香色欲久久久久久综合网| 欧美日本精品一区二区三区| 日韩在线视屏| 亚洲精品久久久中文字幕| 社区色欧美激情 | 日本三级亚洲精品| 午夜老司机在线观看| 国产色婷婷国产综合在线理论片a| 国产视频一区在线播放| 全球中文成人在线| 久草免费福利在线| 亚洲日韩欧美视频| 国产在线一区观看| yellow在线观看网址| 午夜视频久久久| 精品国产乱码久久久久久1区2区| 亚洲黑丝一区二区| 能在线看的av| 亚洲最大av在线| 色综合天天在线| 欧美日韩理论| 1769在线观看| 久久手机视频| 亚洲国产精品女人久久久| 日韩高清一级片| 免费黄网站在线| 日韩欧美亚洲日产国| 精品国产乱码久久久久久夜甘婷婷| 久久久999| 欧美xxxx性xxxxx高清| 亚洲黄色成人久久久| 精品香蕉在线观看视频一| 国产老肥熟一区二区三区| 欧美日韩五区| 黑人粗进入欧美aaaaa| 亚州av一区二区| 亚洲一区在线播放| 91精品国产乱码久久久久久久| 一级二级三级在线观看| 国产高清精品一区二区三区| 欧美高清性hdvideosex| 蜜臀av性久久久久蜜臀av麻豆| 午夜欧美激情| 免费在线激情视频| 日本高清不卡在线| 欧洲人成人精品| 久久精品国产网站| 国产精品第一国产精品| 中文字幕视频在线免费观看| 国产成人91久久精品| 欧美性做爰猛烈叫床潮| 日本中文字幕一区二区有限公司| 337p日本欧洲亚洲大胆精品| 欧美一级免费视频| 国产日本欧洲亚洲| 成人羞羞视频播放网站| 欧美日韩视频在线播放| 爱爱爱视频网站| 欧美精品一二区| 亚洲综合成人在线| 国产精品入口66mio| 亚洲国产尤物| 毛片视频免费观看| 久久久久久久久久久久久久久久av| 亚洲精品国偷自产在线99热 | 日韩高清三级| 久久综合久中文字幕青草| 婷婷国产v国产偷v亚洲高清| 亚洲在线电影| 亚洲国产91视频| 亚洲成人av高清| 亚洲国产综合自拍| 全球成人中文在线| 欧美一级片在线| 中文子幕无线码一区tr| 宅男噜噜噜66一区二区| 欧美一级在线| 国产女人在线视频| 又粗又黑又大的吊av| 99久久精品久久久久久ai换脸| 亚洲色在线视频| 五月天久久比比资源色| 国产999精品久久| 一区二区日韩欧美| 成人精品在线| 麻豆视频在线| mm131国产精品| 亚洲国产精品日韩| 国产精品久在线观看| 亚洲精品少妇网址| 欧美日韩国产一区二区三区| 成人性生交大片免费看视频在线|