设为首页 收藏本站
查看: 1077|回复: 0

[经验分享] python自动处理数据生成报表

[复制链接]

尚未签到

发表于 2018-8-8 13:44:19 | 显示全部楼层 |阅读模式
  使用模块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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-548743-1-1.html 上篇帖子: python requests用法总结 下篇帖子: python 编码问题 utf8 ?UnicodeDecodeError
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表