首頁 > 軟體

Python實現在Excel檔案中寫入圖表

2022-05-20 13:12:16

學習完如何生成一個 excel 檔案之後,接下來我們繼續學習一下如何在 excel 檔案中寫入一個比較簡單的圖表,先來看一下所需要的幾個函數(這些函數都是通過工作簿執行出來的)。

函數名說明引數
add_chart()建立圖表物件{type:樣式}
add_series()定義需要展示的資料字典
set_title()定義圖表title字串

add_series 引數

引數說明
categories展示的標題 =Sheet1!$A$1:$A$4
Shert1:工作簿名稱
$A1 : 1:1:A$4 表示從第A行的第一個值到第四個值去展示標題
values展示的資料=Sheet1!$B1 : 1:1:B$4
Shert1:工作簿名稱
$B1 : 1:1:B$4 表示從第A行的第一個值到第四個值去展示標題
name表名 

$A$1:$A$4 表示從第A行的第一個值到第四個值去展示標題

圖表的樣式

樣式名說明
area區域樣式表
bar條形樣式表
column柱狀樣式表
line線條樣式表
pie餅圖樣式表
doughnut圓環樣式表
scatter散點樣式表
stock庫存樣式表
rader雷達樣式表

結合 study.xlsx 檔案 將學生成績以表圖形式展示

這裡繼續使用上一章節的 “將專案中的 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迴圈 利用列舉函數將 title 的內容寫入 "write.xlsx" 的首行
#     book.write(0, index, data)
# excel.close()


def read():             # 定義一個 read 函數讀取 "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 函數 將讀取到 "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 列表 用以存放學生成績所處等級與數量
        ['優秀', '良好', '中', '差'],
        [15, 25, 55, 5]
    ]

    book1.write_column('A1', data[0])       # write_column() 函數,按行新增(即 A1 行新增 data 列表的 0 索引的內容)
    book1.write_column('B1', data[1])

    chart = excel.add_chart({'type': 'column'})     # 定義圖表樣式為 柱狀樣式表
    chart.add_series({                              # 新增需要展示的資料
        '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迴圈 利用列舉函數將 title 的內容寫入 "write.xlsx" 的首行
#     book.write(0, index, data)
# excel.close()


def read():             # 定義一個 read 函數讀取 "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 函數 將讀取到 "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 列表 用以存放學生成績所處等級與數量
        ['優秀', '良好', '中', '差'],
        [15, 25, 55, 5]
    ]

    book1.write_column('A1', data[0])       # write_column() 函數,按行新增(即 A1 行新增 data 列表的 0 索引的內容)
    book1.write_column('B1', data[1])

    chart = excel.add_chart({'type': 'column'})     # 定義圖表樣式為 柱狀樣式表
    chart.add_series({                              # 新增需要展示的資料
        '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實現在Excel檔案中寫入圖表的詳細內容,更多關於Python Excel寫入圖表的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com