PYTHON自动发送报表邮件

要实现上述的功能的话我们需要以下几步:

1、做好报表模板

2、更新报表数据

3、发送报表邮件

下面我们就用一个例子来给大家演示一下:

1、报表模板

我们选用一份保险公司每天完成保单的数据进行模板制作,要求一份为员工当月累计交单,一份为网点整体交单,效果如下:

2、报表数据更新

我们直接使用之前跟大家分享过的数据分析进阶技能——Excel连接数据库就可以,这样更新数据时直接右键刷新就可以了,也方便利用PYTHON进行自动化的刷新

假设已经做好的报表路径为

Path=D:\test\保单统计表.xlsx

使用PYTHON自动刷新代码:

# -*- coding:utf-8 -*-
from win32com.client import DispatchEx
import time
import os
import traceback
Path='D:\\test\\保单统计表.xlsx'
class ExcelApp:
    def __init__(self):
        self.app = DispatchEx('Excel.Application')
        self.app.EnableEvents = False
        self.app.DisplayAlerts = 0  # 不显示弹窗
        self.app.Visible = False    # 隐藏进程

def quit(self):
        self.app.DisplayAlerts = 1
        self.app.Visible = True
        self.app.Quit()
        del self.app

def open(self, Path):
        workbook = self.app.Workbooks.Open(Path, False, False, None)
        return workbook
    
    def refresh(self, Path):
        workbook = self.open(Path)
        workbook.RefreshAll()
        workbook.Save()
        workbook.Close()
try:
    t = time.time()
    print('正在刷新 >>> %s' % Path)
    excel = ExcelApp()
    excel.refresh(Path)
    t = time.strftime('%H:%M:%S', time.gmtime(time.time() - t))
    print('刷新完成 >>> 耗时:%ss %s' % (t, Path))
except Exception as e:
    print('刷新失败 >>> %s' % Path)
    print(traceback.format_exc())
    excel.quit()
    raise
excel.quit()

效果如下:

改了下表格数据,自动刷新后变为:

3、代码发送邮件

邮箱配置为

Host = mail.xxx.com #邮箱服务器

Port = yy #邮箱端口,一般25

User = name@xxx.com #用户名

Password = pazzzz #密码

To=toname@yyyy.com #收件人

Subject=title #邮件主题

使用PYTHON发邮件代码:

# -*- coding:utf-8 -*-import smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom email.mime.application import MIMEApplicationHost ='mail.xxx.com'Port = 25User ='name@xxx.com'Password = 'pazzzz'To='toname@yyy.com'Subject='保单情况'class EmailApp:    def __init__(self, host, port=25):        self.host = host        self.port = port        self.user = None        self.mail = smtplib.SMTP(host, port, timeout=10)    def login(self, user, password):        self.user = user        self.mail.login(user, password)        return self    def send(self, To, Cc=None, subject=None, **kwargs):        msg = MIMEMultipart()        msg['From'] = self.user        msg['To'] = To        msg['Subject'] = Subject        # ---这是正文部分---        text = kwargs.get('text', '')        part = MIMEText(text)        msg.attach(part)              # ---这是附件部分---        file = kwargs.get('file', '')        filename = os.path.basename(file)        part = MIMEApplication(open(file, 'rb').read())        part.add_header('content-disposition', 'attachment',                        filename=('gbk', '', filename))        msg.attach(part)        self.mail.sendmail(self.user, To, msg.as_string())    def quit(self):        self.mail.quit()        del self.mailtry:    email = EmailApp(Host, port=Port)    email.login(User, Password)    text = '大家好,这是今天的%s报表更新,请查收!' % Subject    email.send(To=To, subject=Subject, file=Path, text=text)    print('发送成功 >>> %s' % Path)except Exception as e:    print('邮件发送失败 >>> %s' % Path)    print(traceback.format_exc())    email.quit()    raiseemail.quit()

效果如下:


到此我们就实现了使用代码完成报表刷新和发送的任务,再设置个任务计划程序定时跑PYTHON就可以了:

1、把上面的合成代码存储为文件'sendmail.py'

2、将下面的文本复制进记事本并更改后缀为bat,命名为“run_sendmail.bat”

@echo offcd /D  D:\test  #第一步代码存贮的路径@echo onpython sendmail.py

样式参考:

3、邮件“计算机”选择“管理”,选择“任务计划程序”,“创建基本任务”,后面按提示把“run_sendmail.bat”设为自动启动就可以了

最后说一句,你可以批量设置,批量发送邮件,例如客户生日批量发送不同的祝福邮件,或者根据数据库里的逾期数据发送给客户逾期催收邮件,再或者给客户发送客户的账单消费信息,感兴趣的可以自己动手研究。


(0)

相关推荐

  • 用 Python 帮运营妹纸快速搞定 Excel 文档

    Microsoft Office 被广泛用于商务和运营分析中, 其中 Excel 尤其受欢迎.Excel 可以用于存储表格数据.创建报告.图形趋势等.在深入研究用 Python 处理 Excel 文档 ...

  • 编程语言教你用python爬取唯品会商品信息,详细教程,仅供学习

    代码展示 运行结束来个照 信息保存到表格中 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加 ...

  • pytest参数化-读取excel allure报告展示

    由于近期公司要求项目接口自动化且使用参数化.装饰器等,我在网上查了一下资料,现在整理下,放便以后代码套用 版本: pytest==6.2.1 pytest-html ==2.1.1 pyyaml == ...

  • 提高效率必备之 Python 办公黑科技!

    来源:Python 技术「ID: pythonall」 学习 Python 这么久了,今天我们来聊聊如何利用 Python 提升办公效率,在工作中提升工作效率的同时也让提升自己的专项技能,让自己的成神 ...

  • python开发报表系统详细操作流程

    本篇文章将介绍: xlwt 常用功能 xlrd 常用功能 xlutils 常用功能 xlwt写Excel时公式的应用 xlwt写入特定目录(路径设置) xlwt Python语言中,写入Excel文件 ...

  • 带你高效工作:利用python实现报表自动化

    文源网络,仅供学习之用,如有侵权请联系删除. 如果能够实现报表自动化,那我们将节约不少的时间,更高效的完成工作内容.那么,如何利用python实现报表自动化呢? 本文将介绍xlwt .xlrd.xlu ...

  • python自动发邮件总结及实例说明

    python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用.smtplib模块主要负责发送邮件,email模块主要负责构造邮件. sm ...

  • 逃离Excel报表困扰,除了Python,还可以用RPA

    日常工作中,无穷无尽的表格常令人抓狂.这其中,又以Excel最为头大.Excel无处不在,它看似简单,实际上门道特多.即便有着Excel宏这样强大的功能.Python这样厉害的工具任你使用,也难以从中 ...

  • 用Python自动生成Excel数据报表!

    来自:法纳斯特 作者:小F 之前小F分享了不少关于Python自动化操作Excel的文章,大家都挺喜欢的. 所以今天就带大家来实战一波,使用Python自动化生成数据报表! 从一条条的数据中,创建出一 ...

  • Python之机器学习-朴素贝叶斯(垃圾邮件分类)

    目录 朴素贝叶斯(垃圾邮件分类) 邮箱训练集下载地址 模块导入 文本预处理 遍历邮件 训练模型 测试模型 朴素贝叶斯(垃圾邮件分类) 参考案例http://www.cncsto.com/article ...

  • 太强了,用 Python 自动生成 Excel 数据报表!

    所以今天就带大家来实战一波,使用Python自动化生成数据报表! 从一条条的数据中,创建出一张数据报表,得出你想要的东西,提高效率. 主要使用到pandas.xlwings以及matplotlib这几 ...

  • python笔记3-发送邮件(smtplib)

    前言 本篇总结了QQ邮箱和163邮箱发送邮件,邮件包含html中文和附件,可以发给多个收件人,专治各种不行,总之看完这篇麻麻再也不用担心我的邮件收不到了. 以下代码兼容python2和python3, ...

  • python测试开发django-29.发送html格式邮件

    前言 上一篇已经通过send_mail()函数发送纯文本的邮件,发送成功了,如果我们想发送一个html格式的邮件,如何实现呢? 发送html格式的邮件实际上还是调用send_mail()函数 ,只需多 ...