python自动处理数据生成报表

使用模块xlsxwriter

import xlsxwriter

workbook = xlsxwriter.Workbook(‘chart.xlsx‘)     #创建一个Excel文件

worksheet = workbook.add_worksheet()             #创建一个工作表对象

chart = workbook.add_chart({‘type‘: ‘column‘})    #创建一个图表对象

#定义数据表头列表

title = [u‘业务名称‘,u‘星期一‘,u‘星期二‘,u‘星期三‘,u‘星期四‘,u‘星期五‘,u‘星期六‘,u‘星期日‘,u‘平均流量‘]

buname= [u‘业务官网‘,u‘新闻中心‘,u‘购物频道‘,u‘体育频道‘,u‘亲子频道‘]          #定义频道名称

#定义5频道一周7天流量数据列表

data = [

[150,152,158,149,155,145,148],

[89,88,95,93,98,100,99],

[201,200,198,175,170,198,195],

[75,77,78,78,74,70,79],

[88,85,87,90,93,88,84],

]

format=workbook.add_format()          #定义format格式对象

format.set_border(1)        #定义format对象单元格边框加粗(1像素)的格式

format_title=workbook.add_format()            #定义format_title格式对象

format_title.set_border(1)         #定义format_title对象单元格边框加粗(1像素)的格式

format_title.set_bg_color(‘#cccccc‘)           #定义format_title对象单元格背景颜色为cccccc的格式

format_title.set_align(‘center‘)           #定义format_title对象单元格居中对齐的格式

format_title.set_bold()        #定义format_title对象单元格内容加粗的格式

format_ave=workbook.add_format()           #定义format_ave格式对象

format_ave.set_border(1)         #定义format_ave对象单元格边框加粗(1像素)的格式

format_ave.set_num_format(‘0.00‘)          #定义format_ave对象单元格数字类别显示格式

#下面分别以行或列写入方式将标题、业务名称、流量数据写入起初单元格,同时引用不同格式对象

worksheet.write_row(‘A1‘,title,format_title)

worksheet.write_column(‘A2‘, buname,format)

worksheet.write_row(‘B2‘, data[0],format)

worksheet.write_row(‘B3‘, data[1],format)

worksheet.write_row(‘B4‘, data[2],format)

worksheet.write_row(‘B5‘, data[3],format)

worksheet.write_row(‘B6‘, data[4],format)

#定义图表数据系列函数

def chart_series(cur_row):

worksheet.write_formula(‘I‘+cur_row, ‘=AVERAGE(B‘+cur_row+‘:H‘+cur_row+‘)‘, format_ave)       #计算(AVERAGE函数)频道周平均流量

chart.add_series({

‘categories‘: ‘=Sheet1!$B$1:$H$1‘,     #将“星期一至星期日”作为图表数据标签(X轴)

‘values‘: ‘=Sheet1!$B$‘+cur_row+‘:$H$‘+cur_row,          #频道一周所有数据作为数据区域

‘line‘: {‘color‘: ‘red‘},          #线条颜色定义为black(黑色)

‘name‘: ‘=Sheet1!$A$‘+cur_row,             #引用业务名称为图例项

})

for row in range(2, 7):     #数据域以第2~6行进行图表数据系列函数调用

chart_series(str(row))

#chart.set_table()      #设置X轴表格格式,本示例不启用

#chart.set_style(30)       #设置图表样式,本示例不启用

chart.set_size({‘width‘: 577, ‘height‘: 287})            #设置图表大小

chart.set_title ({‘name‘: u‘流量数据周报报表‘})          #设置图表(上方)大标题

chart.set_y_axis({‘name‘: ‘Mb/s‘})         #设置y轴(左侧)小标题

worksheet.insert_chart(‘A11‘, chart)          #在A8单元格插入图表

workbook.close()

生成报表后即可使用邮件处理程序发送到指定联系人。

python下比较好用的邮件处理模块是smtplib,关于如何使用smtplib进行邮件发送请参考我的前几篇文章http://itech.blog.51cto.com/192113/1782213

时间: 2024-11-09 21:53:49

python自动处理数据生成报表的相关文章

把sar的数据生成报表

kSar是一个Java应用程序,用来把sar的数据生成报表,输出为pdf文件. 文件下载: http://sourceforge.net/projects/ ... -5.0.6.zip/download kSar有生成报表的能力: LC_ALL=C sar -A > /xuzheng/sar.log java -jar kSar.jar -input /xuzheng/sar.log -outputPDF /xuzheng/sar.pdf 也可以用sar命令抓取数据,用ksar导入文本生成报表

Python导出数据生成excel报表

#_*_coding:utf-8_*_ import MySQLdb import xlwt from datetime import datetime def get_data(sql): # 创建数据库连接. conn = MySQLdb.connect(host='127.0.0.1',user='root' ,passwd='123456',db='test',port=3306,charset='utf8') # 创建游标 cur = conn.cursor() # 执行查询, cur

使用Python定时执行一任务,自动登录某web系统,生成报表,然后发送邮件给指定人员

一.项目需求 每周从A系统生成一张Excel报表,发送此报表给指定人员,相关人员依据此报表去完成后续的工作. 项目限制: 1.无法通过EDI系统交互的方式从后台读取数据 2.由于公司网络环境限制,不能使用SMTP发送邮件,比如,不能通过smtp.163.com发送邮件 二.解决方案 模拟人工操作,登录系统,输入相应查询条件,生成报表,保存后发送邮件给指定人员. 采用技术:采用Python 三.关键点 1.使用selenium模拟登录浏览器 '使用IE浏览器 driver.webdriver.Ie

python脚本批量生成数据

在平时的工作中,经常会遇到造数据,特别是性能测试的时候更是需要大量的数据.如果一条条的插入数据库或者一条条的创建数据,效率未免有点低.如何快速的造大量的测试数据呢?在不熟悉存储过程的情况下,今天给大家介绍一种方法,很简单的也很实用.思路是用python代码写一段小程序,生成一定数量的SQL语句,再把这些SQL语句拷贝黏贴到数据库工具执行SQL即可. 假如有个联系人的学生表student,其表结构为姓名name.学校school.电话telphone.邮箱email. 以Mysq为例子,sql语句

python测试框架&&数据生成&&工具最全资源汇总

xUnit frameworks 单元测试框架frameworks 框架unittest - python自带的单元测试库,开箱即用unittest2 - 加强版的单元测试框架,适用于Python 2.7以及后续版本pytest - 成熟且功能强大的单元测试框架plugincompat - pytest的执行及兼容性插件nosetests - 让python测试更容易一点slash - python实现的单元测试框架 extensions 扩展proboscis - 仿TestNG扩展了unit

python 实现zabbix自动发送报表

实现将zabbix中的screens中的图片以邮件的方式发送到管理员邮箱 大家都知道zabbix的screens一般是定义管理员比较关注的监控指标好方便浏览,那么我们就根据管理员自定义的screens name获取相关图信息的. 简介 首先我们来看下图片的url (右击screens中随便一张图片,选复制图片地址) http://zabbix.xxx.com/chart2.php?graphid=524&screenid=16&width=400&height=156&up

告别.NET生成报表统计图的烦恼

告别.NET生成报表统计图的烦恼 标签: 报表.netstatistics图形数据库文档 2009-10-09 12:00 635人阅读 评论(0) 收藏 举报  分类: .net程序设计(C#)(21)  目录(?)[+] 文章出处:http://www.cnblogs.com 告别.NET生成报表统计图的烦恼 信息系统大多会涉及到数据的统计,如数据的导出及生成统计对比图等,记得之前有一次要生成一个统计图在WEB页面上显示,那时也是在网上找了段Code,完全是一点点画横纵轴坐标上面的画出来的,

zabbix企业应用之定时获取监控数据做报表

最近某项目突然提出一个新需求,需要每周五14点,获取他们监控项目每天20-24点监控平均数据,以小时为单位的,输出文件是excel的,要求以每天为单位单独一个sheet,汇总邮件转给业务. 他们主要是做业务使用量报表,每周周报使用,虽然需求困难,但作为运维也得解决,下面是邮件的效果图. 可以看到邮件标题是带有项目名称与时间,收集人是业务与我. 下面是excel的格式 每天一个sheet,获取这些项目自己每天20-24点的监控平均数据,以小时为单位. 主要是使用sql查看上面的监控数据,并通过py

使用 poi 导入execl模版文件添加数据制作报表

突然发现好久没写blog了,上一篇还是14年10月更新的,不是这段时间没编码,而是恰恰相反,这段时间实在太忙了,所以没有时间更新 项目中经常要制作报表而完全自己用poi生成报表太繁杂了,于是想用制作好的execl 替换数据实现报表的生成. 我对这各功能做好了封装,请看代码: package com.newnewbank.utils.doc; import java.io.File; import java.io.FileInputStream; import java.io.FileOutput