分享

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

 hdzgx 2019-12-27

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

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

  1. # -*- coding:UTF-8 -*-
  2. '''
  3. Created on 2018年1月6日
  4. @author: liuyazhuang
  5. '''
  6. import xlsxwriter
  7. #创建一个Excel文件
  8. workbook = xlsxwriter.Workbook('chart.xlsx')
  9. #创建一个工作表对象
  10. worksheet = workbook.add_worksheet()
  11. #创建一个图表对象
  12. chart = workbook.add_chart({'type':'column'})
  13. #定义数据表头列表
  14. title = [u'业务名称', u'星期一', u'星期二', u'星期三', u'星期四', u'星期五', u'星期六', u'星期日', u'平均流量']
  15. #定义频道名称
  16. buname = [u'业务官网', u'新闻中心', u'购物频道', u'体育频道', u'亲子频道']
  17. #定义5频道一周7天流量数据列表,模拟的数据
  18. data = [
  19. [150,152,158,149,155,145,148],
  20. [89.88,95,93,98,100,99],
  21. [201,200,198,175,179,198,195],
  22. [75,77,78,78,74,70,79],
  23. [88,85,87,90,93,88,84]
  24. ]
  25. #定义format格式对象
  26. format = workbook.add_format()
  27. #定义format对象单元格边框加粗(1个像素)的格式
  28. format.set_border(1)
  29. #定义format_title对象
  30. format_title = workbook.add_format()
  31. #定义format_title对象单元格边框加粗(1像素)的格式
  32. format_title.set_border(1)
  33. #定义format_title对象单元格背景颜色为#cccccc格式
  34. format_title.set_bg_color('#cccccc')
  35. #定义format_title对象单元格居中对齐的格式
  36. format_title.set_align('center')
  37. #定义format_title对象单元格内容加粗的格式
  38. format_title.set_bold()
  39. #定义format_ave格式对象
  40. format_ave = workbook.add_format()
  41. #定义format_ave对象单元格边框加粗(1像素)的格式
  42. format_ave.set_border(1)
  43. #定义format_ave对象单元格数据类别显示格式
  44. format_ave.set_num_format('0.00')
  45. #下面分别以行或列写入方式将标题、业务名称、流量数据写入起初单元格,同时引用不同格式对象
  46. worksheet.write_row('A1', title, format_title)
  47. worksheet.write_column('A2', buname, format)
  48. worksheet.write_row('B2', data[0], format)
  49. worksheet.write_row('B3', data[1], format)
  50. worksheet.write_row('B4', data[2], format)
  51. worksheet.write_row('B5', data[3], format)
  52. worksheet.write_row('B6', data[4], format)
  53. #定义如表数据系列函数
  54. #计算频道周平均流量
  55. def chart_series(cur_row):
  56. worksheet.write_formula('I' + cur_row, '=AVERAGE(B' + cur_row + ':H' +cur_row+')')
  57. chart.add_series({
  58. #将星期一到星期日作为图表数据标签(X轴)
  59. 'categories': '=Sheet1!$B$1:$H$1',
  60. #频道一周所有数据作为数据区域
  61. 'values':'=Sheet1!$B$' + cur_row + ':$H$' + cur_row,
  62. #定义线条颜色为黑色
  63. 'line' : {'color': 'black'},
  64. #引用业务名称为图例项
  65. 'name' : '=Sheet1!$A$' + cur_row
  66. })
  67. #数据区域以第2~6行进行图表数据系列函数调用
  68. for row in range(2, 7):
  69. chart_series(str(row))
  70. #设置图表大小
  71. chart.set_size({'width': 577, 'height': 287})
  72. #设置图表的大标题
  73. chart.set_title({'name':u'业务流量周报图表'})
  74. #设置y轴左侧小标题
  75. chart.set_y_axis({'name':'Mb/s'})
  76. #在A8单元格插入图表
  77. worksheet.insert_chart('A8', chart)
  78. #关闭Excel文档
  79. workbook.close()
运行程序生成的报表结果如下:


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约