<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 6355字,需瀏覽 13分鐘

           ·

          2022-01-03 03:47


          背景

          想象一下,現(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)行替換模板中的<name>,一步到位。

          def get_invitation(name):
          doc = docx.Document("template.docx")
          for para in doc.paragraphs:
          if '<name>' in para.text:
          for run in para.runs:
          if '<name>' in run.text:
          run.text = run.text.replace('<name>', name)
          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),而且速度還十分快。

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

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

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

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

          def get_username_email():
          workbook = openpyxl.load_workbook("names.xlsx")
          worksheet = workbook.active
          for index, row in enumerate(worksheet.rows):
          if index > 0:
          name = row[0].value # 獲取表格第一列的姓名
          email = row[3].value # 獲取表格第四列的郵箱
          # print(name, email)
          # print(f"{name}邀請函正在生成...")
          # get_invitation(name)
          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ù)雜,代碼如下:

          smtp = smtplib.SMTP(host="smtp.qq.com", port=587)
          # smtp.login(郵箱, 授權(quán)碼)
          smtp.login('[email protected]', "ruybefkipoo")


          def send_email(name, email):
          msg = MIMEMultipart()
          msg["subject"] = f"您好,{name},您的邀請函!"
          msg["from"] = "[email protected]"
          msg["to"] = email

          html_content = f"""
          <html>
          <body>
          <p>您好:{name}<br>
          <b>歡迎加入Python進(jìn)階者學(xué)習(xí)交流群,請在附件中查收您的門票~</b><br>
          點擊這里了解更多:<a >演唱會主頁</a>
          </p>
          </body>
          </html>
          """
          html_part = MIMEText(html_content, "html")
          msg.attach(html_part)
          with open(f"./邀請函/{name}.pdf", "rb") as f:
          doc_part = MIMEApplication(f.read())
          doc_part.add_header("Content-Disposition", "attachment", filename=name)
          # 把附件添加到郵件中
          msg.attach(doc_part)
          # 發(fā)送前面準(zhǔn)備好的郵件
          smtp.send_message(msg)
          # 如果放到外邊登錄,這里就不用退出服務(wù)器連接,所以注釋掉了
          # smtp.quit()

          這里需要注意三點,其一是郵箱登錄放在了函數(shù)外邊,防止函數(shù)多次調(diào)用,短時間多次請求登錄郵箱被封禁;其二郵箱登錄里邊用的是授權(quán)碼,而不是你的郵箱登錄密碼,這里使用的是qq郵箱做示例,其他郵箱需要更改smtp服務(wù);其三這個代碼里邊除了正文中引用了html寫法,還攜帶了Pdf格式的邀請函附件,稍顯復(fù)雜。

          5)完整代碼

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

          import docx
          from docx2pdf import convert
          import openpyxl
          import smtplib
          from email.mime.text import MIMEText
          from email.mime.multipart import MIMEMultipart
          from email.mime.application import MIMEApplication


          # 生成對應(yīng)的邀請函,并轉(zhuǎn)存pdf格式
          def get_invitation(name):
          doc = docx.Document("template.docx")
          for para in doc.paragraphs:
          if '<name>' in para.text:
          for run in para.runs:
          if '<name>' in run.text:
          run.text = run.text.replace('<name>', name)
          doc.save(f'./邀請函/{name}.docx')
          convert(f"./邀請函/{name}.docx")


          smtp = smtplib.SMTP(host="smtp.qq.com", port=587)
          smtp.login('[email protected]', "ruybefkipoo")


          def send_email(name, email):
          msg = MIMEMultipart()
          msg["subject"] = f"您好,{name},您的邀請函!"
          msg["from"] = "[email protected]"
          msg["to"] = email

          html_content = f"""
          <html>
          <body>
          <p>您好:{name}<br>
          <b>歡迎加入Python進(jìn)階者學(xué)習(xí)交流群,請在附件中查收您的門票~</b><br>
          點擊這里了解更多:<a >演唱會主頁</a>
          </p>
          </body>
          </html>
          """
          html_part = MIMEText(html_content, "html")
          msg.attach(html_part)
          with open(f"./邀請函/{name}.pdf", "rb") as f:
          doc_part = MIMEApplication(f.read())
          doc_part.add_header("Content-Disposition", "attachment", filename=name)
          # 把附件添加到郵件中
          msg.attach(doc_part)
          # 發(fā)送前面準(zhǔn)備好的郵件
          smtp.send_message(msg)
          # 如果放到外邊登錄,這里就不用退出服務(wù)器連接,所以注釋掉了
          # smtp.quit()


          def get_username_email():
          workbook = openpyxl.load_workbook("names.xlsx")
          worksheet = workbook.active
          for index, row in enumerate(worksheet.rows):
          if index > 0:
          name = row[0].value
          email = row[3].value
          # print(name, email)
          # print(f"{name}邀請函正在生成...")
          # get_invitation(name)
          send_email(name, email)


          if __name__ == '__main__':
          get_username_email()
          # get_invitation('Python進(jìn)階者')

          總結(jié)

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



          推薦閱讀:

          入門: 最全的零基礎(chǔ)學(xué)Python的問題  | 零基礎(chǔ)學(xué)了8個月的Python  | 實戰(zhàn)項目 |學(xué)Python就是這條捷徑


          干貨:爬取豆瓣短評,電影《后來的我們》 | 38年NBA最佳球員分析 |   從萬眾期待到口碑撲街!唐探3令人失望  | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個海量小姐姐素描圖 |碟中諜這么火,我用機(jī)器學(xué)習(xí)做個迷你推薦系統(tǒng)電影


          趣味:彈球游戲  | 九宮格  | 漂亮的花 | 兩百行Python《天天酷跑》游戲!


          AI: 會做詩的機(jī)器人 | 給圖片上色 | 預(yù)測收入 | 碟中諜這么火,我用機(jī)器學(xué)習(xí)做個迷你推薦系統(tǒng)電影


          小工具: Pdf轉(zhuǎn)Word,輕松搞定表格和水印! | 一鍵把html網(wǎng)頁保存為pdf!|  再見PDF提取收費(fèi)! | 用90行代碼打造最強(qiáng)PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換 | 制作一款釘釘?shù)蛢r機(jī)票提示器! |60行代碼做了一個語音壁紙切換器天天看小姐姐!


          年度爆款文案


          點閱讀原文,看200個Python案例!

          瀏覽 45
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久久久久久久黄色 | 菠萝蜜二区三区免费视频免费 | 日韩性爱三级片在线观看 | 久久久久国产一区二区三区潘金莲 | 激情影院tiantang |