转载——python编写excel周报统计图表

https://blog.51cto.com/wuguiyunwei/1937381

  1. 安装模块 :pip install XlsxWriter
  2. 直接直接复制以下代码 保存文件名为wuguiyunwei.py
  3. 执行:python wuguiyunwei.py

注:可以根据业务需求自行修改所要参数

  1 #!/usr/bin/env python
  2 
  3 #coding: utf-8
  4 
  5 import xlsxwriter
  6 
  7  
  8 
  9 workbook = xlsxwriter.Workbook('wugui.xlsx') #创建一个Excel文件
 10 
 11 worksheet = workbook.add_worksheet()  #创建一个工作表对象
 12 
 13 chart = workbook.add_chart({'type':'column'}) #创建一个图表对象
 14 
 15 #定义数据表开头列表
 16 
 17 title = [u'业务名称',u'星期一',u'星期二',u'星期三',u'星期四',u'星期五',u'星期六',u'星期日',u'平均流量']
 18 
 19 buname = [u'乌龟运维官网',u'乌龟1',u'乌龟2',u'乌龟3',u'乌龟4'] #定义频道名称
 20 
 21 #定义5频道一周七天数据列表
 22 
 23 data = [
 24 
 25     [134,432,348,349,565,435,158],
 26 
 27     [176,168,94,53,68,700,91],
 28 
 29     [251,265,154,165,540,154,135],
 30 
 31     [77,76,75,74,73,73],
 32 
 33     [81,82,83,84,91,83,82],
 34 
 35 ]
 36 
 37 format=workbook.add_format() #定义format格式对象
 38 
 39 format.set_border(1) #定义format对象单元格边框加粗(1像素)的格式
 40 
 41  
 42 
 43 format_title=workbook.add_format() #定义format_title格式对象
 44 
 45 format_title.set_border(1) #定义format_title对象单元格边框加粗(1像素)的格式
 46 
 47 format_title.set_bg_color('#cccccc') #定义format_title对象单元格背景颜色为‘cccccc’的格式
 48 
 49 format_title.set_align('center') #定义format_title对象单元格剧中对齐的格式
 50 
 51 format_title.set_bold() #定义format_title对象单元格内容加粗的格式
 52 
 53  
 54 
 55 format_ave=workbook.add_format() #定义format_ave格式对象
 56 
 57 format_ave.set_border(1) #定义format_ave对象单元格边框加粗(1像素)的格式
 58 
 59 format_ave.set_num_format('0.00') #定义format_ave对象单元格数字类别显示格式
 60 
 61  
 62 
 63 #下面分别以行或列写入方式将标题,业务名称,流量数据写入起初单元格,同时引用不同格式对象
 64 
 65 worksheet.write_row('A1',title,format_title)
 66 
 67 worksheet.write_column('A2',buname,format)
 68 
 69 worksheet.write_row('B2',data[0],format)
 70 
 71 worksheet.write_row('B3',data[1],format)
 72 
 73 worksheet.write_row('B4',data[2],format)
 74 
 75 worksheet.write_row('B5',data[3],format)
 76 
 77 worksheet.write_row('B6',data[4],format)
 78 
 79  
 80 
 81 #定义图表数据系列函数
 82 
 83 def chart_series(cur_row):
 84 
 85     worksheet.write_formula('I'+cur_row,'=AVERAGE(B'+cur_row+':H'+cur_row+')',format_ave) #计算(AVERAGE函数)
 86 
 87    #频道周平均流量
 88 
 89     chart.add_series({
 90 
 91         'categories':'=Sheet1!$B$1:$H$1', #将“星期一至星期日”作为图标数据标签(X轴)
 92 
 93 'values':      '=Sheet1!$B$'+cur_row+':$H$'+cur_row, #频道一周所有数据操作 为数据区域
 94 
 95 'line':        {'color':'black'}, #线条颜色定义为black(黑色)
 96 
 97 'name':'Sheet1!$A$'+cur_row,
 98 
 99    })
100 
101 for row in range(2,7): #数据域以第2~6行进行图表数据系列函数调用
102 
103     chart_series(str(row))
104 
105 #chart.set_table() #设置X轴表格格式,本示例不启用
106 
107 #chart.set_style(30) #设置图表样式,本示例不启用
108 
109 chart.set_size({'width': 577,'height':287}) #设置图表大小
110 
111 chart.set_title({'name': u'业务流量周报报表'}) #设置图表(上方)大标题
112 
113 chart.set_y_axis({'name': 'MB/s'}) #设置Y轴(左侧)小图标
114 
115 worksheet.insert_chart('A8', chart) #在A8单元格插入图表
116 
117 workbook.close() #关闭Excel文档
原文地址:https://www.cnblogs.com/bravesunforever/p/13191260.html