引言
在现代企业中,数据驱动的决策变得越来越重要。从销售分析到市场趋势跟踪,再到项目绩效考核,清晰直观的数据呈现不仅能提高分析效率,也能增强管理层的决策信心。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创建图表的资料请关注代码网其它相关文章!
发表评论