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脚本实现下载合并SAE日志
Feb 10 Python
Django中传递参数到URLconf的视图函数中的方法
Jul 18 Python
详解Python的Twisted框架中reactor事件管理器的用法
May 25 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
Jun 16 Python
Python字符串格式化的方法(两种)
Sep 19 Python
python将处理好的图像保存到指定目录下的方法
Jan 10 Python
Django使用redis缓存服务器的实现代码示例
Apr 28 Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
Jun 18 Python
Pytorch 保存模型生成图片方式
Jan 10 Python
keras slice layer 层实现方式
Jun 11 Python
Python Pandas 删除列操作
Mar 16 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
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
ThinkPHP中处理表单中的注意事项
2014/11/22 PHP
PHP支付宝当面付2.0代码
2018/12/21 PHP
PHP7移除的扩展和SAPI
2021/03/09 PHP
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
很棒的一组js图片轮播特效
2017/01/12 Javascript
3种vue路由传参的基本模式
2018/02/22 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
2018/08/13 Javascript
layui 表格的属性的显示转换方法
2018/08/14 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
2019/08/09 Javascript
jQuery实现倒计时功能完整示例
2020/06/01 jQuery
[48:12]Secret vs Optic Supermajor 胜者组 BO3 第三场 6.4
2018/06/05 DOTA
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
django配置连接数据库及原生sql语句的使用方法
2019/03/03 Python
python3对拉勾数据进行可视化分析的方法详解
2019/04/03 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
项目专员岗位职责
2013/12/04 职场文书
应届生如何写自荐信
2014/01/05 职场文书
优秀护士获奖感言
2014/02/20 职场文书
感恩教育活动总结
2014/05/05 职场文书
本科生自荐信
2014/06/18 职场文书
小石潭记导游词
2015/02/03 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
2016年社区中秋节活动总结
2016/04/05 职场文书
MySQL基础(一)
2021/04/05 MySQL
tree shaking对打包体积优化及作用
2022/07/07 Java/Android