You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

咨询:使用Openpyxl在Excel中创建数据透视表的可行性与实操示例

使用openpyxl创建Excel数据透视表的实操方案

当然可以用openpyxl创建数据透视表!你提到的文档对应的是openpyxl 2.5及以上版本,这个版本确实引入了透视表的创建支持,下面给你一个完整的实操示例,帮你快速上手:

完整代码示例

from openpyxl import Workbook
from openpyxl.pivot.fields import RowField, ColumnField, DataField
from openpyxl.pivot.table import PivotTable

# 初始化工作簿和工作表
wb = Workbook()
ws = wb.active
ws.title = "销售数据"

# 填充模拟的业务数据(包含表头)
sales_data = [
    ["区域", "产品类别", "销售额", "销售数量"],
    ["华东", "电子产品", 25000, 100],
    ["华东", "家居用品", 18000, 90],
    ["华北", "电子产品", 22000, 88],
    ["华北", "家居用品", 15000, 75],
    ["华南", "电子产品", 28000, 112],
    ["华南", "家居用品", 16000, 80],
    ["西南", "电子产品", 19000, 76],
    ["西南", "家居用品", 12000, 60]
]
for row in sales_data:
    ws.append(row)

# 创建数据透视表
# 参数说明:
# - ws: 数据源所在的工作表
# - source_range: 数据源的单元格范围(要包含表头)
# - ref: 透视表放置的起始单元格位置
pivot_table = PivotTable(
    ws,
    source_range="A1:D9",
    ref="F1"
)

# 设置透视表的字段
# 行字段:按“区域”分组
pivot_table.add_field(RowField("区域"))
# 列字段:按“产品类别”分组
pivot_table.add_field(ColumnField("产品类别"))
# 数据字段1:对“销售额”求和
pivot_table.add_field(DataField("销售额", function="sum"))
# 数据字段2:对“销售数量”求平均值
pivot_table.add_field(DataField("销售数量", function="average"))

# 保存工作簿
wb.save("销售数据透视表.xlsx")

关键注意事项

  • 版本要求:必须使用openpyxl 2.5及以上版本,旧版本确实不支持透视表创建
  • 数据源范围:一定要包含表头行,否则透视表无法正确识别字段
  • 聚合函数DataFieldfunction参数支持sumcountaveragemaxmin等常用函数
  • Excel显示问题:用openpyxl创建的透视表,首次在Excel中打开时可能需要手动点击「刷新」按钮,才能显示完整的格式和计算结果
  • 字段命名:要确保数据源的表头名称和代码中引用的字段名完全一致,否则会报错

内容的提问来源于stack exchange,提问作者Parth Karia

火山引擎 最新活动