from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
# 创建工作薄
wb = Workbook(write_only=True)
# 创建工作表
ws = wb.create_sheet('月收入')
# 准备数据
rows = [
('月份', '销售额'),
(1, 23),
(2, 43),
(3, 56),
(4, 23),
(5, 65),
(6, 54),
(7, 43),
(8, 25),
(9, 53),
(10, 76),
(11, 54),
(12, 54),
]
# 将数据写入到工作表中
for row in rows:
ws.append(row)
# 创建柱形图对象
chart1 = BarChart()
# 设置柱形图类型 type = col 表示垂直柱形图,type = bar 表示水平柱形图
chart1.type = "col"
# 设置图表标题
chart1.title = "月销售额柱形图"
# 设置图表轴标签
chart1.x_axis.title = '月份'
chart1.y_axis.title = '销售额'
# 设置数据范围
data = Reference(ws, min_col=2, min_row=2, max_row=13, max_col=2)
categories = Reference(ws, min_col=1, min_row=2, max_row=13)
# 将数据和类别添加到图表中
chart1.add_data(data, titles_from_data=True)
chart1.set_categories(categories)
# 将图表添加到工作表中
ws.add_chart(chart1, "E5")
# 保存工作薄
wb.save("示例文件\月份销售额.xlsx")
这段代码使用 openpyxl
库来创建一个 Excel 工作簿,并在其中创建一个包含柱形图的工作表。以下是对代码的详细分析:
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
Workbook
类用于创建一个新的工作簿。
BarChart
类用于创建柱形图。
Reference
类用于引用工作表中的数据范围。
wb = Workbook(write_only=True)
ws = wb.create_sheet('月收入')
Workbook(write_only=True)
创建一个只写模式的工作簿,适用于大数据量的写入操作。
create_sheet('月收入')
在工作簿中创建一个名为“月收入”的工作表。
rows = [
('月份', '销售额'),
(1, 23),
(2, 43),
(3, 56),
(4, 23),
(5, 65),
(6, 54),
(7, 43),
(8, 25),
(9, 53),
(10, 76),
(11, 54),
(12, 54),
]
rows
是一个包含月份和销售额数据的列表。
for row in rows:
ws.append(row)
使用 ws.append(row)
将每一行数据追加到工作表中。
chart1 = BarChart()
BarChart()
创建一个新的柱形图对象。
chart1.type = "col"
type = "col"
表示创建垂直柱形图。
chart1.title = "月销售额柱形图"
chart1.x_axis.title = '月份'
chart1.y_axis.title = '销售额'
title
设置图表的标题。
x_axis.title
和 y_axis.title
分别设置 X 轴和 Y 轴的标签。
data = Reference(ws, min_col=2, min_row=2, max_row=13, max_col=2)
categories = Reference(ws, min_col=1, min_row=2, max_row=13)
data
引用工作表中销售额的数据范围(从第2行第2列到第13行第2列)。
categories
引用工作表中月份的数据范围(从第2行第1列到第13行第1列)。
chart1.add_data(data, titles_from_data=True)
chart1.set_categories(categories)
add_data(data, titles_from_data=True)
将数据添加到图表中,并从数据中提取标题。
set_categories(categories)
设置图表的类别(即 X 轴的数据)。
ws.add_chart(chart1, "E5")
add_chart(chart1, "E5")
将图表添加到工作表的指定位置(E5 单元格)。
wb.save("示例文件\月份销售额.xlsx")
save("示例文件\月份销售额.xlsx")
将工作簿保存到指定的文件路径。
这段代码通过 openpyxl
库创建了一个包含柱形图的 Excel 工作簿,并将数据写入工作表中。最后,图表被添加到工作表的指定位置,并保存为一个新的 Excel 文件。
from random import randint
from datetime import datetime
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference
# 创建工作薄对象
wb = Workbook()
# 选定工作表
ws = wb.active # 使用 active 获取活动工作表
# 准备数据
rows = [
['时间', '服务人数']
]
for i in range(8, 24):
# 将时间对象转换为字符串
time_str = datetime.combine(datetime.today(), datetime.min.time()).replace(hour=i, minute=0).strftime('%H:%M')
rows.append([time_str, randint(0, 200)])
for data in rows:
ws.append(data)
# 创建折线图对象
linechart = LineChart()
# 设置折线图属性
linechart.title = '当天客服绩效图'
linechart.x_axis.title = '时间'
linechart.y_axis.title = '服务人数'
# 设置数据集范围
data = Reference(ws, min_row=2, min_col=2, max_row=ws.max_row)
# 添加数据
linechart.add_data(data, titles_from_data=True)
# 设置x轴显示内容
linechart.x_axis.number_format = "HH:MM"
x_titles = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row)
linechart.set_categories(x_titles) # 修正了方法名
# 设置图表的位置
ws.add_chart(linechart, 'A20')
# 保存位置
wb.save('示例文件/折线图.xlsx')
这段代码的目的是使用Python的openpyxl
库来创建一个Excel工作簿,并在其中添加一个折线图,该图表显示了从早上8点到晚上11点每小时的客服服务人数。以下是对代码的详细分析:
from random import randint
from datetime import datetime
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference
randint
用于生成随机数,模拟服务人数。
datetime
用于生成时间数据。
Workbook
和 LineChart
来自 openpyxl
,分别用于创建Excel工作簿和折线图。
Reference
也来自 openpyxl
,用于指定图表的数据范围。
wb = Workbook()
ws = wb.active
Workbook()
创建一个新的工作簿。
wb.active
获取当前活动的工作表。
rows = [['时间', '服务人数']]
for i in range(8, 24):
time_str = datetime.combine(datetime.today(), datetime.min.time()).replace(hour=i, minute=0).strftime('%H:%M')
rows.append([time_str, randint(0, 200)])
for data in rows:
ws.append(data)
初始化一个包含表头的列表rows
。
使用循环从早上8点到晚上11点生成时间字符串,并为每个小时生成一个0到200之间的随机服务人数。
将每行数据添加到工作表中。
linechart = LineChart()
linechart.title = '当天客服绩效图'
linechart.x_axis.title = '时间'
linechart.y_axis.title = '服务人数'
创建一个折线图对象。
设置图表的标题和轴标题。
data = Reference(ws, min_row=2, min_col=2, max_row=ws.max_row)
linechart.add_data(data, titles_from_data=True)
使用Reference
指定服务人数的数据范围(从第二行第二列开始到数据结束)。
将数据添加到图表中,并设置titles_from_data=True
以使用数据中的第一行作为图例。
linechart.x_axis.number_format = "HH:MM"
x_titles = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row)
linechart.set_categories(x_titles)
设置x轴的时间格式。
使用Reference
指定时间数据范围,并通过set_categories
方法将其设置为x轴的类别。
ws.add_chart(linechart, 'A20')
wb.save('示例文件/折线图.xlsx')
将图表添加到工作表的指定位置(A20单元格)。
保存工作簿到文件。
确保保存文件的路径('示例文件/折线图.xlsx')是正确的,并且Python脚本有权限写入该路径。
如果openpyxl
库未安装,需要先通过pip install openpyxl
命令安装。
这段代码是一个很好的示例,展示了如何使用Python自动化Excel图表创建过程,适用于数据分析和报告生成。
from openpyxl import Workbook
from openpyxl.chart import AreaChart, Reference
# 创建工作薄
wb = Workbook(write_only=True)
ws = wb.create_sheet('产品参数') # 手动创建一个工作表
# 准备数据
rows = [
['序号', '产品A', '产品B'],
[1, 25, 57],
[2, 30, 48],
[3, 40, 45],
[4, 50, 20],
[5, 60, 50]
]
# 将数据写入到工作表中
for row in rows:
ws.append(row)
# 创建面积对象
chart = AreaChart()
chart.title = "面积图"
chart.style = 14
chart.x_axis.title = '月份'
chart.y_axis.title = '利润(百万)'
data = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=7)
cats = Reference(ws, min_col=1, min_row=1, max_row=7)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
ws.add_chart(chart, "A10")
wb.save('示例文件/面积图.xlsx')
这段代码使用 openpyxl
库在 Python 中创建一个 Excel 文件,并在其中插入一个面积图。下面是代码的详细分析:
from openpyxl import Workbook
from openpyxl.chart import AreaChart, Reference
Workbook
类用于创建新的 Excel 工作簿。
AreaChart
类用于创建面积图。
Reference
类用于定义图表的数据范围。
wb = Workbook(write_only=True)
ws = wb.create_sheet('产品参数')
Workbook(write_only=True)
:创建一个只能写入的工作簿,适合大数据量的写入操作。
create_sheet('产品参数')
:在工作簿中创建一个名为“产品参数”的工作表。
rows = [
['序号', '产品A', '产品B'],
[1, 25, 57],
[2, 30, 48],
[3, 40, 45],
[4, 50, 20],
[5, 60, 50]
]
这里定义了一个二维数组 rows
,包含了产品的序号以及两个产品(产品A和产品B)在不同月份的利润数据。
for row in rows:
ws.append(row)
使用 append
方法将每一行数据添加到工作表中。
chart = AreaChart()
chart.title = "面积图"
chart.style = 14
chart.x_axis.title = '月份'
chart.y_axis.title = '利润(百万)'
创建一个 AreaChart
对象。
设置图表的标题、样式、X轴和Y轴的标题。
data = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=7)
cats = Reference(ws, min_col=1, min_row=1, max_row=7)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
Reference
对象用于指定图表的数据范围和类别范围。
add_data
方法用于添加数据区域,并设置 titles_from_data=True
以使用数据的第一行作为图例。
set_categories
方法用于设置 X 轴的类别。
ws.add_chart(chart, "A10")
wb.save('示例文件/面积图.xlsx')
add_chart
方法将图表添加到工作表的指定位置(A10 单元格)。
save
方法用于保存工作簿到指定的文件路径。
这段代码演示了如何使用 openpyxl
库在 Python 中创建一个包含面积图的 Excel 文件。它首先创建了一个工作簿和工作表,然后准备了数据并将其写入工作表。接着,它创建了一个面积图对象,设置了图表的属性和数据范围,并将图表添加到工作表中。最后,它保存了工作簿到一个文件。
from openpyxl import Workbook
from openpyxl.chart import RadarChart, Reference
# 创建工作薄
wb = Workbook()
# 选定工作表
ws = wb.active
# 准备数据
rows = [
['Mouth', 'Bulbs', 'Seeds', 'Flowers', 'Trees'],
['Jan', 0, 2200, 500, 0],
['Feb', 0, 2000, 560, 0],
['Mar', 0, 6500, 1230, 0],
['Apr', 0, 4500, 2500, 0],
]
for row in rows:
ws.append(row)
# 创建图表对象
chart = RadarChart()
chart.type = 'filled'
# 设置数据取值范围
data = Reference(ws, min_col=2, min_row=1, max_col=5, max_row=13)
# 设置类别取值范围
lables = Reference(ws, min_col=1, min_row=2, max_row=13)
chart.add_data(data, titles_from_data=True)
chart.set_categories(lables)
chart.style = 26
# 设置图表标题
chart.title = "雷达图"
chart.y_axis.delete = True
# 将图表保存到指定位置
ws.add_chart(chart, 'A17')
# 将图表保存道工作薄中
wb.save('示例文件/雷达图.xlsx')
这段代码使用 openpyxl
库在 Python 中创建一个 Excel 文件,并在其中插入一个雷达图。以下是对代码的详细解析:
from openpyxl import Workbook
from openpyplotlib import RadarChart, Reference
Workbook
类用于创建新的 Excel 工作簿。
RadarChart
类用于创建雷达图。
Reference
类用于定义图表的数据范围和类别范围。
wb = Workbook()
ws = wb.active
Workbook()
:创建一个新的工作簿。
wb.active
:获取当前活动的工作表。
rows = [
['Mouth', 'Bulbs', 'Seeds', 'Flowers', 'Trees'],
['Jan', 0, 2200, 500, 0],
['Feb', 0, 2000, 560, 0],
['Mar', 0, 6500, 1230, 0],
['Apr', 0, 4500, 2500, 0],
]
for row in rows:
ws.append(row)
定义了一个二维数组 rows
,包含了不同月份(Mouth)和不同类别(Bulbs, Seeds, Flowers, Trees)的数据。
使用 append
方法将每一行数据添加到工作表中。
chart = RadarChart()
chart.type = 'filled'
data = Reference(ws, min_col=2, min_row=1, max_col=5, max_row=13)
lables = Reference(ws, min_col=1, min_row=2, max_row=13)
chart.add_data(data, titles_from_data=True)
chart.set_categories(lables)
chart.style = 26
创建一个 RadarChart
对象。
设置图表类型为 'filled'
,表示填充雷达图的区域。
使用 Reference
对象定义数据范围和类别范围。
add_data
方法用于添加数据区域,并设置 titles_from_data=True
以使用数据的第一行作为图例。
set_categories
方法用于设置雷达图的类别。
设置图表的样式为 26
。
chart.title = "雷达图"
chart.y_axis.delete = True
设置图表的标题为 "雷达图"。
chart.y_axis.delete = True
删除 Y 轴,因为雷达图通常不需要 Y 轴。
ws.add_chart(chart, 'A17')
wb.save('示例文件/雷达图.xlsx')
add_chart
方法将图表添加到工作表的指定位置(A17 单元格)。
save
方法用于保存工作簿到指定的文件路径。
这段代码演示了如何使用 openpyxl
库在 Python 中创建一个包含雷达图的 Excel 文件。它首先创建了一个工作簿和工作表,然后准备了数据并将其写入工作表。接着,它创建了一个雷达图对象,设置了图表的属性和数据范围,并将图表添加到工作表中。最后,它保存了工作簿到一个文件。
from openpyxl import Workbook
from openpyxl.chart import PieChart, Reference
from openpyxl.chart.marker import DataPoint
# 创建工作薄对象
wb = Workbook()
# 选择工作表
ws = wb.active
# 准备数据
rows = [
['品类', '销售额'],
['苹果', 10],
['香蕉', 25],
['榴莲', 25],
['西梅', 40]
]
for row in rows:
ws.append(row)
# 创建饼图对象
pie = PieChart()
# 设置数据范围
data = Reference(ws, min_col=2, min_row=1, max_row=5)
# 设置饼图范围
lables = Reference(ws, min_col=1, min_row=2, max_col=5)
pie.add_data(data, titles_from_data=True)
# 设置lables
pie.set_categories(lables)
# 设置图表标题
pie.title = '各类图表销售额占比'
# 设置饼图分离的效果
slice = DataPoint(idx=0, explosion=20)
pie.series[0].data_points = [slice]
# 将图表添加到指定位置
ws.add_chart(pie, 'D1')
wb.save('示例文件/饼图.xlsx')
这段代码使用 openpyxl
库在 Python 中创建一个 Excel 文件,并在其中插入一个饼图。以下是对代码的详细解析:
from openpyxl import Workbook
from openpyxl.chart import PieChart, Reference
from openpyxl.chart.marker import DataPoint
Workbook
类用于创建新的 Excel 工作簿。
PieChart
类用于创建饼图。
Reference
类用于定义图表的数据范围和类别范围。
DataPoint
类用于设置饼图中每个数据点的属性,例如分离效果。
wb = Workbook()
ws = wb.active
Workbook()
:创建一个新的工作簿。
wb.active
:获取当前活动的工作表。
rows = [
['品类', '销售额'],
['苹果', 10],
['香蕉', 25],
['榴莲', 25],
['西梅', 40]
]
for row in rows:
ws.append(row)
定义了一个二维数组 rows
,包含了不同品类(品类)和对应的销售额(销售额)。
使用 append
方法将每一行数据添加到工作表中。
pie = PieChart()
data = Reference(ws, min_col=2, min_row=1, max_row=5)
lables = Reference(ws, min_col=1, min_row=2, max_col=5)
pie.add_data(data, titles_from_data=True)
pie.set_categories(lables)
pie.title = '各类图表销售额占比'
创建一个 PieChart
对象。
使用 Reference
对象定义数据范围和类别范围。
add_data
方法用于添加数据区域,并设置 titles_from_data=True
以使用数据的第一行作为图例。
set_categories
方法用于设置饼图的类别。
设置图表的标题为 "各类图表销售额占比"。
slice = DataPoint(idx=0, explosion=20)
pie.series[0].data_points = [slice]
创建一个 DataPoint
对象,设置第一个数据点(苹果)的分离效果为 20%。
将 DataPoint
对象添加到饼图的第一个系列的数据点中。
ws.add_chart(pie, 'D1')
wb.save('示例文件/饼图.xlsx')
add_chart
方法将图表添加到工作表的指定位置(D1 单元格)。
save
方法用于保存工作簿到指定的文件路径。
这段代码演示了如何使用 openpyxl
库在 Python 中创建一个包含饼图的 Excel 文件。它首先创建了一个工作簿和工作表,然后准备了数据并将其写入工作表。接着,它创建了一个饼图对象,设置了图表的属性和数据范围,并将图表添加到工作表中。最后,它保存了工作簿到一个文件。
from openpyxl import Workbook
from openpyxl.chart import PieChart3D, Reference
# 创建工作薄
wb = Workbook()
# 选中工作表
ws = wb.active
# 准备数据
rows = [
('店铺', '利润'),
('一号店', 120),
('二号店', 80),
('三号店', 160),
('四号店', 50)
]
for row in rows:
ws.append(row)
# 创建图表对象
pie = PieChart3D()
# 选定数据范围
data = Reference(ws, min_col=2, min_row=1, max_row=6)
# 选定类别的范围
lables = Reference(ws, min_col=1, min_row=2, max_row=6)
pie.add_data(data, titles_from_data=True)
pie.set_categories(lables)
# 设置图表标题
pie.title = "3D饼图"
# 将图表添加到指定位置
ws.add_chart(pie, "A10")
# 保存工作薄
wb.save('示例文件/3D饼图.xlsx')
这段代码使用 openpyxl
库在 Python 中创建一个 Excel 文件,并在其中插入一个 3D 饼图。以下是对代码的详细解析:
from openpyxl import Workbook
from openpyxl.chart import PieChart3D, Reference
Workbook
类用于创建新的 Excel 工作簿。
PieChart3D
类用于创建 3D 饼图。
Reference
类用于定义图表的数据范围和类别范围。
wb = Workbook()
ws = wb.active
Workbook()
:创建一个新的工作簿。
wb.active
:获取当前活动的工作表。
rows = [
('店铺', '利润'),
('一号店', 120),
('二号店', 80),
('三号店', 160),
('四号店', 50)
]
for row in rows:
ws.append(row)
定义了一个二维数组 rows
,包含了不同店铺(店铺)和对应的利润(利润)。
使用 append
方法将每一行数据添加到工作表中。
pie = PieChart3D()
data = Reference(ws, min_col=2, min_row=1, max_row=6)
lables = Reference(ws, min_col=1, min_row=2, max_row=6)
pie.add_data(data, titles_from_data=True)
pie.set_categories(lables)
pie.title = "3D饼图"
创建一个 PieChart3D
对象。
使用 Reference
对象定义数据范围和类别范围。
add_data
方法用于添加数据区域,并设置 titles_from_data=True
以使用数据的第一行作为图例。
set_categories
方法用于设置饼图的类别。
设置图表的标题为 "3D饼图"。
ws.add_chart(pie, "A10")
wb.save('示例文件/3D饼图.xlsx')
add_chart
方法将图表添加到工作表的指定位置(A10 单元格)。
save
方法用于保存工作簿到指定的文件路径。
这段代码演示了如何使用 openpyxl
库在 Python 中创建一个包含 3D 饼图的 Excel 文件。它首先创建了一个工作簿和工作表,然后准备了数据并将其写入工作表。接着,它创建了一个 3D 饼图对象,设置了图表的属性和数据范围,并将图表添加到工作表中。最后,它保存了工作簿到一个文件。