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-基础-入门 简介
Aug 09 Python
Python下的subprocess模块的入门指引
Apr 16 Python
python正则表达式之作业计算器
Mar 18 Python
python抓取并保存html页面时乱码问题的解决方法
Jul 01 Python
Python批处理删除和重命名文件夹的实例
Jul 11 Python
Python根据当前日期取去年同星期日期
Apr 14 Python
itchat-python搭建微信机器人(附示例)
Jun 11 Python
django实现web接口 python3模拟Post请求方式
Nov 19 Python
Python内置数据类型list各方法的性能测试过程解析
Jan 07 Python
Python实现钉钉订阅消息功能
Jan 14 Python
python实现加密的方式总结
Jan 19 Python
django rest framework 自定义返回方式
Jul 12 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
乱谈我对耳机、音箱的感受
2021/03/02 无线电
PHP中的日期及时间
2006/11/23 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
2013/11/12 PHP
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
PHP删除指定目录中的所有目录及文件的方法
2015/02/26 PHP
php浏览历史记录的方法
2015/03/10 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
JQuery 入门实例1
2009/06/25 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
jquery css 设置table的奇偶行背景色示例
2014/06/03 Javascript
JavaScript中的数组操作介绍
2014/12/30 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
python用户评论标签匹配的解决方法
2018/05/31 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
python的常见矩阵运算(小结)
2019/08/07 Python
一款css实现的鼠标经过按钮的特效
2014/09/11 HTML / CSS
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
有原因的手表:Flex Watches
2019/03/23 全球购物
资产经营总监岗位职责范文
2013/12/01 职场文书
放飞蜻蜓反思
2014/02/05 职场文书
大学生军训自我鉴定范文
2014/09/18 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
行政处罚听证告知书
2015/07/01 职场文书
2016年安全月活动总结
2016/04/06 职场文书
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python
基于Go语言构建RESTful API服务
2021/07/25 Golang