Python實現(xiàn)在Excel文件中寫入圖表
學習完如何生成一個 excel 文件之后,接下來我們繼續(xù)學習一下如何在 excel 文件中寫入一個比較簡單的圖表,先來看一下所需要的幾個函數(shù)(這些函數(shù)都是通過工作簿執(zhí)行出來的)。
| 函數(shù)名 | 說明 | 參數(shù) |
|---|---|---|
| add_chart() | 創(chuàng)建圖表對象 | {type:樣式} |
| add_series() | 定義需要展示的數(shù)據(jù) | 字典 |
| set_title() | 定義圖表title | 字符串 |
add_series 參數(shù)
| 參數(shù) | 說明 | 值 |
|---|---|---|
| categories | 展示的標題 | =Sheet1!$A$1:$A$4 Shert1:工作簿名稱 $A1 : 1:1:A$4 表示從第A行的第一個值到第四個值去展示標題 |
| values | 展示的數(shù)據(jù) | =Sheet1!$B1 : 1:1:B$4 Shert1:工作簿名稱 $B1 : 1:1:B$4 表示從第A行的第一個值到第四個值去展示標題 |
| name | 表名 |
$A$1:$A$4 表示從第A行的第一個值到第四個值去展示標題
圖表的樣式
| 樣式名 | 說明 |
|---|---|
| area | 區(qū)域樣式表 |
| bar | 條形樣式表 |
| column | 柱狀樣式表 |
| line | 線條樣式表 |
| pie | 餅圖樣式表 |
| doughnut | 圓環(huán)樣式表 |
| scatter | 散點樣式表 |
| stock | 庫存樣式表 |
| rader | 雷達樣式表 |
結合 study.xlsx 文件 將學生成績以表圖形式展示
這里繼續(xù)使用上一章節(jié)的 “將項目中的 study.xlsx 文件的內容寫入 write.xlsx” 的案例;
代碼示例如下:
# coding:utf-8
import xlsxwriter
import xlrd
# excel = xlsxwriter.Workbook('write.xlsx') # 初始化 excel 對象
# book = excel.add_worksheet('study') # 添加工作簿
#
# title = ['姓名', '性別', '年齡', '成績', '等級'] # 定義 write.xlsx 的首行內容
#
# for index, data in enumerate(title): # for循環(huán) 利用枚舉函數(shù)將 title 的內容寫入 "write.xlsx" 的首行
# book.write(0, index, data)
# excel.close()
def read(): # 定義一個 read 函數(shù)讀取 "study.xlsx" 文件
result = []
excel = xlrd.open_workbook('study.xlsx')
book = excel.sheet_by_name('學生手冊')
for i in book.get_rows():
content = []
for j in i:
content.append(j.value)
result.append(content)
return result
def write(content): # 定義一個 write 函數(shù) 將讀取到 "study.xlsx" 的內容寫入到 "write.xlsx" 文件
excel = xlsxwriter.Workbook('write.xlsx')
book = excel.add_worksheet('study')
for index, data in enumerate(content):
print(data)
for sub_index, sub_data in enumerate(data):
# print(sub_index, sub_data)
book.write(index, sub_index, sub_data)
book1 = excel.add_worksheet('學生等級') # 定義 "學生等級" 工作簿
data = [ # 定義 data 列表 用以存放學生成績所處等級與數(shù)量
['優(yōu)秀', '良好', '中', '差'],
[15, 25, 55, 5]
]
book1.write_column('A1', data[0]) # write_column() 函數(shù),按行添加(即 A1 行添加 data 列表的 0 索引的內容)
book1.write_column('B1', data[1])
chart = excel.add_chart({'type': 'column'}) # 定義圖表樣式為 柱狀樣式表
chart.add_series({ # 添加需要展示的數(shù)據(jù)
'categories': '=學生等級!$A1:$A4',
'values': '=學生等級!$B1:$B4',
'name': '成績占比'
})
chart.set_title({'name': '成績占比圖表'}) # 定義圖表title
book1.insert_chart('A10', chart) # 將 chart 放在 excel 表格對應工作簿的 A10 位置
excel.close()
if __name__ == '__main__':
result = read()
write(result)
運行結果如下:


拓展:再試試餅狀圖與條形樣式圖
代碼示例如下:
# coding:utf-8
import xlsxwriter
import xlrd
# excel = xlsxwriter.Workbook('write.xlsx') # 初始化 excel 對象
# book = excel.add_worksheet('study') # 添加工作簿
#
# title = ['姓名', '性別', '年齡', '成績', '等級'] # 定義 write.xlsx 的首行內容
#
# for index, data in enumerate(title): # for循環(huán) 利用枚舉函數(shù)將 title 的內容寫入 "write.xlsx" 的首行
# book.write(0, index, data)
# excel.close()
def read(): # 定義一個 read 函數(shù)讀取 "study.xlsx" 文件
result = []
excel = xlrd.open_workbook('study.xlsx')
book = excel.sheet_by_name('學生手冊')
for i in book.get_rows():
content = []
for j in i:
content.append(j.value)
result.append(content)
return result
def write(content): # 定義一個 write 函數(shù) 將讀取到 "study.xlsx" 的內容寫入到 "write.xlsx" 文件
excel = xlsxwriter.Workbook('write.xlsx')
book = excel.add_worksheet('study')
for index, data in enumerate(content):
print(data)
for sub_index, sub_data in enumerate(data):
# print(sub_index, sub_data)
book.write(index, sub_index, sub_data)
book1 = excel.add_worksheet('學生等級') # 定義 "學生等級" 工作簿
data = [ # 定義 data 列表 用以存放學生成績所處等級與數(shù)量
['優(yōu)秀', '良好', '中', '差'],
[15, 25, 55, 5]
]
book1.write_column('A1', data[0]) # write_column() 函數(shù),按行添加(即 A1 行添加 data 列表的 0 索引的內容)
book1.write_column('B1', data[1])
chart = excel.add_chart({'type': 'column'}) # 定義圖表樣式為 柱狀樣式表
chart.add_series({ # 添加需要展示的數(shù)據(jù)
'categories': '=學生等級!$A1:$A4',
'values': '=學生等級!$B1:$B4',
'name': '成績占比'
})
chart.set_title({'name': '成績占比圖表'}) # 定義圖表title
book1.insert_chart('A10', chart) # 將 chart 放在 excel 表格對應工作簿的 A10 位置
chart = excel.add_chart({'type': 'bar'})
chart.add_series({
'categories': '=學生等級!$A1:$A4',
'values': '=學生等級!$B1:$B4',
'name': '成績占比'
})
chart.set_title({'name': '成績占比圖表'})
book1.insert_chart('A25', chart)
chart = excel.add_chart({'type': 'pie'})
chart.add_series({
'categories': '=學生等級!$A1:$A4',
'values': '=學生等級!$B1:$B4',
'name': '成績占比'
})
chart.set_title({'name': '成績占比圖表'})
book1.insert_chart('A40', chart)
excel.close()
if __name__ == '__main__':
result = read()
write(result)
運行結果如下:


以上就是Python實現(xiàn)在Excel文件中寫入圖表的詳細內容,更多關于Python Excel寫入圖表的資料請關注腳本之家其它相關文章!
相關文章
Python的Django框架中使用SQLAlchemy操作數(shù)據(jù)庫的教程
SQLAlchemy是Python一個專門的數(shù)據(jù)庫管理工具,如果對Django ORM覺得有些生疏的話完全可以結合SQLAlchemy,這里我們就來總結一下Python的Django框架中使用SQLAlchemy操作數(shù)據(jù)庫的教程2016-06-06
PyQt5中QSpinBox計數(shù)器的實現(xiàn)
這篇文章主要介紹了PyQt5中QSpinBox計數(shù)器的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01
基于Python+Flask實現(xiàn)一個簡易網(wǎng)頁驗證碼登錄系統(tǒng)案例
當今的互聯(lián)網(wǎng)世界中,為了防止惡意訪問,許多網(wǎng)站在登錄和注冊表單中都采用了驗證碼技術,驗證碼可以防止機器人自動提交表單,確保提交行為背后有一個真實的人類用戶,本文將向您展示如何使用Python的Flask框架來創(chuàng)建一個簡單的驗證碼登錄系統(tǒng)2023-09-09

