网络编程
位置:首页>> 网络编程>> Python编程>> python xlsxwriter库生成图表的应用示例

python xlsxwriter库生成图表的应用示例

作者:北京流浪儿  发布时间:2022-03-02 20:01:33 

标签:python,图表

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()

没有使用类写,只是即兴而作。

来源:http://www.cnblogs.com/gide/p/8575249.html

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com