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远程登录代码
Apr 29 Python
Django中redis的使用方法(包括安装、配置、启动)
Feb 21 Python
Python 中导入csv数据的三种方法
Nov 01 Python
Python实现简单石头剪刀布游戏
Jan 20 Python
Django基础三之视图函数的使用方法
Jul 18 Python
Pandas之groupby( )用法笔记小结
Jul 23 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
Aug 12 Python
Python tkinter和exe打包的方法
Feb 05 Python
pytorch实现CNN卷积神经网络
Feb 19 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
Jul 31 Python
python使用matplotlib:subplot绘制多个子图的示例
Sep 24 Python
Pytorch 中net.train 和 net.eval的使用说明
May 22 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
Zend Studio 无法启动的问题解决方法
2008/12/04 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
2019/10/23 PHP
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
2007/01/09 Javascript
javascript模版引擎-tmpl的bug修复与性能优化分析
2011/10/23 Javascript
百度判断手机终端并自动跳转js代码及使用实例
2014/06/11 Javascript
javascript检查浏览器是否支持flash的实现代码
2014/08/14 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
VUE多层路由嵌套实现代码
2017/05/15 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
JS+Canvas绘制动态时钟效果
2017/11/10 Javascript
React props和state属性的具体使用方法
2018/04/12 Javascript
使用puppeteer爬取网站并抓出404无效链接
2018/12/20 Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
2019/05/26 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
Pyramid将models.py文件的内容分布到多个文件的方法
2013/11/27 Python
深入理解python中的闭包和装饰器
2016/06/12 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
python中自带的三个装饰器的实现
2019/11/08 Python
pytorch中的自定义数据处理详解
2020/01/06 Python
Python pip使用超时问题解决方案
2020/08/03 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
巴西购物网站:Estrela10
2018/12/13 全球购物
Unix控制后台进程都有哪些进程
2016/09/22 面试题
质检员的岗位职责
2013/11/15 职场文书
业绩考核岗位职责
2014/02/01 职场文书
《可爱的动物》教学反思
2014/02/22 职场文书
报到证办理个人委托书
2014/10/06 职场文书
2014年药店工作总结
2014/11/20 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
Mysql案例刨析事务隔离级别
2021/09/25 MySQL
Spring-cloud Config Server的3种配置方式
2021/09/25 Java/Android
SpringCloud之@FeignClient()注解的使用方式
2021/09/25 Java/Android