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脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
python编写分类决策树的代码
Dec 21 Python
pandas系列之DataFrame 行列数据筛选实例
Apr 12 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
Apr 17 Python
python 根据时间来生成唯一的字符串方法
Jan 14 Python
python按照多个条件排序的方法
Feb 08 Python
python3模拟实现xshell远程执行liunx命令的方法
Jul 12 Python
python 采用paramiko 远程执行命令及报错解决
Oct 21 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
python实现在内存中读写str和二进制数据代码
Apr 24 Python
在keras里面实现计算f1-score的代码
Jun 15 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
Jun 23 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初学者头痛的十四个问题
2006/07/12 PHP
PHP中使用memcache存储session的三种配置方法
2014/04/05 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
php从csv文件读取数据并输出到网页的方法
2015/03/14 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
thinkphp5实现无限级分类
2019/02/18 PHP
一个简单的javascript类定义例子
2009/09/12 Javascript
csdn 论坛技术区平均给分功能
2009/11/07 Javascript
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
深入了解Node.js中的一些特性
2014/09/25 Javascript
简介JavaScript中getUTCMonth()方法的使用
2015/06/10 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
js生成随机数方法和实例
2017/01/17 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
javascript实现blob加密视频源地址的方法
2019/08/08 Javascript
Jquery Datatables的使用详解
2020/01/30 jQuery
selenium python浏览器多窗口处理代码示例
2018/01/15 Python
Python 记录日志的灵活性和可配置性介绍
2018/02/27 Python
Python中join()函数多种操作代码实例
2020/01/13 Python
500行python代码实现飞机大战
2020/04/24 Python
Python如何对齐字符串
2020/07/30 Python
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
测试时代收集的软件测试面试题
2013/09/25 面试题
护理毕业生自荐信范文
2013/12/22 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
公司委托书怎么写
2014/08/02 职场文书
购房公证委托书(2014版)
2014/09/12 职场文书
2014年行政部工作总结
2014/11/19 职场文书
企业年会祝酒词
2015/08/11 职场文书
详解SQL报错盲注
2022/07/23 SQL Server