如何使用 Python 和 openpyxl 在 excel 中创建图表?
在这篇文章中,我将向您展示如何使用 Python - Openpyxl 模块在 excel 中创建图表。我们将从头开始创建一个 excel 电子表格,使用网球运动员大满贯冠军作为数据,使用 openpyxl 模块创建条形图。
简介..
从 Office 2007 开始,Microsoft Office 已开始为 Microsoft Excel 工作表提供新的扩展名 .xlsx,以支持存储更多行和列。此更改已将 Excel 工作表移动到基于 XML 的文件格式,并进行 ZIP 压缩。微软电子表格统治着世界,人们一直将电子表格用于各种目的,其中一个用例是数据可视化。
准备就绪..
Python 的 xlrd 模块是 Openpyxl 模块的替代品,擅长支持 Excel 格式,但是该模块只能在 Excel 电子表格上执行只读操作。openpyxl 模块可以在 Excel 工作表上执行读写操作。
如何操作..
1).让我们首先使用以下命令安装 openpyxl 模块
pip install openpyxl.
2).定义用于创建新 Excel 电子表格的数据。
# 导入模块 import openpyxl # 定义文件名和数据 file_name = "charts.xlsx" file_data = (['player', 'titles'], ['Federer', 20], ['Nadal', 20], ['Djokovic', 17], ['Murray', 3])
3).创建一个新的 Excel 文件。这将创建一个名为 Sheet 的默认工作表
xlsxfile = openpyxl.Workbook()
print(f" *** The sheets inside the excel_file are = {xlsxfile.sheetnames}")
new_workbook = xlsxfile['Sheet']
*** The sheets inside the excel_file are = ['Sheet']
4).将有关网球运动员及其大满贯冠军的数据添加到此工作表中。
for row, (player,titles) in enumerate(file_data, 1):
new_workbook['A{}'.format(row)].value = player
new_workbook['B{}'.format(row)].value = title
5).最后将数据保存到 file_name 文件
xlsxfile.save(file_name)
6).将文件加载到内存中并列出所有工作表。请注意,我们在步骤 2 中只创建了一个工作表。
import openpyxl excel_file_data = openpyxl.load_workbook(file_name) excel_file_data.sheetnames
['Sheet']
7).获取第一张工作表并获取单元格的值,例如 A2 和 B2。
sheet_values = excel_file_data['Sheet']
print(f" *** One of the value from the sheet is - {sheet_values['A2'].value} - {sheet_values['B2'].value}")
*** 工作表中的一个值是 - Federer - 20
8).输出电子表格中的所有行和列,以确保我们已正确将数据插入图表。
for row in sheet_values: for cell in row: print(cell.value)
player titles Federer 20 Nadal 20 Djokovic 17 Murray 3
9).从 openpyxl.chart 导入模块 BarChart, Reference 并创建 Barchart 对象。
from openpyxl.chart import BarChart, Reference chart = BarChart()
#10. # 填写图表标题等基本信息。. chart.title = "Players & Grand Slams" chart.y_axis.title = 'Titles' chart.x_axis.title = 'Tennis Players'
#11. # 现在我们将创建对数据的引用并将数据附加到图表。 data = Reference(sheet_values, min_row=2, max_row=5, min_col=1, max_col=2) chart.add_data(data, from_rows=True, titles_from_data=True)
#12. # 最后,将图表添加到工作表并保存文件。 new_workbook.add_chart(chart, "A6") xlsxfile.save(file_name)
第 11 步通过 Reference 对象创建一个引用框,从第 2 行第 1 列到第 5 行第 2 列,这是我们的数据所在的区域,当然不包括标题。
使用 .add_data() 方法将数据添加到图表中。from_rows - 使每行成为不同的数据系列。titles_from_data - 使用第一列来命名系列。
示例
我们将把上面解释的所有内容放在一起。
"""
程序:使用 Python 和 openpyxl 在 excel 中创建图表 参数:NA
输出:创建一个 chart.xlsx 文件,其中包含网球运动员大满贯冠军和数据的条形图表示
"""
# 导入模块
import openpyxl
# 定义文件名和数据
file_name = "charts.xlsx"
file_data = ([ 'player' , 'titles' ], [ 'Federer' , 20 ], [ 'Nadal' , 20 ], [ 'Djokovic' , 17 ], [ 'Murray' , 3 ])
# 创建 excel 电子表格
xlsxfile = openpyxl . Workbook ()
print ( f " *** The sheets inside the excel_file are = { xlsxfile . sheetnames } " )
new_workbook = xlsxfile [ 'Sheet' ]
for row , ( player , titles ) in enumerate ( file_data , 1 ):
new_workbook [ 'A {} ' . format ( row )] . value = player
new_workbook [ 'B {} ' . format ( row )] . value = titles
# 保存电子表格
xlsxfile .save(file_name)
# 读取数据
excel_file_data = openpyxl.load_workbook(file_name)
excel_file_data.sheetnames
sheet_values = excel_file_data [ 'Sheet' ]
print ( f " *** One of the value from the sheet is - { sheet_values [ 'A2' ] . value } - { sheet_values [ 'B2' ] . value } " )
for row in sheet_values :
for cell in row :
print ( cell . value ) # 从 openpyxl.chart 创建条形图
import BarChart , Reference chart = BarChart ()
# 填写基本信息,如图表标题等。
chart . title = "Players & Grand Slams"
chart . y_axis . title = 'Titles'
chart . x_axis . title = 'Tennis Players'
# 现在我们将创建对数据的引用并将数据附加到图表中。
data = Reference ( sheet_values , min_row = 2 , max_row = 5 , min_col = 1 , max_col = 2 )
chart .
add_data ( data , from_rows = True , titles_from_data = True )
# 最后,将图表添加到工作表并保存文件。
new_workbook . add_chart ( chart , "A6" )
xlsxfile . save ( file_name )
*** The sheets inside the excel_file are = ['Sheet'] *** One of the value from the sheet is - Federer - 20 player titles Federer 20 Nadal 20 Djokovic 17 Murray 3
输出
执行上述程序时,charts.xlsx 将在与以下代码相同的目录中创建。

相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

