利用Python生成Excel炫酷圖表
前言
本文對(duì)Python 自動(dòng)化操作Excel并生成圖表,做了詳細(xì)的分析和說明
我們先來看一下python中能操作Excel的常用庫對(duì)比

1.xlswriter庫
XlsxWriter是一個(gè)用來寫Excel2007和xlsx文件格式的python模塊。它可以用來寫文本、數(shù)字、公式并支持單元格格式化、圖片、圖表、文檔配置、自動(dòng)過濾等特性
優(yōu)點(diǎn):功能更多、文檔高保真、擴(kuò)展格式類型、更快并可配置
缺點(diǎn):不能用來讀取和修改excel文件
官方文檔:xlsxwriter.readthedocs.io/
2.生成折線圖
# -*- coding:utf-8 -*-
import xlsxwriter
# 創(chuàng)建一個(gè)excel
workbook = xlsxwriter.Workbook("chart_line.xlsx")
# 創(chuàng)建一個(gè)sheet
worksheet = workbook.add_worksheet()
# worksheet = workbook.add_worksheet("bug_analysis")
# 自定義樣式,加粗
bold = workbook.add_format({'bold': 1})
# --------1、準(zhǔn)備數(shù)據(jù)并寫入excel---------------
# 向excel中寫入數(shù)據(jù),建立圖標(biāo)時(shí)要用到
headings = ['Number', 'testA', 'testB']
data = [
['2017-9-1', '2017-9-2', '2017-9-3', '2017-9-4', '2017-9-5', '2017-9-6'],
[10, 40, 50, 20, 10, 50],
[30, 60, 70, 50, 40, 30],
]
# 寫入表頭
worksheet.write_row('A1', headings, bold)
# 寫入數(shù)據(jù)
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
worksheet.write_column('C2', data[2])
# --------2、生成圖表并插入到excel---------------
# 創(chuàng)建一個(gè)柱狀圖(line chart)
chart_col = workbook.add_chart({'type': 'line'})
# 配置第一個(gè)系列數(shù)據(jù)
chart_col.add_series({
# 這里的sheet1是默認(rèn)的值,因?yàn)槲覀冊(cè)谛陆╯heet時(shí)沒有指定sheet名
# 如果我們新建sheet時(shí)設(shè)置了sheet名,這里就要設(shè)置成相應(yīng)的值
'name': '=Sheet1!$B$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$B$2:$B$7',
'line': {'color': 'red'},
})
# 配置第二個(gè)系列數(shù)據(jù)
chart_col.add_series({
'name': '=Sheet1!$C$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$C$2:$C$7',
'line': {'color': 'yellow'},
})
# 配置第二個(gè)系列數(shù)據(jù)(用了另一種語法)
# chart_col.add_series({
# 'name': ['Sheet1', 0, 2],
# 'categories': ['Sheet1', 1, 0, 6, 0],
# 'values': ['Sheet1', 1, 2, 6, 2],
# 'line': {'color': 'yellow'},
# })
# 設(shè)置圖表的title 和 x,y軸信息
chart_col.set_title({'name': 'The xxx site Bug Analysis'})
chart_col.set_x_axis({'name': 'Test number'})
chart_col.set_y_axis({'name': 'Sample length (mm)'})
# 設(shè)置圖表的風(fēng)格
chart_col.set_style(1)
# 把圖表插入到worksheet并設(shè)置偏移
worksheet.insert_chart('A10', chart_col, {'x_offset': 25, 'y_offset': 10})
workbook.close()

3.生成柱狀圖
# -*- coding:utf-8 -*-
import xlsxwriter
# 創(chuàng)建一個(gè)excel
workbook = xlsxwriter.Workbook("chart_column.xlsx")
# 創(chuàng)建一個(gè)sheet
worksheet = workbook.add_worksheet()
# worksheet = workbook.add_worksheet("bug_analysis")
# 自定義樣式,加粗
bold = workbook.add_format({'bold': 1})
# --------1、準(zhǔn)備數(shù)據(jù)并寫入excel---------------
# 向excel中寫入數(shù)據(jù),建立圖標(biāo)時(shí)要用到
headings = ['Number', 'testA', 'testB']
data = [
['2017-9-1', '2017-9-2', '2017-9-3', '2017-9-4', '2017-9-5', '2017-9-6'],
[10, 40, 50, 20, 10, 50],
[30, 60, 70, 50, 40, 30],
]
# 寫入表頭
worksheet.write_row('A1', headings, bold)
# 寫入數(shù)據(jù)
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
worksheet.write_column('C2', data[2])
# --------2、生成圖表并插入到excel---------------
# 創(chuàng)建一個(gè)柱狀圖(column chart)
chart_col = workbook.add_chart({'type': 'column'})
# 配置第一個(gè)系列數(shù)據(jù)
chart_col.add_series({
# 這里的sheet1是默認(rèn)的值,因?yàn)槲覀冊(cè)谛陆╯heet時(shí)沒有指定sheet名
# 如果我們新建sheet時(shí)設(shè)置了sheet名,這里就要設(shè)置成相應(yīng)的值
'name': '=Sheet1!$B$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$B$2:$B$7',
'line': {'color': 'red'},
})
# 配置第二個(gè)系列數(shù)據(jù)(用了另一種語法)
chart_col.add_series({
'name': '=Sheet1!$C$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$C$2:$C$7',
'line': {'color': 'yellow'},
})
# 配置第二個(gè)系列數(shù)據(jù)(用了另一種語法)
# chart_col.add_series({
# 'name': ['Sheet1', 0, 2],
# 'categories': ['Sheet1', 1, 0, 6, 0],
# 'values': ['Sheet1', 1, 2, 6, 2],
# 'line': {'color': 'yellow'},
# })
# 設(shè)置圖表的title 和 x,y軸信息
chart_col.set_title({'name': 'The xxx site Bug Analysis'})
chart_col.set_x_axis({'name': 'Test number'})
chart_col.set_y_axis({'name': 'Sample length (mm)'})
# 設(shè)置圖表的風(fēng)格
chart_col.set_style(1)
# 把圖表插入到worksheet以及偏移
worksheet.insert_chart('A10', chart_col, {'x_offset': 25, 'y_offset': 10})
workbook.close()

4.生成餅圖
# -*- coding:utf-8 -*-
import xlsxwriter
# 創(chuàng)建一個(gè)excel
workbook = xlsxwriter.Workbook("chart_pie.xlsx")
# 創(chuàng)建一個(gè)sheet
worksheet = workbook.add_worksheet()
# 自定義樣式,加粗
bold = workbook.add_format({'bold': 1})
# --------1、準(zhǔn)備數(shù)據(jù)并寫入excel---------------
# 向excel中寫入數(shù)據(jù),建立圖標(biāo)時(shí)要用到
data = [
['closed', 'active', 'reopen', 'NT'],
[1012, 109, 123, 131],
]
# 寫入數(shù)據(jù)
worksheet.write_row('A1', data[0], bold)
worksheet.write_row('A2', data[1])
# --------2、生成圖表并插入到excel---------------
# 創(chuàng)建一個(gè)柱狀圖(pie chart)
chart_col = workbook.add_chart({'type': 'pie'})
# 配置第一個(gè)系列數(shù)據(jù)
chart_col.add_series({
'name': 'Bug Analysis',
'categories': '=Sheet1!$A$1:$D$1',
'values': '=Sheet1!$A$2:$D$2',
'points': [
{'fill': {'color': '#00CD00'}},
{'fill': {'color': 'red'}},
{'fill': {'color': 'yellow'}},
{'fill': {'color': 'gray'}},
],
})
# 設(shè)置圖表的title 和 x,y軸信息
chart_col.set_title({'name': 'Bug Analysis'})
# 設(shè)置圖表的風(fēng)格
chart_col.set_style(10)
# 把圖表插入到worksheet以及偏移
worksheet.insert_chart('B10', chart_col, {'x_offset': 25, 'y_offset': 10})
workbook.close()

5.實(shí)戰(zhàn)拓展
xlswriter新建并寫入Excel
# 3.6.2 xlswriter新建并寫入Excel
def fun3_6_2():
# 創(chuàng)建Exce并添加sheet
workbook = xlsxwriter.Workbook('demo.xlsx')
worksheet = workbook.add_worksheet()
# 設(shè)置列寬
worksheet.set_column('A:A', 20)
# 設(shè)置格式
bold = workbook.add_format({'bold': True})
# 添加文字內(nèi)容
worksheet.write('A1', 'Hello')
# 按格式添加內(nèi)容
worksheet.write('A2', 'World', bold)
# 寫一些數(shù)字
worksheet.write(2, 0, 123)
worksheet.write(3, 0, 123.456)
# 添加圖片
worksheet.insert_image('B5', 'demo.png')
workbook.close()

以上就是利用Python生成Excel炫酷圖表的詳細(xì)內(nèi)容,更多關(guān)于Python Excel圖表的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解Python中的相對(duì)導(dǎo)入和絕對(duì)導(dǎo)入
絕對(duì)導(dǎo)入是指跳過包內(nèi),直接搜索 sys.path ,在sys.path的基礎(chǔ)上進(jìn)行我們的模塊搜索。相對(duì)導(dǎo)入是指先包內(nèi),再包外,再,,,那么下面這篇文章主要給大家介紹了Python中的相對(duì)導(dǎo)入和絕對(duì)導(dǎo)入,需要的朋友可以參考借鑒,下面來一起看看吧。2017-01-01
Python實(shí)現(xiàn)C#代碼生成器應(yīng)用服務(wù)于Unity示例解析
為了滿足項(xiàng)目需要,需要實(shí)現(xiàn)一個(gè)c#代碼生成器,為此設(shè)計(jì)了一個(gè)語法模板適用于Unity的代碼生成器。本次使用了Python的Template模板,使用python開發(fā)2021-10-10
Python?queue雙端隊(duì)列模塊及用法小結(jié)
雙端隊(duì)列是一種具有隊(duì)列和棧性質(zhì)的線性數(shù)據(jù)結(jié)構(gòu),本文主要介紹了Python?queue雙端隊(duì)列模塊及用法小結(jié),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02
利用Python如何實(shí)時(shí)檢測(cè)自身內(nèi)存占用
這篇文章主要介紹了利用Python如何實(shí)時(shí)檢測(cè)自身內(nèi)存占用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
Django urls.py重構(gòu)及參數(shù)傳遞詳解
這篇文章主要介紹了Django urls.py重構(gòu)及參數(shù)傳遞詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
python自動(dòng)化測(cè)試工具Helium使用示例
大家好,本篇文章主要講的是python自動(dòng)化測(cè)試工具Helium使用示例,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下哦2021-12-12
Python中實(shí)現(xiàn)switch功能實(shí)例解析
這篇文章主要介紹了Python中實(shí)現(xiàn)switch功能實(shí)例解析,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01

