Python实现在Excel文件中写入图表

 更新时间:2022年05月20日 10:55:28   作者:渴望力量的哈士奇  
这篇文章主要为大家介绍了如何利用Python语言实现在Excel文件中写入一个比较简单的图表,文中的实现方法讲解详细,快动手尝试一下吧

学习完如何生成一个 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写入图表的资料请关注脚本之家其它相关文章!

相关文章

  • Python连续赋值需要注意的一些问题

    Python连续赋值需要注意的一些问题

    这篇文章主要介绍了Python连续赋值需要注意的一些问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • vscode调试django项目的方法

    vscode调试django项目的方法

    这篇文章主要介绍了vscode调试django项目的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Python的Django框架中使用SQLAlchemy操作数据库的教程

    Python的Django框架中使用SQLAlchemy操作数据库的教程

    SQLAlchemy是Python一个专门的数据库管理工具,如果对Django ORM觉得有些生疏的话完全可以结合SQLAlchemy,这里我们就来总结一下Python的Django框架中使用SQLAlchemy操作数据库的教程
    2016-06-06
  • Python常用图像形态学操作详解

    Python常用图像形态学操作详解

    这篇文章主要为大家详细介绍几个Python中常用的图像形态学操作:腐蚀、膨胀、开闭运算、梯度运算、礼帽和黑帽,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-08-08
  • python实现ID3决策树算法

    python实现ID3决策树算法

    这篇文章主要为大家详细介绍了python实现ID3决策树算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • 利用python实现3种梯度下降算法

    利用python实现3种梯度下降算法

    梯度下降法是一种优化算法,用于求解函数的最小值或最大值,它通过迭代的方式,沿着函数的梯度方向逐步调整参数,以找到函数的极值点,本文给大家介绍了利用python实现3种梯度下降算法,需要的朋友可以参考下
    2023-12-12
  • 玩转Python发短信的实现

    玩转Python发短信的实现

    用Python实现发短信功能,当监控到问题出现时,短信报警,使问题能得到及时的处理。当然,我相信,用Python发短信应用场景不止此一处,下面我们开始Python发短信的实现,感兴趣的朋友参考下吧
    2022-01-01
  • PyQt5中QSpinBox计数器的实现

    PyQt5中QSpinBox计数器的实现

    这篇文章主要介绍了PyQt5中QSpinBox计数器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 基于Python+Flask实现一个简易网页验证码登录系统案例

    基于Python+Flask实现一个简易网页验证码登录系统案例

    当今的互联网世界中,为了防止恶意访问,许多网站在登录和注册表单中都采用了验证码技术,验证码可以防止机器人自动提交表单,确保提交行为背后有一个真实的人类用户,本文将向您展示如何使用Python的Flask框架来创建一个简单的验证码登录系统
    2023-09-09
  • python程序主动退出进程的五种方式

    python程序主动退出进程的五种方式

    对于如何结束一个Python程序或者用Python操作去结束一个进程等,Python本身给出了好几种方法,而这些方式也存在着一些区别,对相关的几种方法看了并实践了下,同时也记录下,需要的朋友可以参考下
    2024-02-02

最新评论