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

Python自動化辦公實戰:包含Word、Excel、Pdf和Email郵件案例

開發 后端 自動化
這篇文章基于Python自動化辦公,主要介紹了使用Python相關庫,依次完成Word文檔替換、Excel表格讀取、Pdf文件生成和Email自動郵件發送任務。

 [[442480]]

背景

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

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

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

實現過程

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

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

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

總結

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

 

 

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

2021-12-14 07:40:08

Excel自動化辦公

2022-03-21 10:09:08

PythonExcel郵件

2023-11-20 22:07:51

PythonPDF

2020-04-21 10:45:47

PythonWordExcel

2021-04-17 23:10:59

Python微軟Word

2020-11-05 12:56:19

Python辦公自動化

2022-06-13 09:12:04

PythonPDF代碼

2024-05-29 11:16:33

PythonExcel

2024-11-11 16:55:54

2025-04-23 08:15:00

2021-07-09 07:24:47

Python自動化辦公

2022-07-05 08:26:10

Python報表自動化郵箱

2024-09-25 10:00:00

Python自動化辦公

2023-10-18 13:57:17

2021-02-01 11:03:36

Python開發郵件

2024-05-13 16:29:56

Python自動化

2024-10-28 19:36:05

2024-09-24 17:20:16

Python自動化辦公

2021-02-01 12:24:40

Python日志Expect

2020-05-25 14:32:42

Python電子郵件自動化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线看日韩av| 亚洲高清在线 | 国产高清一二三区 | 亚洲一区二区免费视频 | 国产色片 | 国产精品污www一区二区三区 | 国产夜恋视频在线观看 | 蜜桃av鲁一鲁一鲁一鲁 | 福利视频一区二区 | 国产欧美在线一区二区 | 亚洲风情在线观看 | 免费看的av| 成人在线视频网站 | 日韩精品一区二区三区在线播放 | 欧美日韩国产一区二区三区 | 国产在线中文字幕 | 97视频在线观看免费 | 蜜臀久久99精品久久久久野外 | 一级做a爰片性色毛片16 | 亚洲三级在线 | 日本一区二区高清不卡 | 精品久久久久一区二区国产 | 国产一区二区观看 | 男女羞羞的网站 | 狠狠久久综合 | av在线天堂网 | 毛片免费观看视频 | 国产欧美精品 | 国产成人99久久亚洲综合精品 | 奇米av | 国产精品性做久久久久久 | 久久久久国产精品一区二区 | 国产精品99久久久久久www | 日韩av在线中文字幕 | 成人日韩精品 | 日韩欧美第一页 | 久草在线在线精品观看 | 亚洲视频一区二区三区四区 | 粉嫩国产精品一区二区在线观看 | 人人干人人艹 | 亚洲免费在线 |