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使用functools实现注解同步方法
Feb 06 Python
Python实现识别图片内容的方法分析
Jul 11 Python
python selenium 弹出框处理的实现
Feb 26 Python
python3下载抖音视频的完整代码
Jun 05 Python
使用PyQt4 设置TextEdit背景的方法
Jun 14 Python
Python 装饰器原理、定义与用法详解
Dec 07 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
Jan 16 Python
python+Selenium自动化测试——输入,点击操作
Mar 06 Python
python开发一款翻译工具
Oct 10 Python
python 如何对logging日志封装
Dec 02 Python
Python基础之tkinter图形化界面学习
Apr 29 Python
PyCharm 配置SSH和SFTP连接远程服务器
May 11 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/10/09 PHP
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
PHP基于Closure类创建匿名函数的方法详解
2017/08/17 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
cnblogs csdn 代码运行框实现代码
2009/11/02 Javascript
js自执行函数的几种不同写法的比较
2012/08/16 Javascript
jquery ajax例子返回值详解
2012/09/11 Javascript
JavaScript计算字符串中每个字符出现次数的小例子
2013/07/02 Javascript
jquery获取元素值的方法(常见的表单元素)
2013/11/15 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
jquery分页插件jquery.pagination.js实现无刷新分页
2016/04/01 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
javascript 日期相减-在线教程(附代码)
2017/08/17 Javascript
JavaScript简单实现合并两个Json对象的方法示例
2017/10/16 Javascript
Angular中支持SCSS的方法
2017/11/18 Javascript
详解如何使用 vue-cli 开发多页应用
2017/12/16 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
关于layui 下拉列表的change事件详解
2019/09/20 Javascript
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
解决python3爬虫无法显示中文的问题
2018/04/12 Python
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
python实现n个数中选出m个数的方法
2018/11/13 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
Python代码实现http/https代理服务器的脚本
2019/08/12 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
python3反转字符串的3种方法(小结)
2019/11/07 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
欧缇丽美国官网:Caudalie美国
2016/12/31 全球购物
英国在线玫瑰专家:InterRose
2019/12/01 全球购物
linux下进程间通信的方式
2014/12/23 面试题
自荐书格式
2013/12/01 职场文书
大学生饮食配送创业计划书
2014/01/04 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
python编程简单几行代码实现视频转换Gif示例
2021/10/05 Python