使用Python在Excel工作表中创建图表的实现步骤
作者:大丸子
引言
在现代企业中,数据驱动的决策变得越来越重要。从销售分析到市场趋势跟踪,再到项目绩效考核,清晰直观的数据呈现不仅能提高分析效率,也能增强管理层的决策信心。Excel 作为企业中最常用的数据分析工具,其强大的表格和图表功能在日常工作中不可或缺。然而,当面对成百上千条数据或需要生成定期报告时,手动制作图表不仅耗时,还容易出错。而 Python 拥有丰富的生态和强大的数据处理能力,通过编程实现 Excel 图表自动化生成,既可以保证数据准确性,也可以大幅提升效率。
本文将使用 Free Spire.XLS for Python 展示如何在 Excel 中创建柱状图、折线图、饼图及气泡图,结合实际业务场景的数据示例,帮助你快速掌握自动化可视化技能。
1. 环境准备与库安装
首先需要安装 Free Spire.XLS for Python:
pip install spire.xls.free
安装完成后,我们可以开始创建 Excel 工作簿并准备数据。下面是一个创建 Excel 文件的简单示例:
from spire.xls import Workbook
# 创建一个新的工作簿
wb = Workbook()
sheet = wb.Worksheets[0]
sheet.Name = "销售数据"
# 保存初始文件
wb.SaveToFile("SalesData.xlsx")
wb.Dispose()
print("Excel 文件已创建:SalesData.xlsx")说明:Workbook 对象代表整个 Excel 文件,Worksheets[0] 获取第一个工作表。这里我们创建了一个名为“销售数据”的工作表,为后续写入数据和生成图表做好准备。
注意:新建的Excel工作簿有三个默认的工作表,Sheet1、Sheet2、Sheet3,可根据需要直接读取编辑或清除后重新创建。
2. 在 Excel 中写入业务数据
假设我们正在分析一个季度内不同地区的销售额情况。我们可以在代码中直接生成数据:
from spire.xls import Workbook
wb = Workbook()
sheet = wb.Worksheets[0]
sheet.Name = "销售数据"
# 写入表头
headers = ["地区", "产品", "销售额 (万元)"]
for col, header in enumerate(headers, start=1):
sheet.Range[1, col].Text = header
# 写入示例数据
sales_data = [
["华东", "笔记本电脑", 120],
["华东", "平板电脑", 85],
["华北", "笔记本电脑", 95],
["华北", "平板电脑", 70],
["华南", "笔记本电脑", 110],
["华南", "平板电脑", 90],
]
for row, data in enumerate(sales_data, start=2):
for col, value in enumerate(data, start=1):
if isinstance(value, str):
sheet.Range[row, col].Value = value
else:
sheet.Range[row, col].NumberValue = value
# 自动调整列宽
sheet.Range.AutoFitColumns()
wb.SaveToFile("SalesData.xlsx")
wb.Dispose()
print("业务数据已写入 Excel 文件")工作表预览:

说明:
这里我们模拟了三个区域、两类产品的季度销售数据,更贴近实际业务场景,便于生成有意义的图表。
3. 创建柱状图:不同地区产品销售对比
柱状图适合展示不同类别的对比情况。我们以销售额为数据创建柱状图:
from spire.xls import Workbook, ExcelChartType, Color
wb = Workbook()
wb.LoadFromFile("SalesData.xlsx")
sheet = wb.Worksheets[0]
# 添加柱状图
chart = sheet.Charts.Add()
chart.DataRange = sheet.Range["A1:C7"] # 包含表头和数据
chart.SeriesDataFromRange = False # 按列获取系列数据
# 设置图表位置
chart.LeftColumn = 1
chart.TopRow = 8
chart.RightColumn = 10
chart.BottomRow = 25
# 设置图表类型
chart.ChartType = ExcelChartType.ColumnClustered
chart.ChartTitle = "各地区产品销售额对比"
chart.ChartTitleArea.IsBold = True
chart.ChartTitleArea.Size = 12
# 设置轴标题
chart.PrimaryCategoryAxis.Title = "地区"
chart.PrimaryValueAxis.Title = "销售额 (万元)"
# 设置颜色与数据标签
for cs in chart.Series:
cs.Format.Options.IsVaryColor = True
cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True
wb.SaveToFile("SalesChart_Column.xlsx")
wb.Dispose()
print("柱状图创建完成:SalesChart_Column.xlsx")工作表预览:

说明:
通过 chart.DataRange 指定数据区域,chart.ChartType 设置图表类型,DataLabels 显示每个数据点的数值,使图表直观易读。
4. 创建折线图:观察销售趋势
折线图适用于展示销售趋势或随时间变化的数据:
from spire.xls import Workbook, ExcelChartType
wb = Workbook()
wb.LoadFromFile("SalesData.xlsx")
sheet = wb.Worksheets[0]
chart_line = sheet.Charts.Add()
chart_line.DataRange = sheet.Range["A1:C7"]
chart_line.SeriesDataFromRange = False
chart_line.LeftColumn = 1
chart_line.TopRow = 9
chart_line.RightColumn = 9
chart_line.BottomRow = 29
chart_line.ChartType = ExcelChartType.Line
chart_line.ChartTitle = "销售趋势分析"
chart_line.ChartTitleArea.IsBold = True
chart_line.ChartTitleArea.Size = 12
chart_line.PrimaryCategoryAxis.Title = "地区"
chart_line.PrimaryValueAxis.Title = "销售额 (万元)"
wb.SaveToFile("SalesChart_Line.xlsx")
wb.Dispose()
print("折线图创建完成:SalesChart_Line.xlsx")工作表预览:

说明:
折线图能清晰显示不同地区产品的销售变化趋势,便于管理者快速发现数据波动。
5. 创建饼图:展示产品销售占比
饼图适合展示各产品在总销售中的占比:
from spire.xls import Workbook, ExcelChartType
wb = Workbook()
wb.LoadFromFile("SalesData.xlsx")
sheet = wb.Worksheets[0]
chart_pie = sheet.Charts.Add()
chart_pie.DataRange = sheet.Range["B2:C7"] # 产品与销售额
chart_pie.SeriesDataFromRange = False
chart_pie.LeftColumn = 1
chart_pie.TopRow = 10
chart_pie.RightColumn = 8
chart_pie.BottomRow = 30
chart_pie.ChartType = ExcelChartType.Pie
chart_pie.ChartTitle = "产品销售占比"
chart_pie.ChartTitleArea.IsBold = True
chart_pie.ChartTitleArea.Size = 12
# 显示类别和百分比
chart_pie.Series[0].DataPoints.DefaultDataPoint.DataLabels.HasCategoryName = True
chart_pie.Series[0].DataPoints.DefaultDataPoint.DataLabels.HasPercentage = True
wb.SaveToFile("SalesChart_Pie.xlsx")
wb.Dispose()
print("饼图创建完成:SalesChart_Pie.xlsx")工作表预览:

说明:
饼图直观显示不同产品在总销售中的份额,便于分析主力产品和市场分布。
6. 创建气泡图:三维数据可视化
气泡图可同时展示三个维度,例如地区、产品销售额及利润率:
from spire.xls import Workbook, ExcelChartType
wb = Workbook()
wb.LoadFromFile("SalesData.xlsx")
sheet = wb.Worksheets[0]
# 增加利润率列
profit_rates = [0.15, 0.12, 0.13, 0.10, 0.14, 0.11]
for i, rate in enumerate(profit_rates, start=2):
sheet.Range[i, 4].NumberValue = rate
sheet.Range[1, 4].Text = "利润率"
chart_bubble = sheet.Charts.Add(ExcelChartType.Bubble)
chart_bubble.DataRange = sheet.Range["B1:D7"]
chart_bubble.SeriesDataFromRange = False
chart_bubble.Series[0].Bubbles = sheet.Range["D2:D7"] # 气泡大小
chart_bubble.LeftColumn = 1
chart_bubble.TopRow = 10
chart_bubble.RightColumn = 11
chart_bubble.BottomRow = 29
chart_bubble.ChartTitle = "销售额与利润率气泡图"
chart_bubble.ChartTitleArea.IsBold = True
chart_bubble.ChartTitleArea.Size = 12
wb.SaveToFile("SalesChart_Bubble.xlsx")
wb.Dispose()
print("气泡图创建完成:SalesChart_Bubble.xlsx")工作表预览:

说明:
气泡图不仅展示销售额,还通过气泡大小体现利润率,实现多维数据可视化。
7. 技术细节总结与关键类方法概览
在前面的章节中,我们展示了如何使用 Free Spire.XLS for Python 创建柱状图、折线图、饼图和气泡图。从技术实现角度来看,图表创建的核心流程可以总结为以下几个关键步骤:
Python Excel 图表创建步骤总结
- 准备数据将业务数据写入 Excel 工作表。数据格式和区域必须符合图表要求,例如数值列用于 Y 轴,分类列用于 X 轴或类别。
- 添加图表对象使用
sheet.Charts.Add()创建图表对象,并通过chart.DataRange指定数据来源。 - 设置图表类型与位置通过
chart.ChartType选择图表类型(如柱状图、折线图、饼图、气泡图),使用LeftColumn、TopRow、RightColumn、BottomRow精确定位图表在工作表中的位置。 - 配置标题与轴信息设置
chart.ChartTitle、PrimaryCategoryAxis.Title、PrimaryValueAxis.Title等属性,为图表和坐标轴添加标题,并可设置字体、大小和加粗。 - 美化图表设置系列颜色
cs.Format.Fill.ForeColor、数据标签DataLabels.HasValue、图例位置等,增强可读性和视觉效果。 - 保存文件使用
wb.SaveToFile()将生成的图表保存到指定文件。
关键类、方法与属性
| 类 / 方法 / 属性 | 说明 |
|---|---|
Workbook | Excel 工作簿对象,支持创建、加载和保存文件 |
Workbook.LoadFromFile() | 从本地文件加载 Excel 工作簿 |
Workbook.SaveToFile() | 保存 Excel 文件到指定路径 |
Worksheet | 表示单个工作表,是操作数据和图表的主体对象 |
sheet.Range[row, col] | 获取或设置指定单元格的内容 |
sheet.Charts.Add() | 在工作表中创建新的图表对象 |
chart.DataRange | 指定图表的数据源区域 |
chart.SeriesDataFromRange | 设置系列数据的方向(按行或按列) |
chart.ChartType | 设置图表类型(柱状图、折线图、饼图、气泡图等) |
chart.ChartTitle | 设置图表标题文本 |
chart.PrimaryCategoryAxis.Title | 设置 X 轴标题 |
chart.PrimaryValueAxis.Title | 设置 Y 轴标题 |
通过理解上述关键类、方法和属性,你可以灵活地创建各种类型的图表,并根据业务需求进行精细定制。掌握这些技术细节,能让你在实际项目中快速生成高质量、可读性强的 Excel 可视化报表,同时保持代码简洁和可维护性。
总结
本文以实际业务数据为例,展示了如何使用 Free Spire.XLS for Python 在 Excel 中创建柱状图、折线图、饼图和气泡图,实现数据的直观可视化。通过编程方式生成图表,不仅避免了手动操作的繁琐和易错问题,还能轻松应对批量报告和复杂数据分析需求。
掌握这一技能后,你可以将数据分析与报告生成完全自动化,从而节省时间,提高效率,并为决策提供可靠的可视化支持。结合 Free Spire.XLS 的其他功能,如条件格式、数据验证和公式操作,可以进一步打造智能化的 Excel 自动化工作流,让企业的数据价值发挥到最大。
以上就是使用Python在Excel工作表中创建图表的实现步骤的详细内容,更多关于Python Excel创建图表的资料请关注脚本之家其它相关文章!
