日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁(yè) Python教程 正文

Python實(shí)現(xiàn)在Excel文件中寫入圖表_python

作者:渴望力量的哈士奇 ? 更新時(shí)間: 2022-07-17 Python教程

學(xué)習(xí)完如何生成一個(gè) excel 文件之后,接下來我們繼續(xù)學(xué)習(xí)一下如何在 excel 文件中寫入一個(gè)比較簡(jiǎn)單的圖表,先來看一下所需要的幾個(gè)函數(shù)(這些函數(shù)都是通過工作簿執(zhí)行出來的)。

函數(shù)名 說明 參數(shù)
add_chart() 創(chuàng)建圖表對(duì)象 {type:樣式}
add_series() 定義需要展示的數(shù)據(jù) 字典
set_title() 定義圖表title 字符串

add_series 參數(shù)

參數(shù) 說明
categories 展示的標(biāo)題 ?=Sheet1!$A$1:$A$4
Shert1:工作簿名稱
$A1 : 1:1:A$4 表示從第A行的第一個(gè)值到第四個(gè)值去展示標(biāo)題
values 展示的數(shù)據(jù) =Sheet1!$B1 : 1:1:B$4
Shert1:工作簿名稱
$B1 : 1:1:B$4 表示從第A行的第一個(gè)值到第四個(gè)值去展示標(biāo)題
name 表名 ?

$A$1:$A$4 表示從第A行的第一個(gè)值到第四個(gè)值去展示標(biāo)題

圖表的樣式

樣式名 說明
area 區(qū)域樣式表
bar 條形樣式表
column 柱狀樣式表
line 線條樣式表
pie 餅圖樣式表
doughnut 圓環(huán)樣式表
scatter 散點(diǎn)樣式表
stock 庫(kù)存樣式表
rader 雷達(dá)樣式表

結(jié)合 study.xlsx 文件 將學(xué)生成績(jī)以表圖形式展示

這里繼續(xù)使用上一章節(jié)的 “將項(xiàng)目中的 study.xlsx 文件的內(nèi)容寫入 write.xlsx” 的案例;

代碼示例如下:

# coding:utf-8

import xlsxwriter
import xlrd


# excel = xlsxwriter.Workbook('write.xlsx')       # 初始化 excel 對(duì)象
# book = excel.add_worksheet('study')             # 添加工作簿
#
# title = ['姓名', '性別', '年齡', '成績(jī)', '等級(jí)']   # 定義 write.xlsx 的首行內(nèi)容
#
# for index, data in enumerate(title):        # for循環(huán) 利用枚舉函數(shù)將 title 的內(nèi)容寫入 "write.xlsx" 的首行
#     book.write(0, index, data)
# excel.close()


def read():             # 定義一個(gè) read 函數(shù)讀取 "study.xlsx" 文件
    result = []
    excel = xlrd.open_workbook('study.xlsx')
    book = excel.sheet_by_name('學(xué)生手冊(cè)')
    for i in book.get_rows():
        content = []
        for j in i:
            content.append(j.value)
        result.append(content)
    return result


def write(content):     # 定義一個(gè) write 函數(shù) 將讀取到 "study.xlsx" 的內(nèi)容寫入到 "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('學(xué)生等級(jí)')     # 定義 "學(xué)生等級(jí)" 工作簿
    data = [                                   # 定義 data 列表 用以存放學(xué)生成績(jī)所處等級(jí)與數(shù)量
        ['優(yōu)秀', '良好', '中', '差'],
        [15, 25, 55, 5]
    ]

    book1.write_column('A1', data[0])       # write_column() 函數(shù),按行添加(即 A1 行添加 data 列表的 0 索引的內(nèi)容)
    book1.write_column('B1', data[1])

    chart = excel.add_chart({'type': 'column'})     # 定義圖表樣式為 柱狀樣式表
    chart.add_series({                              # 添加需要展示的數(shù)據(jù)
        'categories': '=學(xué)生等級(jí)!$A1:$A4',
        'values': '=學(xué)生等級(jí)!$B1:$B4',
        'name': '成績(jī)占比'
    })
    chart.set_title({'name': '成績(jī)占比圖表'})         # 定義圖表title
    book1.insert_chart('A10', chart)                # 將 chart 放在 excel 表格對(duì)應(yīng)工作簿的 A10 位置

    excel.close()


if __name__ == '__main__':
    result = read()
    write(result)

運(yùn)行結(jié)果如下:

拓展:再試試餅狀圖與條形樣式圖

代碼示例如下:

# coding:utf-8

import xlsxwriter
import xlrd


# excel = xlsxwriter.Workbook('write.xlsx')       # 初始化 excel 對(duì)象
# book = excel.add_worksheet('study')             # 添加工作簿
#
# title = ['姓名', '性別', '年齡', '成績(jī)', '等級(jí)']   # 定義 write.xlsx 的首行內(nèi)容
#
# for index, data in enumerate(title):        # for循環(huán) 利用枚舉函數(shù)將 title 的內(nèi)容寫入 "write.xlsx" 的首行
#     book.write(0, index, data)
# excel.close()


def read():             # 定義一個(gè) read 函數(shù)讀取 "study.xlsx" 文件
    result = []
    excel = xlrd.open_workbook('study.xlsx')
    book = excel.sheet_by_name('學(xué)生手冊(cè)')
    for i in book.get_rows():
        content = []
        for j in i:
            content.append(j.value)
        result.append(content)
    return result


def write(content):     # 定義一個(gè) write 函數(shù) 將讀取到 "study.xlsx" 的內(nèi)容寫入到 "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('學(xué)生等級(jí)')     # 定義 "學(xué)生等級(jí)" 工作簿
    data = [                                   # 定義 data 列表 用以存放學(xué)生成績(jī)所處等級(jí)與數(shù)量
        ['優(yōu)秀', '良好', '中', '差'],
        [15, 25, 55, 5]
    ]

    book1.write_column('A1', data[0])       # write_column() 函數(shù),按行添加(即 A1 行添加 data 列表的 0 索引的內(nèi)容)
    book1.write_column('B1', data[1])

    chart = excel.add_chart({'type': 'column'})     # 定義圖表樣式為 柱狀樣式表
    chart.add_series({                              # 添加需要展示的數(shù)據(jù)
        'categories': '=學(xué)生等級(jí)!$A1:$A4',
        'values': '=學(xué)生等級(jí)!$B1:$B4',
        'name': '成績(jī)占比'
    })
    chart.set_title({'name': '成績(jī)占比圖表'})         # 定義圖表title
    book1.insert_chart('A10', chart)                # 將 chart 放在 excel 表格對(duì)應(yīng)工作簿的 A10 位置


    chart = excel.add_chart({'type': 'bar'})
    chart.add_series({
        'categories': '=學(xué)生等級(jí)!$A1:$A4',
        'values': '=學(xué)生等級(jí)!$B1:$B4',
        'name': '成績(jī)占比'
    })
    chart.set_title({'name': '成績(jī)占比圖表'})
    book1.insert_chart('A25', chart)


    chart = excel.add_chart({'type': 'pie'})
    chart.add_series({
        'categories': '=學(xué)生等級(jí)!$A1:$A4',
        'values': '=學(xué)生等級(jí)!$B1:$B4',
        'name': '成績(jī)占比'
    })
    chart.set_title({'name': '成績(jī)占比圖表'})
    book1.insert_chart('A40', chart)

    excel.close()


if __name__ == '__main__':
    result = read()
    write(result)

運(yùn)行結(jié)果如下:

原文鏈接:https://blog.csdn.net/weixin_42250835/article/details/124872483

欄目分類
最近更新