iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >如何用Python自动生成报表以邮件发送
  • 633
分享到

如何用Python自动生成报表以邮件发送

2023-06-17 00:06:57 633人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

如何用python自动生成报表以邮件发送,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。数据分析师肯定每天都被各种各样的数据数据报表搞得焦头烂额,老板的,运营的、

如何用python自动生成报表以邮件发送,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

数据分析师肯定每天都被各种各样的数据数据报表搞得焦头烂额,老板的,运营的、产品的等等。而且大部分报表都是重复性的工作,这篇文章就是帮助大家如何用Python来实现报表的自动发送,解放你的劳动力,可以让你有时间去做更有意思的事情。

首先来介绍下实现自动报表要使用到的Python库:

  • pymysql 一个可以连接Mysql实例并且实现增删改查功能的库

  • datetime Python标准库中自带的关于时间的库

  • openpyxl 一个可以读写07版以后的excel文档(.xlsx格式也支持)的库

  • smtplib SMTP即简单邮件传输协议,Python简单封装成了一个库

  • email 一个用来处理邮件消息的库

为什么使用openpyxl库来处理Excel呢?因为它支持每个sheet的行数为100W+,也是支持xlsx格式的文件。如果你接受xls文件,并且每个sheet的行数小于6W,也是可以使用xlwt库,它对大文件的读取速度要大于openpyxl。

接下来我们就进入实战部分,来正式实现这个过程。我把整个实现过程分成几个函数的方式来实现,这样看着会比较有结构感。

一、首先导入所有要用到的库

# encoding=utf-8 import pymysql as pms import openpyxl import datetime from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header import Header import smtplib

二、 编写一个传入sql就返回数据的函数get_datas(sql)

def get_datas(sql):  # 一个传入sql导出数据的函数  # 跟数据库建立连接  conn = pms.connect(host='实例地址', user='用户',  passwd='密码', database='库名', port=3306, charset="utf8")  # 使用 cursor() 方法创建一个游标对象 cursor  cur = conn.cursor()  # 使用 execute() 方法执行 SQL  cur.execute(sql)  # 获取所需要的数据  datas = cur.fetchall()  #关闭连接  cur.close()  #返回所需的数据  return datas

三、 编写一个传入sql就返回数据的字段名称的函数get_datas(sql),因为一个函数只能返回一个值,这边就用2个函数来分别返回数据和字段名称(也就是excel里的表头)

def get_fields(sql):  # 一个传入sql导出字段的函数  conn = pms.connect(host='rm-rj91p2yhl9dm2xmbixo.mysql.rds.aliyuncs.com', user='bi-analyzer',  passwd='pcNzcKPnn', database='kikuu', port=3306, charset="utf8")  cur = conn.cursor()  cur.execute(sql)  # 获取所需要的字段名称  fields = cur.description  cur.close()  return fields

四、 编写一个传入数据、字段名称、存储地址返回一个excel 的函数et_excel(data, field, file)

def get_excel(data, field, file):  # 将数据和字段名写入excel的函数  #新建一个工作薄对象  new = openpyxl.Workbook()  #激活一个新的sheet  sheet = new.active  #给sheet命名  sheet.title = '数据展示'  #将字段名称循环写入excel***行,因为字段格式列表里包含列表,每个列表的***元素才是字段名称  for col in range(len(field)):  #row代表行数,column代表列数,value代表单元格输入的值,行数和列数都是从1开始,这点于python不同要注意  _ = sheet.cell(row=1, column=col+1, value=u'%s' % field[col][0])  #将数据循环写入excel的每个单元格中   for row in range(len(data)):  for col in range(len(field)):  #因为***行写了字段名称,所以要从第二行开始写入  _ = sheet.cell(row=row+2, column=col + 1, value=u'%s' % data[row][col])  #将生成的excel保存,这步是必不可少的  newworkbook = new.save(file)  #返回生成的excel  return newworkbook

五、 编写一个自动获取昨天日期字符串格式的函数getYesterday()

def getYesterday():  # 获取昨天日期的字符串格式的函数  #获取今天的日期  today = datetime.date.today()  #获取一天的日期格式数据  oneday = datetime.timedelta(days=1)  #昨天等于今天减去一天  yesterday = today - oneday  #获取昨天日期的格式化字符串  yesterdaystr = yesterday.strftime('%Y-%m-%d')  #返回昨天的字符串  return yesterdaystr

六、编写一个生成邮件的函数create_email(email_from, email_to, email_Subject, email_text, annex_path, annex_name)

def create_email(email_from, email_to, email_Subject, email_text, annex_path, annex_name):  # 输入发件人昵称、收件人昵称、主题,正文,附件地址,附件名称生成一封邮件  #生成一个空的带附件的邮件实例  message = MIMEMultipart()  #将正文以text的形式插入邮件中  message.attach(MIMEText(email_text, 'plain', 'utf-8'))  #生成发件人名称(这个跟发送的邮件没有关系)  message['From'] = Header(email_from, 'utf-8')  #生成收件人名称(这个跟接收的邮件也没有关系)  message['To'] = Header(email_to, 'utf-8')  #生成邮件主题  message['Subject'] = Header(email_Subject, 'utf-8')  #读取附件的内容  att1 = MIMEText(open(annex_path, 'rb').read(), 'base64', 'utf-8')  att1["Content-Type"] = 'application/octet-stream'  #生成附件的名称  att1["Content-Disposition"] = 'attachment; filename=' + annex_name  #将附件内容插入邮件中  message.attach(att1)  #返回邮件  return message

七、 生成一个发送邮件的函数send_email(sender, password, receiver, msg)

def send_email(sender, passWord, receiver, msg):  # 一个输入邮箱、密码、收件人、邮件内容发送邮件的函数  try:  #找到你的发送邮箱的服务器地址,已加密的形式发送  server = smtplib.SMTP_SSL("smtp.mxhichina.com", 465) # 发件人邮箱中的SMTP服务器  server.ehlo()  #登录你的账号  server.login(sender, password) # 括号中对应的是发件人邮箱账号、邮箱密码  #发送邮件  server.sendmail(sender, receiver, msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号(是一个列表)、邮件内容  print("邮件发送成功")  server.quit() # 关闭连接  except Exception:  print(traceback.print_exc())  print("邮件发送失败")

八、建立一个main函数,把所有的自定义内容输入进去,***执行main函数

def main():  print(datetime.datetime.now())  my_sql = sql = "SELECT a.id '用户ID',  a.gmtCreate '用户注册时间',  af.lastLoginTime '***登录时间',  af.totalBuyCount '历史付款子单数',  af.paidmountUSD '历史付款金额',  af.lastPayTime '用户***支付时间'  FROM table a  LEFT JOIN tableb af ON a.id= af.accountId ;"  # 生成数据  my_data = get_datas(my_sql)  # 生成字段名称  my_field = get_fields(my_sql)  # 得到昨天的日期  yesterdaystr = getYesterday()  # 文件名称  my_file_name = 'user attribute' + yesterdaystr + '.xlsx'  # 文件路径  file_path = 'D:/work/report/' + my_file_name  # 生成excel  get_excel(my_data, my_field, file_path)  my_email_from = 'BI部门自动报表机器人'  my_email_to = '运营部'  # 邮件标题  my_email_Subject = 'user' + yesterdaystr  # 邮件正文  my_email_text = "Dear all,     附件为每周数据,请查收!  BI团队 "  #附件地址  my_annex_path = file_path  #附件名称  my_annex_name = my_file_name  # 生成邮件  my_msg = create_email(my_email_from, my_email_to, my_email_Subject,  my_email_text, my_annex_path, my_annex_name)  my_sender = '阿里云邮箱'  my_password = '我的密码'  my_receiver = [10001@qq.com']#接收人邮箱列表  # 发送邮件  send_email(my_sender, my_password, my_receiver, my_msg)  print(datetime.datetime.now()) if __name__ == "__main__":  main();

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网Python频道,感谢您对编程网的支持。

--结束END--

本文标题: 如何用Python自动生成报表以邮件发送

本文链接: https://www.lsjlt.com/news/286585.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何用Python自动生成报表以邮件发送
    如何用Python自动生成报表以邮件发送,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。数据分析师肯定每天都被各种各样的数据数据报表搞得焦头烂额,老板的,运营的、...
    99+
    2023-06-17
  • Python如何实现自动发送邮件
    目录自动发送邮件使用邮箱的第一步一份邮件的组成正式发送一份邮件批量发送邮件自动发送邮件 我们把报表做出来以后一般都是需要发给别人查看,对于一些每天需要发的报表或者是需要一次发送多份的...
    99+
    2024-04-02
  • Python如何实现自动化邮件发送
    今天就跟大家聊聊有关Python如何实现自动化邮件发送,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,可以节省非常多的...
    99+
    2023-06-26
  • 如何使用nodejs自动发送邮件
    这篇文章主要介绍“如何使用nodejs自动发送邮件”,在日常操作中,相信很多人在如何使用nodejs自动发送邮件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用node...
    99+
    2024-04-02
  • Python如何实现报表自动化和自动发送到目的邮箱
    本文小编为大家详细介绍“Python如何实现报表自动化和自动发送到目的邮箱”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python如何实现报表自动化和自动发送到目的邮箱”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知...
    99+
    2023-07-06
  • Python实现自动化发送邮件
    目录开门见山自动化发送邮件SMTP 介绍开启SMTP服务邮件的属性配置发送文本邮件发送HTML邮件发送附件邮件后记总结开门见山 自动化测试过程中,一般测试结果都会以邮件的形式发送给相...
    99+
    2024-04-02
  • 基于Python实现报表自动化并发送到邮箱
    目录项目背景一、报表自动化目的二、报表自动化范围三、实现步骤第一步:读取数据源文件第二步:DataFrame计算第三步:自动发送邮件项目背景 作为数据分析师,我们需要经常制作统计分析...
    99+
    2024-04-02
  • Python怎么实现自动化发送邮件
    这期内容当中小编将会给大家带来有关Python怎么实现自动化发送邮件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚...
    99+
    2023-06-26
  • python如何发送qq邮件
    这篇文章给大家分享的是有关python如何发送qq邮件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python自带了两个模块smtplib和email用于发送邮件。smtplib模块主要负责发送邮件,它对smt...
    99+
    2023-06-14
  • Python如何调用API发送邮件
    这篇文章将为大家详细讲解有关Python如何调用API发送邮件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python 调用 APIPython 调用 API 非常简单,通常需要一个称为 request...
    99+
    2023-06-14
  • 如何用Python实现邮件发送
    今天小编给大家分享一下如何用Python实现邮件发送的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一. 准备用来发送邮件的邮...
    99+
    2023-07-06
  • Python实战之自动发送邮件的实现
    目录1.开启SMTP服务2.准备3.编写脚本4.小例子自动发送邮件能应用于许多场景,比如我想要知道股票策略中的股票池是否有实时的更新,这时候如果再拉一遍数据,跑一遍脚本,实在是太浪费...
    99+
    2024-04-02
  • linux下如何用脚本自动发送文本mail邮件
    这篇文章主要介绍“linux下如何用脚本自动发送文本mail邮件”,在日常操作中,相信很多人在linux下如何用脚本自动发送文本mail邮件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux下如何用脚本...
    99+
    2023-06-09
  • Python中如何使用SMTP发送邮件
    本篇文章为大家展示了Python中如何使用SMTP发送邮件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python创建 SMTP 对象语法import smtplib smtp...
    99+
    2023-06-02
  • Python实现自动化邮件发送过程详解
    使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,可以节省非常多的时间。 操作前配置(以较为复杂的QQ邮箱举例,其他邮箱操作类似) 单击设置-账号,滑倒下方协议处,...
    99+
    2024-04-02
  • python自动处理数据生成报表
    使用模块xlsxwriterimport xlsxwriterworkbook = xlsxwriter.Workbook('chart.xlsx')     #创建一个Excel文件worksheet = workbook.add_wor...
    99+
    2023-01-31
    报表 数据 python
  • 懒人必备Python代码之自动发送邮件
    目录痛点应用场景源代码代码说明效果如下所示痛点 在传统的工作中,发送会议纪要是一个比较繁琐的任务,需要手动输入邮件内容、收件人、抄送人等信息,每次发送都需要重复操作,不仅费时费力,而...
    99+
    2023-05-19
    Python实现自动发送邮件 Python自动发送邮件 Python 发送邮件 Python 邮件
  • Python自动化办公小程序:实现报表自动化和自动发送到目的邮箱
    大家好!我是虎哥。项目背景作为数据分析师,我们需要经常制作统计分析图表。但是报表太多的时候往往需要花费我们大部分时间去制作报表。这耽误了我们利用大量的时间去进行数据分析。但是作为数据分析师我们应该尽可能去挖掘表格图表数据背后隐藏关联信息,而...
    99+
    2023-05-14
    Python 报表自动化 邮箱
  • 如何使用Go语言和Redis实现自动邮件发送
    如何使用Go语言和Redis实现自动邮件发送邮件发送是现代社会中非常常见的一项功能,许多应用程序都需要使用邮件来发送通知、验证用户身份、接收用户反馈等。本文将介绍如何使用Go语言和Redis实现自动邮件发送功能,并提供详细的代码示例。一、准...
    99+
    2023-10-26
    Go语言 redis 邮件发送
  • 如何用Python发送带有附件的邮件
    如何用Python发送带有附件的邮件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python 发送带有附件的邮件条件使用from django.core.ma...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作