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

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

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

[[440244]]

前言

前幾天在學(xué)習(xí)【麥?zhǔn)濉康摹禤ython辦公效率手冊》一書,受益匪淺,原來Python自動化辦公這么有趣,目前學(xué)完了前面四章,將四章內(nèi)容串起來,整理成一篇小文章,分享給大家。當(dāng)然了,這里的展示只是冰山一角,更多精彩內(nèi)容還是要到原文中去汲取。

背景

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

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

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

實現(xiàn)過程

1)替換Word模板生成對應(yīng)邀請函

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

  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文檔的結(jié)構(gòu),一個文檔有多個段落,用doc.paragraphs獲取;段落中的文字用para.text獲取;一個段落中可能有多個不同樣式的文本,這些不同的樣式被稱為run,一個段落中包含多個run,用para.runs獲取,一個run中的具體文本用run.text獲取。了解了這些,再看上述代碼,是不是清晰很多呢?

2)將Word邀請函轉(zhuǎn)化為Pdf格式

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

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

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

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

這里需要用到openpyxl庫了,當(dāng)然關(guān)于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) 

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

4)自動發(fā)送郵件

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

  1. smtp = smtplib.SMTP(host="smtp.qq.com", port=587) 
  2. # smtp.login(郵箱, 授權(quán)碼) 
  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進(jìn)階者學(xué)習(xí)交流群,請在附件中查收您的門票~</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.         # 發(fā)送前面準(zhǔn)備好的郵件 
  30.         smtp.send_message(msg) 
  31.         # 如果放到外邊登錄,這里就不用退出服務(wù)器連接,所以注釋掉了 
  32.         # smtp.quit() 

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

5)完整代碼

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

  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. # 生成對應(yīng)的邀請函,并轉(zhuǎn)存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進(jìn)階者學(xué)習(xí)交流群,請在附件中查收您的門票~</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.         # 發(fā)送前面準(zhǔn)備好的郵件 
  50.         smtp.send_message(msg) 
  51.         # 如果放到外邊登錄,這里就不用退出服務(wù)器連接,所以注釋掉了 
  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進(jìn)階者'

總結(jié)

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

本文轉(zhuǎn)載自微信公眾號「Python爬蟲與數(shù)據(jù)挖掘」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Python爬蟲與數(shù)據(jù)挖掘公眾號。

 

責(zé)任編輯:武曉燕 來源: Python爬蟲與數(shù)據(jù)挖掘
相關(guān)推薦

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

2021-02-01 11:03:36

Python開發(fā)郵件

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

2017-12-17 21:58:18

2021-03-12 08:56:10

Java組件

2009-09-04 13:55:04

C#文檔自動化

2014-06-26 09:23:34

2023-10-18 13:57:17

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 福利片在线| 影音先锋欧美资源 | 91动漫在线观看 | 女人av| 国产日韩欧美一区二区 | 一级毛片中国 | 亚av在线 | 亚洲精品v | 成人亚洲视频 | 欧美一级精品片在线看 | 精品久久久久一区二区国产 | 国产欧美在线播放 | 91xxx在线观看 | 天天草夜夜骑 | 超碰成人免费观看 | 一级女毛片 | 久久av资源网 | 国产精品久久久久久亚洲调教 | 国产成人精品一区二区三区视频 | 最新国产精品视频 | 精品久久香蕉国产线看观看亚洲 | 综合激情av| 亚洲精品中文字幕在线观看 | 中国一级大黄大片 | 欧美视频在线看 | aaa在线观看 | 久久久久久综合 | 国产做a爱片久久毛片 | 国产亚洲一区二区三区在线观看 | 国产探花在线精品一区二区 | aaaaaa大片免费看最大的 | 日韩欧美中文字幕在线视频 | 欧美精品久久 | 中文字幕中文字幕 | 国产1区2区3区 | 亚洲视频免费在线观看 | 久久久久国产一区二区三区 | 性视频一区 | 亚洲精品久久久久中文字幕二区 | 亚洲一区二区免费电影 | 欧美精品一区二区三区四区 在线 |