要实现上述的功能的话我们需要以下几步: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”设为自动启动就可以了

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

python发送带表格的邮件_PYTHON自动发送报表邮件相关推荐

  1. Python 发送带附件的邮件 发出去的附件格式就成bin

    导语:学习到使用Python发送带附件的邮件,但收件人收到的附件格式是bin,附件名称也不是filename写的名称. 1.效果如下: 2.解决办法: 将 att1['Content-Disposit ...

  2. python headr方法_对Python发送带header的http请求方法详解

    简单的header import urllib2 request = urllib2.Request('http://example.com/') request.add_header('User-A ...

  3. python 发送带附件邮件到钉钉邮箱+邮件内容带有表格

    import smtplib import pandas as pd # smtplib这个模块是管发邮件 from email.mime.text import MIMEText # 构造邮件内容 ...

  4. email邮件中 内嵌iframe_邮件发送,使用Python中 smtplib与email 模块实现自动发送QQ邮件...

    在 Python 的实际应用中,特别是在执行周期性定时任务的场景中,我们希望能够一种简单.方便的方式获取任务的运行结果和状态.一般我们通过支持邮件发送功能的方式,实现任务结果的反馈.本文主要介绍,如何 ...

  5. python自动读取邮件_Python自动化读取邮件基础代码讲解

    大家好,在之前的文章中我们已经了解如何对自己的邮箱做一些代码操作前的基础配置,也学会了通过 yagmail 发送邮件.这篇文章将分别介绍两个很实用的收取及读取邮件的库:imbox 和 poplib,主 ...

  6. idle不是python自带的开发工具_Python的开发工具

    通常情况下,为了提高开发效率,需要使用相应的开发工具.进行Python开发也可以使用开发工具.下面将详细介绍Python自带的IDLE 一使用自带的IDLE 在安装Python后,会自动安装一个IDL ...

  7. python怎样显示表格数据匹配_Python根据表中每一行中的数据匹配txt文章中出现的次数,表格,每行,在,统计...

    用途: 根据表格每行数据,匹配在txt文章中出现的次数统计 示例: 注意事项: 1. 环境:pip install re & pandas & xlrd; python 3; 2. 表 ...

  8. python自带网页解析器_python 之网页解析器

    一.什么是网页解析器 1.网页解析器名词解释 首先让我们来了解下,什么是网页解析器,简单的说就是用来解析html网页的工具,准确的说:它是一个HTML网页信息提取工具,就是从html网页中解析提取出& ...

  9. python发送短信验证码登录_python发送短信验证码

    原标题:python发送短信验证码 业务: 手机端点击发送验证码,请求发送到python端,由python调用榛子云短信http://smsow.zhenzikj.com的短信接口,生成验证码并发送. ...

最新文章

  1. 开放神经网络交换(ONNX)工具
  2. python requests 动态加载_python requests 高级用法
  3. 深入剖析 RocketMQ 源码 - 消息存储模块
  4. go语言goroutine的取消
  5. jmu-枚举WeekDay
  6. 网络编程学习记录-1
  7. 如何使用矩池云的保存环境功能
  8. java mybatis狂神说sql_Mybatis框架下SQL注入审计分析
  9. 小米note 卡在android,小米Note手机SIM卡怎么安装?小米Note安装手机SIM卡教程
  10. 资源搜索神器 海量精品资源教程 大大啦啦资源神器
  11. 三国群雄传ol服务器 修改,三国群英传ol 单机版,如何修改国战、暴率、经验等问题?...
  12. 用什么软件测试固态硬盘写入速度,利用CrystalDiskMark工具检测电脑SSD固态硬盘读写速度...
  13. 开发技巧 | Python极简实现滑动平均滤波(基于Numpy.convolve)
  14. python计算圆面积_Python习题册004:计算圆面积
  15. 最简单的解释 webdriver的工作原理
  16. spring boot日志配置文件(彩色日志)logback-spring.xml
  17. Semantic UI 之 条目 item
  18. 2022年2月计划(osgearth源码调试+ue4视频+ogreMain源码抄写)
  19. 一个grep使用正则表达式的例子
  20. 切换网络制式,做TAU还是Detach/Attach ?

热门文章

  1. 奇安信 2022年上半年网络安全应急响应分析报告
  2. 一个软件开发工程师选择C++的自述
  3. win7(32/64)+apache2.4+php5.5+mysql5.6 环境搭建配置
  4. 人民日报:5G的好戏在后头
  5. 【论文阅读】Deep Transformer Q-Networks for Partially Observable Reinforcement Learning
  6. 基于usb4java或libusb使用Android Accessory
  7. 智能网联汽车发展综述
  8. Mysql报错 max_allowed_packet 问题处理
  9. REST API Design
  10. Xilinx-7系列FPGA架构学习 --- 深入理解LUT