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 判断自定义对象类型
Mar 21 Python
Python实现爬取知乎神回复简单爬虫代码分享
Jan 04 Python
Python是编译运行的验证方法
Jan 30 Python
python生成器generator用法实例分析
Jun 04 Python
分分钟入门python语言
Mar 20 Python
对Python3中的input函数详解
Apr 22 Python
Python实现正则表达式匹配任意的邮箱方法
Dec 20 Python
PYQT5设置textEdit自动滚屏的方法
Jun 14 Python
Python3 文章标题关键字提取的例子
Aug 26 Python
如何在django中运行scrapy框架
Apr 22 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
Jul 28 Python
只用20行Python代码实现屏幕录制功能
Jun 02 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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
php中引用&amp;的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
javascript 常用方法总结
2009/06/03 Javascript
jquery 按钮状态效果 正常、移上、按下
2013/08/12 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
AngularJS指令中的绑定策略实例分析
2016/12/14 Javascript
javascript 数组去重复(在线去重工具)
2016/12/17 Javascript
Android中Okhttp3实现上传多张图片同时传递参数
2017/02/18 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
关于laydate.js加载laydate.css路径错误问题解决
2017/12/27 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
2018/05/08 Javascript
js实现按钮开关单机下拉菜单效果
2018/11/22 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
微信小程序 网络通信实现详解
2019/07/23 Javascript
jquery实现直播弹幕效果
2019/11/28 jQuery
python+mongodb数据抓取详细介绍
2017/10/25 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
python实现可视化动态CPU性能监控
2018/06/21 Python
python爬虫的一个常见简单js反爬详解
2019/07/09 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
Python求两个字符串最长公共子序列代码实例
2020/03/05 Python
python利用proxybroker构建爬虫免费IP代理池的实现
2021/02/21 Python
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
美国旅游网站:Tours4Fun
2017/02/17 全球购物
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
最新教师自我评价分享
2013/11/12 职场文书
材料采购员岗位职责
2013/12/17 职场文书
关于车尾的标语大全
2015/08/11 职场文书
Python学习之时间包使用教程详解
2022/03/21 Python