当前位置: 代码网 > it编程>前端脚本>Python > Python实现在Excel单元格中添加迷你图的完整教学

Python实现在Excel单元格中添加迷你图的完整教学

2026年08月03日 Python 我要评论
在销售报表、库存清单或运营数据中,我们经常需要观察一组数据随时间的变化趋势。直接插入折线图虽然直观,但当表格中包含多个产品、部门或项目时,为每一行数据分别创建图表会占用大量空间,也会让工作表变得拥挤。

在销售报表、库存清单或运营数据中,我们经常需要观察一组数据随时间的变化趋势。

直接插入折线图虽然直观,但当表格中包含多个产品、部门或项目时,为每一行数据分别创建图表会占用大量空间,也会让工作表变得拥挤。

excel 迷你图是一种嵌入单元格的小型图表。它可以直接显示在数据行旁边,用较小的空间呈现增长、下降和波动趋势。

本文将介绍如何使用 python:

  • 创建一个包含月度销售数据的 excel 工作簿
  • 为每行数据添加折线迷你图
  • 将迷你图修改为柱形图或盈亏图
  • 设置迷你图及最高点的颜色

什么是 excel 迷你图

迷你图与普通 excel 图表的主要区别在于,它通常只显示在一个单元格中。

例如,下面是一组产品的月度销售数据:

产品1月2月3月4月趋势
产品a120135128160迷你图
产品b95110108126迷你图

可以在每行数据右侧放置一个迷你图,让读者不需要逐个比较数字,就能快速判断数据的整体变化方向。

常见的迷你图包括三种类型:

  • 折线迷你图:适合展示销量、访问量和收入等连续数据的变化趋势。
  • 柱形迷你图:适合比较各个数值之间的大小。
  • 盈亏迷你图:适合显示正负结果,例如盈利与亏损、增长与下降。

spire.xls for python 提供了折线、柱形和盈亏三种迷你图类型,并可以通过迷你图组统一管理其类型、颜色和数据范围。

安装 excel 处理库

本文使用 spire.xls for python 创建和编辑 excel 文件。

可以通过 pip 安装:

pip install spire.xls

安装完成后,在 python 代码中导入相关类:

from spire.xls import *
from spire.xls.common import *

该包当前可以通过 pypi 安装,导入模块名称为 spire.xls

使用 python 创建示例数据

下面先创建一个包含四种产品月度销售额的工作表。

数据区域为 a1:m5

  • a列保存产品名称
  • b到m列保存1月至12月的数据
  • n列用于放置迷你图
from spire.xls import *
from spire.xls.common import *

# 创建工作簿
workbook = workbook()

# 获取第一个工作表
sheet = workbook.worksheets[0]
sheet.name = "monthly sales"

# 表头
headers = [
    "product",
    "jan", "feb", "mar", "apr", "may", "jun",
    "jul", "aug", "sep", "oct", "nov", "dec",
    "trend"
]

# 月度销售数据
sales_data = [
    ["product a", 120, 135, 128, 160, 172, 168, 190, 205, 198, 220, 235, 248],
    ["product b", 95, 108, 115, 110, 126, 140, 138, 150, 163, 158, 172, 185],
    ["product c", 180, 172, 165, 170, 158, 150, 162, 155, 148, 142, 150, 138],
    ["product d", 75, 92, 88, 105, 98, 115, 121, 118, 132, 140, 137, 152]
]

# 写入表头
for column_index, header in enumerate(headers, start=1):
    sheet.range[1, column_index].text = header

# 写入产品和销售数据
for row_index, row_data in enumerate(sales_data, start=2):
    sheet.range[row_index, 1].text = row_data[0]

    for column_index, value in enumerate(row_data[1:], start=2):
        sheet.range[row_index, column_index].numbervalue = value

# 设置表头为粗体
sheet.range["a1:n1"].style.font.isbold = true

# 自动调整列宽
sheet.range["a1:n5"].autofitcolumns()

此时工作表中已经包含完整的月度销售数据,但还没有添加趋势图。

使用 python 添加折线迷你图

要添加迷你图,首先需要创建一个迷你图组,然后指定迷你图类型。

下面的代码会在 n2:n5 单元格中添加折线迷你图,每个迷你图分别引用当前行的12个月销售数据。

# 创建迷你图组
sparkline_group = sheet.sparklinegroups.addgroup()

# 设置为折线迷你图
sparkline_group.sparklinetype = sparklinetype.line

# 设置迷你图颜色
sparkline_group.sparklinecolor = color.get_darkblue()

# 设置最高点颜色
sparkline_group.highpointcolor = color.get_red()

# 创建迷你图集合
sparklines = sparkline_group.add()

# 为每一行销售数据添加迷你图
for row in range(2, 6):
    data_range = sheet.range[f"b{row}:m{row}"]
    location = sheet.range[f"n{row}"]

    sparklines.add(data_range, location)

其中:

  • addgroup() 用于创建一个迷你图组。
  • sparklinetype.line 表示折线迷你图。
  • sparklinecolor 用于设置迷你图的主颜色。
  • highpointcolor 用于设置最高数据点的颜色。
  • sparklines.add() 用于指定数据源和迷你图所在单元格。

将同类迷你图放在同一个组中,可以统一修改它们的类型和样式。

保存 excel 文件

添加迷你图后,将工作簿保存为 xlsx 文件:

# 保存工作簿
workbook.savetofile(
    "sales_trends_with_sparklines.xlsx",
    excelversion.version2016
)

# 释放资源
workbook.dispose()

运行完整代码后,会生成:

sales_trends_with_sparklines.xlsx

打开文件后,可以在 n 列看到每个产品对应的月度销售趋势。

完整代码

下面是创建数据、添加迷你图并保存工作簿的完整代码。

from spire.xls import *
from spire.xls.common import *

# 创建工作簿
workbook = workbook()

# 获取第一个工作表
sheet = workbook.worksheets[0]
sheet.name = "monthly sales"

# 定义表头
headers = [
    "product",
    "jan", "feb", "mar", "apr", "may", "jun",
    "jul", "aug", "sep", "oct", "nov", "dec",
    "trend"
]

# 定义月度销售数据
sales_data = [
    ["product a", 120, 135, 128, 160, 172, 168, 190, 205, 198, 220, 235, 248],
    ["product b", 95, 108, 115, 110, 126, 140, 138, 150, 163, 158, 172, 185],
    ["product c", 180, 172, 165, 170, 158, 150, 162, 155, 148, 142, 150, 138],
    ["product d", 75, 92, 88, 105, 98, 115, 121, 118, 132, 140, 137, 152]
]

# 写入表头
for column_index, header in enumerate(headers, start=1):
    sheet.range[1, column_index].text = header

# 写入数据
for row_index, row_data in enumerate(sales_data, start=2):
    # 写入产品名称
    sheet.range[row_index, 1].text = row_data[0]

    # 写入月度销售额
    for column_index, value in enumerate(row_data[1:], start=2):
        sheet.range[row_index, column_index].numbervalue = value

# 设置表头样式
sheet.range["a1:n1"].style.font.isbold = true

# 创建折线迷你图组
sparkline_group = sheet.sparklinegroups.addgroup()
sparkline_group.sparklinetype = sparklinetype.line

# 设置迷你图颜色
sparkline_group.sparklinecolor = color.get_darkblue()
sparkline_group.highpointcolor = color.get_red()

# 创建迷你图集合
sparklines = sparkline_group.add()

# 在 n2:n5 中添加迷你图
for row in range(2, 6):
    sparklines.add(
        sheet.range[f"b{row}:m{row}"],
        sheet.range[f"n{row}"]
    )

# 自动调整列宽
sheet.range["a1:n5"].autofitcolumns()

# 保存结果文件
workbook.savetofile(
    "sales_trends_with_sparklines.xlsx",
    excelversion.version2016
)

# 释放资源
workbook.dispose()

添加柱形迷你图

如果数据之间的大小比较比连续趋势更重要,可以将迷你图类型设置为柱形。

只需要将:

sparkline_group.sparklinetype = sparklinetype.line

修改为:

sparkline_group.sparklinetype = sparklinetype.column

其余代码不需要改变。

柱形迷你图适合展示:

  • 各月订单量
  • 不同周期的库存数量
  • 部门每月支出
  • 多个阶段的完成数量

添加盈亏迷你图

如果数据主要用于表示正负结果,可以使用盈亏迷你图:

sparkline_group.sparklinetype = sparklinetype.stacked

例如,下面的数据表示每个月相对于目标值的差额:

performance_data = [
    12, -5, 8, 15, -3, -10,
    6, 9, -4, 11, 7, -2
]

在盈亏迷你图中,正数和负数会以不同方向显示。它更适合观察结果是正还是负,而不适合比较数值之间的精确差异。

常见使用场景包括:

  • 月度盈利与亏损
  • 实际值高于或低于目标值
  • 环比增长与下降
  • 比赛胜负记录

为现有 excel 文件添加迷你图

如果数据已经保存在现有工作簿中,不需要重新创建工作表,只需加载文件并定位数据区域。

from spire.xls import *
from spire.xls.common import *

workbook = workbook()

# 加载已有 excel 文件
workbook.loadfromfile("monthly_sales.xlsx")

# 获取第一个工作表
sheet = workbook.worksheets[0]

# 创建折线迷你图组
sparkline_group = sheet.sparklinegroups.addgroup()
sparkline_group.sparklinetype = sparklinetype.line
sparkline_group.sparklinecolor = color.get_darkblue()

# 创建迷你图集合
sparklines = sparkline_group.add()

# 添加迷你图
for row in range(2, 6):
    sparklines.add(
        sheet.range[f"b{row}:m{row}"],
        sheet.range[f"n{row}"]
    )

# 保存为新文件
workbook.savetofile(
    "monthly_sales_with_sparklines.xlsx",
    excelversion.version2016
)

workbook.dispose()

建议将处理结果保存为新文件,避免直接覆盖原始工作簿。

使用时需要注意的问题

数据区域和目标单元格应一一对应

每个迷你图都包含两个区域:

  • 数据源区域,例如 b2:m2
  • 目标单元格,例如 n2

如果数据源和目标行对应错误,迷你图显示的趋势就可能与当前产品不匹配。

同一组中的迷你图共用类型和样式

同一个迷你图组中的所有迷你图通常使用相同的图表类型和样式。

如果部分数据需要折线图,另一部分需要柱形图,应分别创建不同的迷你图组。

盈亏图主要关注正负关系

盈亏迷你图不会重点显示数值之间的精确大小,而是强调正值和负值。

如果需要分析连续变化或实际数值差异,应优先使用折线图或柱形图。

迷你图不能代替完整图表

迷你图适合快速查看趋势,但它通常不显示:

  • 坐标轴标题
  • 数据标签
  • 图例
  • 详细刻度

当报表需要展示精确数值、多个数据系列或复杂对比关系时,普通 excel 图表通常更合适。

总结

excel 迷你图可以在不占用大量工作表空间的情况下,为每行数据提供直观的趋势展示。

通过 python 可以完成以下操作:

  • 创建包含业务数据的 excel 工作簿
  • 为多行数据批量添加迷你图
  • 创建折线、柱形和盈亏迷你图
  • 设置迷你图的颜色
  • 为已有 excel 报表添加趋势列

对于月度销售、库存、成本和运营指标等表格,迷你图能够让读者快速发现增长、下降和异常波动,同时保留原有的表格布局。

到此这篇关于python实现在excel单元格中添加迷你图的完整教学的文章就介绍到这了,更多相关python excel添加迷你图内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com