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

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郵件

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報表自動化郵箱

2020-11-05 12:56:19

Python辦公自動化

2021-02-01 11:03:36

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

2017-12-17 21:58:18

2021-03-12 08:56:10

Java組件

2023-10-18 13:57:17

2009-09-04 13:55:04

C#文檔自動化

2014-06-26 09:23:34

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 我想看一级黄色毛片 | 亚洲成人免费视频在线 | 日本亚洲一区 | 在线一区二区三区 | 国产传媒毛片精品视频第一次 | 日韩欧美成人一区二区三区 | 成人h视频在线 | 宅男伊人 | 欧美一区二区三区四区五区无卡码 | 久久精品久久久久久 | 人人九九| 国产线视频精品免费观看视频 | 亚洲精品中文在线 | 色永久 | 久久精品国产一区老色匹 | 婷婷色在线播放 | 一道本在线 | 在线观看成年人视频 | 中文字幕精品一区二区三区在线 | 国产欧美一级二级三级在线视频 | 欧美激情一区二区 | 中国人pornoxxx麻豆 | 国产激情亚洲 | 久久高清国产 | 亚洲一区欧美一区 | 久久伊人精品 | 国内精品视频在线 | 国产伦一区二区三区久久 | 日韩免费视频一区二区 | 欧美一区二区在线视频 | 国产免费一区二区 | 免费精品 | 欧美三级网站 | 日本黄色大片免费 | 久久久精品久久久 | 日本午夜一区二区三区 | 国产高清免费视频 | 免费在线精品视频 | 久久久久亚洲精品 | 日韩美女一区二区三区在线观看 | 美女在线视频一区二区三区 |