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刷投票的脚本实现代码
Nov 08 Python
深入解析Python中的变量和赋值运算符
Oct 12 Python
python实现批量监控网站
Sep 09 Python
Python+Wordpress制作小说站
Apr 14 Python
Python3.5 创建文件的简单实例
Apr 26 Python
对PyTorch torch.stack的实例讲解
Jul 30 Python
Python中new方法的详解
Jan 15 Python
PyTorch预训练的实现
Sep 18 Python
python中的线程threading.Thread()使用详解
Dec 17 Python
python自动点赞功能的实现思路
Feb 26 Python
python读取excel数据并且画图的实现示例
Feb 08 Python
Python+tkinter实现高清图片保存
Mar 13 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
一个简单的php实现的MySQL数据浏览器
2007/03/11 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
解决tp5在nginx下修改配置访问的问题
2019/10/16 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
JQuery中SetTimeOut传参问题探讨
2013/05/10 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
2013/06/24 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
2015/09/23 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
使用canvas实现一个vue弹幕组件功能
2018/11/30 Javascript
关于React动态加载路由处理的相关问题
2019/01/07 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
vue列表单项展开收缩功能之this.$refs的详解
2019/05/05 Javascript
JavaScript使用面向对象实现的拖拽功能详解
2019/06/12 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
2019/11/09 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
JavaScript Window窗口对象属性和使用方法
2020/01/19 Javascript
功能完善的小程序日历组件的实现
2020/03/31 Javascript
vue循环中点击选中再点击取消(单选)的实现
2020/09/10 Javascript
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
[02:10]三分钟回顾完美世界城市挑战赛
2019/01/24 DOTA
将pip源更换到国内镜像的详细步骤
2019/04/07 Python
Python实现播放和录制声音的功能
2020/08/12 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
解决HTML5手机端页面缩放的问题
2017/10/27 HTML / CSS
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
建筑专业自荐信
2013/10/18 职场文书
高一英语教学反思
2014/01/22 职场文书
2015大学自主招生自荐信范文
2015/03/04 职场文书
离婚案件被告代理词
2015/05/23 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers
Python上下文管理器Content Manager
2021/06/26 Python
MySQL的全局锁和表级锁的具体使用
2021/08/23 MySQL
python中对列表的删除和添加方法详解
2022/02/24 Python