python生成每日报表数据(Excel)并邮件发送的实例

我来为你详细讲解如何用Python生成每日报表数据(Excel)并邮件发送的实例教程。

1. 安装必要的库

首先,我们需要安装两个Python库:pandasopenpyxl

  • pandas 用于将数据整理为需要生成的报表格式。
  • openpyxl 用于将生成的报表保存为Excel格式,并且生成Excel的图表。

可以使用 pip 工具进行安装,打开命令行窗口,输入以下命令:

pip install pandas openpyxl

2. 准备数据

在开始编写Python代码之前,我们需要准备数据,数据可以通过读取数据库、API接口或Excel表格等渠道获取。

假设我们已经成功获取了需要生成报表的数据,现在我们需要将数据整理成符合报表格式的形式。

示例1:假设我们有一个商品销售记录的数据表,包括了每个商品的名称、销售数量和销售金额,我们需要按天来统计每个商品的销售量和销售金额,生成一个Excel表格作为每日报表。

示例2:假设我们有一个学生成绩记录的数据表,包括每个学生的姓名、学号、考试科目和成绩,我们需要按科目来统计每个学生的平均成绩和最高成绩,生成一个Excel表格作为每日报表。

3. 生成报表

接下来我们开始编写Python代码,将整理好的数据按照需要生成的格式生成报表。

示例1代码:

import pandas as pd
from openpyxl import Workbook
from openpyxl.chart import PieChart, Reference

# 读取数据
data = pd.read_csv("sales.csv")

# 按天统计销售量和销售金额
daily_sales = data.groupby('date').sum()[['quantity', 'amount']]

# 创建Excel工作簿
wb = Workbook()
ws = wb.active
ws.title = 'Daily Sales'

# 写入数据
ws['A1'] = 'Date'
ws['B1'] = 'Quantity'
ws['C1'] = 'Amount'
for i, (date, row) in enumerate(daily_sales.iterrows(), 2):
    ws.cell(row=i, column=1, value=date)
    ws.cell(row=i, column=2, value=row['quantity'])
    ws.cell(row=i, column=3, value=row['amount'])

# 生成销售量饼图
pie = PieChart()
labels = Reference(ws, min_col=1, min_row=2, max_row=len(daily_sales)+1)
data = Reference(ws, min_col=2, min_row=1, max_row=len(daily_sales)+1)
pie.add_data(data)
pie.set_categories(labels)
ws.add_chart(pie, 'E2')

# 保存报表
wb.save('daily_sales.xlsx')

示例2代码:

import pandas as pd
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference

# 读取数据
data = pd.read_excel('grades.xlsx')

# 按科目统计平均分和最高分
subject_grades = data.groupby('subject').agg(['mean', 'max'])['grade']

# 创建Excel工作簿
wb = Workbook()
ws = wb.active
ws.title = 'Subject Grades'

# 写入数据
ws['A1'] = 'Subject'
ws['B1'] = 'Average Grade'
ws['C1'] = 'Max Grade'
for i, (subject, row) in enumerate(subject_grades.iterrows(), 2):
    ws.cell(row=i, column=1, value=subject)
    ws.cell(row=i, column=2, value=row['mean'])
    ws.cell(row=i, column=3, value=row['max'])

# 生成成绩柱状图
bar = BarChart()
labels = Reference(ws, min_col=1, min_row=2, max_row=len(subject_grades)+1)
avg_grades = Reference(ws, min_col=2, min_row=1, max_row=len(subject_grades)+1)
max_grades = Reference(ws, min_col=3, min_row=1, max_row=len(subject_grades)+1)
bar.add_data(avg_grades, titles_from_data=True)
bar.add_data(max_grades, titles_from_data=True)
bar.set_categories(labels)
ws.add_chart(bar, 'E2')

# 保存报表
wb.save('subject_grades.xlsx')

4. 发送邮件

将生成好的Excel文件作为邮件附件发送给指定人员,这里我们使用Python内置的email模块进行邮件发送。

示例代码:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication

# 发件人邮箱账号和密码
sender_email = 'example@163.com'
sender_password = 'password'

# 收件人邮箱列表
receivers = ['foo@bar.com', 'bar@foo.com']

# 邮件主题和正文
subject = 'Daily Report'
body = 'Please find attached the daily report.'

# 创建邮件
msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = ', '.join(receivers)
msg['Subject'] = subject
msg.attach(MIMEText(body))

# 添加Excel附件
file = 'daily_sales.xlsx'
with open(file, "rb") as f:
    attach = MIMEApplication(f.read(), _subtype="xlsx")
    attach.add_header('Content-Disposition', 'attachment', filename=file)
    msg.attach(attach)

# 发送邮件
with smtplib.SMTP('smtp.163.com', 25) as smtp:
    smtp.login(sender_email, sender_password)
    smtp.sendmail(sender_email, receivers, msg.as_string())

注:以上示例代码需要主动替换sender_emailsender_passwordreceivers变量为你自己的邮箱账号、密码和收件人列表。

至此,我们已经完成了用Python生成每日报表数据(Excel)并邮件发送的实例教程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python生成每日报表数据(Excel)并邮件发送的实例 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • python os.system执行cmd指令代码详解

    当你需要在Python程序中执行外部操作系统命令时,可以使用Python标准库之一的os.system()函数来执行命令。本攻略将针对该函数进行详细讲解,并提供两个示例说明其用法。 1. Python os.system() 函数简介 os.system()函数可以在Python程序中执行任何由操作系统提供的可执行文件(如Windows的.exe、Unix/…

    python 2023年5月30日
    00
  • golang调用shell命令(实时输出,终止)

    背景介绍 在实际编程中,有时需要用到golang调用shell命令来实现某些功能。例如,需要安装软件等操作都可以通过调用shell命令实现。但是,在执行某些大型任务时,需要实时输出终止执行,而这些功能在golang中并不是很好实现。因此,本文就是为了帮助大家了解如何在golang中调用shell命令实时输出和终止执行。 使用os/exec库实现调用shell…

    python 2023年5月20日
    00
  • Python使用Beautiful Soup(BS4)库解析HTML和XML

    Python使用Beautiful Soup(BS4)库解析HTML和XML Beautiful Soup是Python中一个非常流行的HTML和XML解析库,可以帮助我们更方便地解析网页。本文将介绍如何使用Beautiful Soup解析HTML和XML,并提供两个示例。 安装依赖库 在使用Beautiful Soup解析HTML和XML之前,需要安装一些…

    python 2023年5月15日
    00
  • python-Twitter-api

    【问题标题】:python-Twitter-apipython-Twitter-api 【发布时间】:2023-04-02 00:39:01 【问题描述】: import twitter client = twitter.Api() client = twitter.Api(username=’uname’, password=’password’) upd…

    Python开发 2023年4月8日
    00
  • python实现简单的超市商品销售管理系统

    Python实现简单的超市商品销售管理系统 概述 本教程将介绍如何使用Python实现简单的超市商品销售管理系统。此系统具有以下功能: 用户登录:用户可以使用用户名和密码进行登录,并可以选择使用管理员或销售员权限。 仓库管理:管理员可以添加、删除和修改商品信息,包括商品名称、价格、数量和保质期。 商品销售:销售员可以检索商品信息,选择要购买的商品和数量,并生…

    python 2023年5月30日
    00
  • 详解如何理解并正确使用Python中的f字符串

    当我们需要在字符串中嵌入变量或表达式时,Python提供了f字符串(Formatted string literals)的功能。f字符串不仅可以让代码更加简单易懂,还可以提高代码的执行效率。本文将为大家详细讲解如何正确地使用Python中的f字符串。 1. 什么是f字符串? f字符串是包含在一对花括号 {} 中间的表达式所对应的值,这些变量或表达式可以在大括…

    python 2023年6月5日
    00
  • python检查字符串是否是正确ISBN的方法

    以下是“Python检查字符串是否是正确ISBN的方法”的完整攻略: 一、问题描述 在图书出版领域,ISBN(International Standard Book Number)是一种用于标识图书的国际标准编号。ISBN由13位数字组成,其中最后一位是校验码。本文将详细讲解如何使用Python检查字符串是否是正确的ISBN,并提供两个示例说明。 二、解决方…

    python 2023年5月14日
    00
  • python嵌套try…except如何使用详解

    针对“python嵌套try…except如何使用详解”的问题,我提供以下攻略: 1. 基本用法 Python的 try…except 是一个异常处理机制,可以借助它在代码出错时作出相应反应,以保证程序正常运行。它的基本用法如下: try: # 可能会抛出异常的代码(包括其他可能抛出异常的代码块) except 注册的异常类型1: # 对应注册的异常…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部