python xlsxwriter库生成图表的应用示例


Posted in Python onMarch 16, 2018

xlsxwriter可能用过的人并不是很多,不过使用后就会感觉,他的功能让你叹服,除了可以按要求生成你所需要的excel外

还可以加上很形象的各种图,比如柱状图、饼图、折线图等。

xlsxwriter 基本用法,创建 xlsx 文件并添加数据

官方文档:http://xlsxwriter.readthedocs.org/

xlsxwriter 可以操作 xls 格式文件

注意:xlsxwriter 只能创建新文件,不可以修改原有文件。如果创建新文件时与原有文件同名,则会覆盖原有文件

Linux 下安装: sudo pip install XlsxWriter

Windows 下安装: pip install XlsxWriter

请看本人生成的:

 python xlsxwriter库生成图表的应用示例

python xlsxwriter库生成图表的应用示例

这里包含了数据公式的计算,插入图片的连接,生成的图表,当然如果你还需要其他的功能,可以继续参考库的文档

下面把源代码贴出来,希望对大家在工作遇到类似的情况,可以直接拿去用。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Eric.yue

import xlsxwriter
import random
from datetime import date
import collections

def xlwt_chart(xl_obj,table):

  #生成柱状图
  column_chart = xl_obj.add_chart({'type':'column'})
  column_chart.add_series({
    'name':'=sheet1!$D$1',
    'categories':'=sheet1!$D$2:$D$7',
    'values':'=sheet1!$E$2:$E$7'
  })
  table.insert_chart('G2',column_chart)

  #生成饼图
  column_chart2 = xl_obj.add_chart({'type':'pie'})
  column_chart2.add_series({
    'name': '=sheet1!$D$1',
    'categories':'=sheet1!$D$2:$D$7',
    'values': '=sheet1!$E$2:$E$7'
  })
  table.insert_chart('G20', column_chart2)


def xlwt_run():
  data_base = ['0-50','50-60','60-70','70-80','80-90','90-100']

  #生成一个有序的字典
  chart_dict = collections.OrderedDict.fromkeys(data_base,0)

  xl_obj = xlsxwriter.Workbook('chart.xlsx')
  table = xl_obj.add_worksheet('sheet1')
  table.write_string(0,0,u'姓名')
  table.write_string(0,1,u'成绩')
  table.write_string(0,2,u'日期')
  table.merge_range('D1:E1', u'成绩分布')
  table.set_column('C:E',15)

  #定义格式
  date_format = xl_obj.add_format({'num_format':'yyyy-mm-dd'})
  color_format = xl_obj.add_format({'color':'red'})
  font_format = xl_obj.add_format({'font_color':'green','bold':True})

  mm = 1
  for i in xrange(1,40):
    name = 'name_%d' % i
    score = random.randint(30,100)
    if score <= 50:
      chart_dict['0-50'] += 1
    elif score>50 and score<=60:
      chart_dict['50-60'] += 1
    elif score>60 and score<=70:
      chart_dict['60-70'] += 1
    elif score>70 and score<=80:
      chart_dict['70-80'] += 1
    elif score>80 and score<=90:
      chart_dict['80-90'] += 1
    else:
      chart_dict['90-100'] += 1

    if score > 60:
      table.write_string(i, 0, name)
      table.write_number(i, 1, score)
    else:
      table.write_string(i, 0, name, color_format)
      table.write_number(i, 1, score, color_format)

    table.write_datetime(i, 2,date.today(), date_format)
    mm = mm + 1

  #生成图表数据
  row = 1
  for k,v in chart_dict.items():
    table.write_string(row, 3, k, font_format)
    table.write_number(row, 4, v, font_format)
    row = row+1

  xlwt_chart(xl_obj,table)
  #使用公式
  table.write_formula(mm,1,'=AVERAGE(B2:B40)')
  #插入带链接的图片
  table.insert_image('D20',r'/home/mywork/pythonchina/cto51_log/bd_logo12.png',{'url':'https://www.baidu.com'})

  #关闭excel句柄
  xl_obj.close()

if __name__ == '__main__':
  xlwt_run()

没有使用类写,只是即兴而作。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 缺失值处理的方法(Imputation)
Jul 02 Python
python画微信表情符的实例代码
Oct 09 Python
django 多数据库及分库实现方式
Apr 01 Python
python 的topk算法实例
Apr 02 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
Apr 08 Python
python2.7使用scapy发送syn实例
May 05 Python
如何在Python对Excel进行读取
Jun 04 Python
python中可以声明变量类型吗
Jun 18 Python
通过Python实现Payload分离免杀过程详解
Jul 13 Python
Django项目创建及管理实现流程详解
Oct 13 Python
用python写一个带有gui界面的密码生成器
Nov 06 Python
python 实现Requests发送带cookies的请求
Feb 08 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
Mar 15 #Python
python简单商城购物车实例代码
Mar 15 #Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
Mar 15 #Python
python批量实现Word文件转换为PDF文件
Mar 15 #Python
python实现求解列表中元素的排列和组合问题
Mar 15 #Python
Python遍历某目录下的所有文件夹与文件路径
Mar 15 #Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
Mar 15 #Python
You might like
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
php的memcached客户端memcached
2011/06/14 PHP
PHP中spl_autoload_register()和__autoload()区别分析
2014/05/10 PHP
php二维码生成
2015/10/19 PHP
JavaScript 事件参考手册
2008/12/24 Javascript
jquery photoFrame 图片边框美化显示插件
2010/06/28 Javascript
javascript学习笔记(五)正则表达式
2011/04/08 Javascript
为原生js Array增加each方法
2012/04/07 Javascript
用javascript添加控件自定义属性解析
2013/11/25 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
JS将光标聚焦在文本最后的实现代码
2014/03/28 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
vuejs指令详解
2017/02/07 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
2019/12/12 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
Python工程师面试题 与Python基础语法相关
2016/01/14 Python
Swift中的协议(protocol)学习教程
2016/07/08 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
python模拟菜刀反弹shell绕过限制【推荐】
2019/06/25 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
Python requests接口测试实现代码
2020/09/08 Python
如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
2019/08/01 HTML / CSS
大学生在校学习的自我评价
2014/02/18 职场文书
大学竞选班长演讲稿
2014/04/24 职场文书
党支部综合考察材料
2014/05/19 职场文书
应届毕业生求职信范文
2014/07/07 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
教师节标语大全
2014/10/07 职场文书
2015年迎新晚会策划书
2015/07/16 职场文书