转载请注明出处:http://blog.csdn.net/l1028386804/article/details/78987851
对于企业生产环境来说,监控服务器的流量数据至关重要,那么如何通过流量数据来生成相应的流量报表呢?本实例通过定制网站5个频道的流量报表周报,通过XlsxWriter模块将流量数据写入Excel文档,同时自动计算各频道周平均流量,再生成数据图表。同时,可结合邮件发送模块将生成的报表发送到指定人员的邮箱当中,这里我们专注于利用Python生成流量报表,如何发送邮件请大家自行整合,同时,本实例是模拟的流量数据,大家可以将数据替换成自己服务器真实的流量数据。
具体代码如下:
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'亲子频道']
[150,152,158,149,155,145,148],
[201,200,198,175,179,198,195],
format = workbook.add_format()
#定义format对象单元格边框加粗(1个像素)的格式
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_ave = workbook.add_format()
#定义format_ave对象单元格边框加粗(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+')')
'categories': '=Sheet1!$B$1:$H$1',
'values':'=Sheet1!$B$' + cur_row + ':$H$' + cur_row,
'line' : {'color': 'black'},
'name' : '=Sheet1!$A$' + cur_row
chart.set_size({'width': 577, 'height': 287})
chart.set_title({'name':u'业务流量周报图表'})
chart.set_y_axis({'name':'Mb/s'})
worksheet.insert_chart('A8', chart)
运行程序生成的报表结果如下:
![](http://image109.360doc.com/DownloadImg/2019/12/2722/179000392_1_20191227100011784)