python xlsxwriter庫生成圖表的應(yīng)用示例
xlsxwriter可能用過的人并不是很多,不過使用后就會(huì)感覺,他的功能讓你嘆服,除了可以按要求生成你所需要的excel外
還可以加上很形象的各種圖,比如柱狀圖、餅圖、折線圖等。
xlsxwriter 基本用法,創(chuàng)建 xlsx 文件并添加數(shù)據(jù)
官方文檔:http://xlsxwriter.readthedocs.org/
xlsxwriter 可以操作 xls 格式文件
注意:xlsxwriter 只能創(chuàng)建新文件,不可以修改原有文件。如果創(chuàng)建新文件時(shí)與原有文件同名,則會(huì)覆蓋原有文件
Linux 下安裝: sudo pip install XlsxWriter
Windows 下安裝: pip install XlsxWriter
請(qǐng)看本人生成的:


這里包含了數(shù)據(jù)公式的計(jì)算,插入圖片的連接,生成的圖表,當(dāng)然如果你還需要其他的功能,可以繼續(xù)參考庫的文檔
下面把源代碼貼出來,希望對(duì)大家在工作遇到類似的情況,可以直接拿去用。
#!/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']
#生成一個(gè)有序的字典
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'成績(jī)')
table.write_string(0,2,u'日期')
table.merge_range('D1:E1', u'成績(jī)分布')
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
#生成圖表數(shù)據(jù)
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'})
#關(guān)閉excel句柄
xl_obj.close()
if __name__ == '__main__':
xlwt_run()
沒有使用類寫,只是即興而作。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python內(nèi)置函數(shù)frozenset()的使用小結(jié)
本篇文章主要介紹了python內(nèi)置函數(shù)frozenset()的使用小結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05
淺談算法之最小生成樹Kruskal的Python實(shí)現(xiàn)
最小生成樹Kruskal算法可以稱為“加邊法”,初始最小生成樹邊數(shù)為0,每迭代一次就選擇一條滿足條件的最小代價(jià)邊,加入到最小生成樹的邊集合里。本文將介紹它的原理,并用Python進(jìn)行實(shí)現(xiàn)2021-06-06
python下對(duì)hsv顏色空間進(jìn)行量化操作
這篇文章主要介紹了python下對(duì)hsv顏色空間進(jìn)行量化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06
將python2.7添加進(jìn)64位系統(tǒng)的注冊(cè)表方式
今天小編就為大家分享一篇將python2.7添加進(jìn)64位系統(tǒng)的注冊(cè)表方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11
接口自動(dòng)化多層嵌套json數(shù)據(jù)處理代碼實(shí)例
這篇文章主要介紹了接口自動(dòng)化多層嵌套json數(shù)據(jù)處理代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
Python可視化神器pyecharts之繪制地理圖表練習(xí)
這篇文章主要介紹了Python可視化神器pyecharts之繪制地理圖表,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07
Python?Pygame實(shí)戰(zhàn)之紅心大戰(zhàn)游戲的實(shí)現(xiàn)
說起Windows自帶的游戲,相信許多80、90后的朋友都不陌生。本文就將利用Python中的Pygame模塊實(shí)現(xiàn)一下windows經(jīng)典游戲之一的紅心大戰(zhàn),需要的可以參考一下2022-02-02

