首頁 > 軟體

利用Python生成Excel炫酷圖表

2022-02-28 10:00:03

前言

本文對Python 自動化操作Excel並生成圖表,做了詳細的分析和說明

我們先來看一下python中能操作Excel的常用庫對比

1.xlswriter庫

XlsxWriter是一個用來寫Excel2007和xlsx檔案格式的python模組。它可以用來寫文字、數位、公式並支援單元格格式化、圖片、圖表、檔案設定、自動過濾等特性

優點:功能更多、檔案高保真、擴充套件格式型別、更快並可設定

缺點:不能用來讀取和修改excel檔案

官方檔案:xlsxwriter.readthedocs.io/

2.生成折線圖

# -*- coding:utf-8 -*-

import xlsxwriter

# 建立一個excel
workbook = xlsxwriter.Workbook("chart_line.xlsx")
# 建立一個sheet
worksheet = workbook.add_worksheet()
# worksheet = workbook.add_worksheet("bug_analysis")

# 自定義樣式,加粗
bold = workbook.add_format({'bold': 1})

# --------1、準備資料並寫入excel---------------
# 向excel中寫入資料,建立圖示時要用到
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)

# 寫入資料
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
worksheet.write_column('C2', data[2])

# --------2、生成圖表並插入到excel---------------
# 建立一個柱狀圖(line chart)
chart_col = workbook.add_chart({'type': 'line'})

# 設定第一個系列資料
chart_col.add_series({
    # 這裡的sheet1是預設的值,因為我們在新建sheet時沒有指定sheet名
    # 如果我們新建sheet時設定了sheet名,這裡就要設定成相應的值
    'name': '=Sheet1!$B$1',
    'categories': '=Sheet1!$A$2:$A$7',
    'values':   '=Sheet1!$B$2:$B$7',
    'line': {'color': 'red'},
})

# 設定第二個系列資料
chart_col.add_series({
    'name': '=Sheet1!$C$1',
    'categories':  '=Sheet1!$A$2:$A$7',
    'values':   '=Sheet1!$C$2:$C$7',
    'line': {'color': 'yellow'},
})

# 設定第二個系列資料(用了另一種語法)
# chart_col.add_series({
#     'name': ['Sheet1', 0, 2],
#     'categories': ['Sheet1', 1, 0, 6, 0],
#     'values': ['Sheet1', 1, 2, 6, 2],
#     'line': {'color': 'yellow'},
# })

# 設定圖表的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)'})

# 設定圖表的風格
chart_col.set_style(1)

# 把圖表插入到worksheet並設定偏移
worksheet.insert_chart('A10', chart_col, {'x_offset': 25, 'y_offset': 10})

workbook.close()

3.生成柱狀圖

# -*- coding:utf-8 -*-

import xlsxwriter

# 建立一個excel
workbook = xlsxwriter.Workbook("chart_column.xlsx")
# 建立一個sheet
worksheet = workbook.add_worksheet()
# worksheet = workbook.add_worksheet("bug_analysis")

# 自定義樣式,加粗
bold = workbook.add_format({'bold': 1})

# --------1、準備資料並寫入excel---------------
# 向excel中寫入資料,建立圖示時要用到
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)

# 寫入資料
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
worksheet.write_column('C2', data[2])

# --------2、生成圖表並插入到excel---------------
# 建立一個柱狀圖(column chart)
chart_col = workbook.add_chart({'type': 'column'})

# 設定第一個系列資料
chart_col.add_series({
    # 這裡的sheet1是預設的值,因為我們在新建sheet時沒有指定sheet名
    # 如果我們新建sheet時設定了sheet名,這裡就要設定成相應的值
    'name': '=Sheet1!$B$1',
    'categories': '=Sheet1!$A$2:$A$7',
    'values':   '=Sheet1!$B$2:$B$7',
    'line': {'color': 'red'},
})

# 設定第二個系列資料(用了另一種語法)
chart_col.add_series({
    'name': '=Sheet1!$C$1',
    'categories':  '=Sheet1!$A$2:$A$7',
    'values':   '=Sheet1!$C$2:$C$7',
    'line': {'color': 'yellow'},
})

# 設定第二個系列資料(用了另一種語法)
# chart_col.add_series({
#     'name': ['Sheet1', 0, 2],
#     'categories': ['Sheet1', 1, 0, 6, 0],
#     'values': ['Sheet1', 1, 2, 6, 2],
#     'line': {'color': 'yellow'},
# })

# 設定圖表的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)'})

# 設定圖表的風格
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

# 建立一個excel
workbook = xlsxwriter.Workbook("chart_pie.xlsx")
# 建立一個sheet
worksheet = workbook.add_worksheet()

# 自定義樣式,加粗
bold = workbook.add_format({'bold': 1})

# --------1、準備資料並寫入excel---------------
# 向excel中寫入資料,建立圖示時要用到
data = [
    ['closed', 'active', 'reopen', 'NT'],
    [1012, 109, 123, 131],
]

# 寫入資料
worksheet.write_row('A1', data[0], bold)
worksheet.write_row('A2', data[1])

# --------2、生成圖表並插入到excel---------------
# 建立一個柱狀圖(pie chart)
chart_col = workbook.add_chart({'type': 'pie'})

# 設定第一個系列資料
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'}},
    ],

})

# 設定圖表的title 和 x,y軸資訊
chart_col.set_title({'name': 'Bug Analysis'})

# 設定圖表的風格
chart_col.set_style(10)

# 把圖表插入到worksheet以及偏移
worksheet.insert_chart('B10', chart_col, {'x_offset': 25, 'y_offset': 10})
workbook.close()

5.實戰拓展

xlswriter新建並寫入Excel

# 3.6.2 xlswriter新建並寫入Excel
def fun3_6_2():
    # 建立Exce並新增sheet
    workbook = xlsxwriter.Workbook('demo.xlsx')
    worksheet = workbook.add_worksheet()

    # 設定列寬
    worksheet.set_column('A:A', 20)

    # 設定格式
    bold = workbook.add_format({'bold': True})

    # 新增文字內容
    worksheet.write('A1', 'Hello')

    # 按格式新增內容
    worksheet.write('A2', 'World', bold)

    # 寫一些數位
    worksheet.write(2, 0, 123)
    worksheet.write(3, 0, 123.456)

    # 新增圖片
    worksheet.insert_image('B5', 'demo.png')

    workbook.close()

以上就是利用Python生成Excel炫酷圖表的詳細內容,更多關於Python Excel圖表的資料請關注it145.com其它相關文章!


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