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 相关文章推荐
利用一个简单的例子窥探CPython内核的运行机制
Mar 30 Python
理解生产者消费者模型及在Python编程中的运用实例
Jun 26 Python
Python实现识别手写数字 简易图片存储管理系统
Jan 29 Python
Python进度条实时显示处理进度的示例代码
Jan 30 Python
python实现猜单词小游戏
May 22 Python
实例讲解Python脚本成为Windows中运行的exe文件
Jan 24 Python
线程安全及Python中的GIL原理分析
Oct 29 Python
python如何通过pyqt5实现进度条
Jan 20 Python
python+requests接口自动化框架的实现
Aug 31 Python
一些关于python 装饰器的个人理解
Aug 31 Python
有关pycharm登录github时有的时候会报错connection reset的问题
Sep 15 Python
怎么用Python识别手势数字
Jun 07 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
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
Laravel框架使用Redis的方法详解
2018/05/30 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
JavaScript中的集合及效率
2010/01/08 Javascript
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
javascript中expression的用法整理
2014/05/13 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
Javascript中的对象和原型(二)
2016/08/12 Javascript
移动端滑动插件Swipe教程
2016/10/16 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
bootstrap输入框组件使用方法详解
2017/01/19 Javascript
浅谈原生JS中的延迟脚本和异步脚本
2017/07/12 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
JavaScript设计模式之工厂模式简单实例教程
2018/07/03 Javascript
浅谈Vue.js路由管理器 Vue Router
2018/08/16 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
微信小程序实现文件预览
2020/10/22 Javascript
Python logging模块学习笔记
2014/05/24 Python
python rsa 加密解密
2017/03/20 Python
Python AES加密模块用法分析
2017/05/22 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
Django实现学生管理系统
2019/02/26 Python
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
加拿大在线眼镜零售商:SmartBuyGlasses加拿大
2019/05/25 全球购物
热能动力工程毕业生自荐信
2013/11/07 职场文书
党校培训思想汇报
2014/01/03 职场文书
开学典礼演讲稿
2014/05/23 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
关于学习的决心书
2015/02/05 职场文书
小学重阳节活动总结
2015/03/24 职场文书
小学教师师德师风承诺书
2015/04/28 职场文书
起诉书格式范文
2015/05/20 职场文书