Python使用xlsxwriter在Excel中插入图表详解
本文介绍如何利用Python的xlsxwriter库在Excel文件中生成图表。通过add_chart和add_series函数,可定义柱状图、饼图等多种样式,并指定数据范围与标题。文章结合study.xlsx案例,演示如何读取数据并插入图表至指定单元格,提供完整代码与运行效果参考。
在掌握生成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:$A4 表示从第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写入图表的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













