Python之——定制自动化业务流量报表周报

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/78987851

对于企业生产环境来说,监控服务器的流量数据至关重要,那么如何通过流量数据来生成相应的流量报表呢?本实例通过定制网站5个频道的流量报表周报,通过XlsxWriter模块将流量数据写入Excel文档,同时自动计算各频道周平均流量,再生成数据图表。同时,可结合邮件发送模块将生成的报表发送到指定人员的邮箱当中,这里我们专注于利用Python生成流量报表,如何发送邮件请大家自行整合,同时,本实例是模拟的流量数据,大家可以将数据替换成自己服务器真实的流量数据。
具体代码如下:

# -*- coding:UTF-8 -*-
'''
Created on 2018年1月6日

@author: liuyazhuang
'''
import xlsxwriter


#创建一个Excel文件
workbook = xlsxwriter.Workbook('chart.xlsx')
#创建一个工作表对象
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,179,198,195],
        [75,77,78,78,74,70,79],
        [88,85,87,90,93,88,84]
    ]

#定义format格式对象
format = workbook.add_format()
#定义format对象单元格边框加粗(1个像素)的格式
format.set_border(1)
#定义format_title对象
format_title = workbook.add_format()
#定义format_title对象单元格边框加粗(1像素)的格式
format_title.set_border(1)
#定义format_title对象单元格背景颜色为#cccccc格式
format_title.set_bg_color('#cccccc')
#定义format_title对象单元格居中对齐的格式
format_title.set_align('center')
#定义format_title对象单元格内容加粗的格式
format_title.set_bold()
#定义format_ave格式对象
format_ave = workbook.add_format()
#定义format_ave对象单元格边框加粗(1像素)的格式
format_ave.set_border(1)
#定义format_ave对象单元格数据类别显示格式
format_ave.set_num_format('0.00')
#下面分别以行或列写入方式将标题、业务名称、流量数据写入起初单元格,同时引用不同格式对象
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+')')
    chart.add_series({
            #将星期一到星期日作为图表数据标签(X轴)
            'categories': '=Sheet1!$B$1:$H$1',
            #频道一周所有数据作为数据区域
            'values':'=Sheet1!$B$' + cur_row + ':$H$' + cur_row,
            #定义线条颜色为黑色
            'line' : {'color': 'black'},
            #引用业务名称为图例项
            'name' : '=Sheet1!$A$' + cur_row
        })

#数据区域以第2~6行进行图表数据系列函数调用
for row in range(2, 7):
    chart_series(str(row))
#设置图表大小
chart.set_size({'width': 577, 'height': 287})
#设置图表的大标题
chart.set_title({'name':u'业务流量周报图表'})
#设置y轴左侧小标题
chart.set_y_axis({'name':'Mb/s'})

#在A8单元格插入图表
worksheet.insert_chart('A8', chart)
#关闭Excel文档
workbook.close()
运行程序生成的报表结果如下:


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰 河

可以吃鸡腿么?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值