Py automatisiertes Büro – Ersetzung von Word-Dokumenten, Lesen von Excel-Tabellen, Generierung von PDF-Dateien und praktische Beispiele für den automatischen E-Mail-Versand per E-Mail

Freigeben: 2023-07-24 17:48:40
nach vorne
1220 Leute haben es durchsucht

Stellen Sie sich vor, Sie haben jetzt eine Word-Einladungsvorlage und dann eine Kundenliste mit grundlegenden Informationen wie dem Namen des Kunden, Kontaktinformationen, E-Mail-Adresse usw., und dann muss Ihr Chef jetzt den Namen in der Einladungsvorlage ersetzen , und generieren Sie dann die Word-Einladungsbriefvorlage im PDF-Format, bearbeiten Sie dann die einheitlichen Einladungswörter (E-Mail-Text) und senden Sie dann den Einladungsbriefanhang nacheinander an die E-Mail des Kunden. Py automatisiertes Büro – Ersetzung von Word-Dokumenten, Lesen von Excel-Tabellen, Generierung von PDF-Dateien und praktische Beispiele für den automatischen E-Mail-Versand per E-MailUnter normalen Umständen müssen wir den Kundennamen kopieren und in die Excel-Tabelle einfügen und ihn dann einzeln in Word-Dokumenten ersetzen, dann das Word-Format in das PDF-Format konvertieren und dann die E-Mail-Adresse in die Excel-Tabelle kopieren, um sie zu senden Es ist normal, die Einladung an den Brief anzuhängen, auf Senden zu klicken und einige Berechnungen durchzuführen. Wenn der Vorgang schnell ist und die Leidenschaft hoch ist, dauert er etwa 1 Minute oder länger. Es ist in Ordnung, wenn es nur ein paar Dutzend Kunden gibt, und es kann in einer Stunde erledigt werden. Aber was ist, wenn es Hunderte, Tausende oder sogar Zehntausende von Kunden sind? Ich würde wahrscheinlich weinend im Büro ohnmächtig werden.

Py automatisiertes Büro – Ersetzung von Word-Dokumenten, Lesen von Excel-Tabellen, Generierung von PDF-Dateien und praktische Beispiele für den automatischen E-Mail-Versand per E-Mail

Aber keine Panik, Python automatisiert Office, eine Reihe von Kombinationen, nutzt Python, um Office zu automatisieren – Ersetzung von Word-Dokumenten, Lesen von Excel-Tabellen, Generierung von PDF-Dateien und automatischer E-Mail-Versand – eine Servicevereinbarung aus einer Hand Schauen Sie es sich gemeinsam an. Schauen Sie!

Implementierungsprozess

1) Ersetzen Sie die Word-Vorlage, um das entsprechende Einladungsschreiben zu generieren

Hier nehmen wir die obige Word-Vorlage als Fall und schreiben eine Funktion, um das <name> in der Vorlage zu ersetzen mit dem Namen des Kunden, in einem Schritt.

def get_invitation(name):
    doc = docx.Document("template.docx")
    for para in doc.paragraphs:
        if &#39;<name>&#39; in para.text:
            for run in para.runs:
                if &#39;<name>&#39; in run.text:
                    run.text = run.text.replace(&#39;<name>&#39;, name)
        doc.save(f&#39;./邀请函/{name}.docx&#39;)
Nach dem Login kopieren

Der obige Code muss die Struktur des Word-Dokuments verstehen. Ein Dokument besteht aus mehreren Absätzen, die mit doc.paragraphs abgerufen werden. Der Text im Absatz wird mit para.text abgerufen in einem Absatz, und diese sind unterschiedlich. Der Stil heißt run. Ein Absatz enthält mehrere Läufe, die durch para.runs abgerufen werden können. Der spezifische Text in einem Lauf kann durch run.text abgerufen werden. Nachdem Sie dies verstanden haben, schauen Sie sich den obigen Code an. Ist er viel klarer?

2) Word-Einladungsschreiben in das PDF-Format konvertieren

Dies ist im automatisierten Python-Büro viel einfacher, es kann mit einer Codezeile erreicht werden, und die Geschwindigkeit ist sehr hoch.

from docx2pdf import convert
convert(f"./邀请函/{name}.docx")
Nach dem Login kopieren

Verwenden Sie die Funktion „convert()“, um eine Datei im DOCX-Format in ein PDF-Dokument mit demselben Namen zu konvertieren.

3) Lesen Sie den Namen und die E-Mail-Adresse in der Excel-Tabelle.

Sie müssen hier natürlich noch viele Bibliotheken zu Excel verwenden ist wie folgt:

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)
Nach dem Login kopieren

上面的代码,理解起来应该并不难,读取Excel中的姓名和邮箱,之后传到get_invitation()生成邀请函,之后传给send_email()函数中自动发送邮件。实际上,这两部是分开进行的,这里是先执行get_invitation()函数,先生成邀请函,之后再将该函数注释掉,再执行发送邮件函数,

4)自动发送邮件

关于自动发送邮件,历史文章中也曾经发布过好几篇了,这里继续用上了,一开始我也觉得挺难的,后来发现也没有想的那么复杂,代码如下:

smtp = smtplib.SMTP(host="smtp.qq.com", port=587)
# smtp.login(邮箱, 授权码)
smtp.login(&#39;235977@qq.com&#39;, "ruybefkipoo")


def send_email(name, email):
    msg = MIMEMultipart()
    msg["subject"] = f"您好,{name},您的邀请函!"
    msg["from"] = "2352180977@qq.com"
    msg["to"] = email

    html_content = f"""
    <html>
        <body>
                <p>您好:{name}<br>
                    <b>欢迎加入Python进阶者学习交流群,请在附件中查收您的门票~</b><br>
                    点击这里了解更多:<a href="https://www.pdcfighting.com">演唱会主页</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)
        # 发送前面准备好的邮件
        smtp.send_message(msg)
        # 如果放到外边登录,这里就不用退出服务器连接,所以注释掉了
        # smtp.quit()
Nach dem Login kopieren

这里需要注意三点,其一是邮箱登录放在了函数外边,防止函数多次调用,短时间多次请求登录邮箱被封禁;其二邮箱登录里边用的是授权码,而不是你的邮箱登录密码,这里使用的是qq邮箱做示例,其他邮箱需要更改smtp服务;其三这个代码里边除了正文中引用了html写法,还携带了Pdf格式的邀请函附件,稍显复杂。关于授权码的获取,这里不再赘述了,之前历史文章页写过,网上的教程页很多,不会的话,私我就行。或者参考下面这个文章:手把手教你使用Python网络爬虫实现邮件定时发送(附源码)。

5)完整代码

以上四个步骤进行拆分了,依次完成了Word文档替换、Excel表格读取、Pdf文件生成和Email自动邮件发送任务,这里附上完整的代码。

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


# 生成对应的邀请函,并转存pdf格式
def get_invitation(name):
    doc = docx.Document("template.docx")
    for para in doc.paragraphs:
        if &#39;<name>&#39; in para.text:
            for run in para.runs:
                if &#39;<name>&#39; in run.text:
                    run.text = run.text.replace(&#39;<name>&#39;, name)
        doc.save(f&#39;./邀请函/{name}.docx&#39;)
    convert(f"./邀请函/{name}.docx")


smtp = smtplib.SMTP(host="smtp.qq.com", port=587)
smtp.login('235977@qq.com', "ruybefkipoo")


def send_email(name, email):
    msg = MIMEMultipart()
    msg["subject"] = f"您好,{name},您的邀请函!"
    msg["from"] = "2352180977@qq.com"
    msg["to"] = email

    html_content = f"""
    
        
                

您好:{name}
欢迎加入Python进阶者学习交流群,请在附件中查收您的门票~
点击这里了解更多:演唱会主页

""" 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) # 发送前面准备好的邮件 smtp.send_message(msg) # 如果放到外边登录,这里就不用退出服务器连接,所以注释掉了 # 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进阶者')
Nach dem Login kopieren

总结

这篇文章基于Python自动化办公,主要介绍了使用Python相关库,依次完成Word文档替换、Excel表格读取、Pdf文件生成和Email自动邮件发送任务。程序运行之后,邀请函会自动生成,然后邮件会自动发送,速度也非常快,给几百个、上千个客户发送邀请函就不害怕了,如果有上万个客户,可能需要借助第三方平台辅助了,毕竟一般的普通邮箱,每日发送邮箱数是有限制的。

Py automatisiertes Büro – Ersetzung von Word-Dokumenten, Lesen von Excel-Tabellen, Generierung von PDF-Dateien und praktische Beispiele für den automatischen E-Mail-Versand per E-Mail

人生苦短,我用Python!感谢【麦叔】提供的素材和代码,亲测有效,这里的介绍只是冰山一角,更多内容可以前往《Python办公效率手册》中获取。

Py automatisiertes Büro – Ersetzung von Word-Dokumenten, Lesen von Excel-Tabellen, Generierung von PDF-Dateien und praktische Beispiele für den automatischen E-Mail-Versand per E-Mail

需要源数据的小伙伴可以添加我为好友,私我进行获取,或者前往我的github获取:

https://github.com/cassieeric/Python-office-automation
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonPy automatisiertes Büro – Ersetzung von Word-Dokumenten, Lesen von Excel-Tabellen, Generierung von PDF-Dateien und praktische Beispiele für den automatischen E-Mail-Versand per E-Mail. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:Go语言进阶学习
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!