Python实现在Excel文件中写入图表
作者:渴望力量的哈士奇 发布时间:2023-11-20 17:13:03
标签: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)
运行结果如下:
来源:https://blog.csdn.net/weixin_42250835/article/details/124872483


猜你喜欢
- 本文实例讲述了Python多线程下载文件的方法。分享给大家供大家参考。具体实现方法如下:import httplibimport urlli
- 本文实例讲述了python基于windows平台锁定键盘输入的方法。分享给大家供大家参考。具体分析如下:pywin32中没有BlockInp
- 120726 11:57:22 [Warning] 'user' entry 'root@localhost.loc
- 合理地扩大页面链接响应区域可以提高网页的易用性。同时还要兼顾到链接的交互一致性以及视觉上的平衡,就需要做一些特殊的处理。实例一:一张图配一个
- 本文实例讲述了Golang算法之田忌赛马问题实现方法。分享给大家供大家参考,具体如下:【田忌赛马问题】输入:输入有多组测试数据。 每组测试数
- linux默认是安装了python,默认是安装python2.6.6,可能安装的版本是不能符合我们需要的python要求的。我们需要重新安装
- 如何正确显示模式对话框中的中文?msg.htm <html> <head> &nbs
- 为何使用函数最大化代码的重用和最小化代码冗余流程的分解编写函数>>def语句在Python中创建一个函数是通过def关键字进行的
- 1. v-model 表单输入绑定使用v-model创建双向数据绑定, 用来监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。
- Python2.5之后引入了上下文管理器(context manager),算是Python的黑魔法之一,它用于规定某个对象的使用范围。本文
- 1.资源下载官网下载地址:https://dev.mysql.com/downloads/mysql/2.软件解压 2.1选择位置
- 1、引言小 * 丝:鱼哥, 都说要想代码写的溜,Lamdba不能少。小鱼:你在项目代码多写几个lamdba试试,看看架构师找不找你喝茶水。小 * 丝
- 这个问题困扰了我很长很长的时间,在跨域获取数据的时候就要用到服务器端的对象,以前一直用的是Msxml.XMLHTTP。但是问题太多了,特别严
- 1、如何认识可视化?需要指出的是,虽然不同绘图工具包的功能、效果会有差异,但在常用功能上相差并不是很大。与选择哪种绘图工具包相比,更重要的是
- 了解如何在sublime编辑器中安装python软件包,以实现自动完成等功能,并在sublime编辑器本身中运行build。安装Sublim
- 一、常用按键按键说明Keys.BACK_SPACE回退键(BackSpace)Keys.TAB制表键(Tab)Keys.ENTER回车键(E
- python运行或调用另一个py文件或参数1. 运行另一个py文件(1)在file_A.py中运行file_B.py文件import oso
- 删除重复记录,将TABLE_NAME中的不重复记录保存到#TABLE_NAME中 select distinct *&n
- 本文实例为大家分享了python实现快递价格查询系统的具体代码,供大家参考,具体内容如下一、代码#--author--张俊杰@Nick#系统
- 群里有人提出这么一个需求:每天都会传过来一份 Word 文档,里面有多个 Excel 附件,需要把 Excel 内容读取出来。第一反应是使用