You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Xlwings在Excel中制作数据透视表?求示例代码

使用Xlwings在Excel中创建数据透视表的方法及示例代码

Xlwings本身没有封装专门的透视表创建方法,需要通过调用Excel的原生COM接口来实现。以下是完整的实现步骤和示例代码:

核心思路

通过Xlwings的api属性访问Excel的原生对象,调用PivotTableWizard方法创建透视表,再通过PivotFields配置行、列、值字段及汇总规则。

示例代码

1. 带测试数据的完整示例(可直接运行)

import xlwings as xw

# 启动Excel应用(可见模式)
app = xw.App(visible=True, add_book=False)

# 新建工作簿并写入测试数据源
wb = app.books.add()
data_sheet = wb.sheets[0]
data_sheet.name = "数据源"
# 写入表头和测试数据
data_sheet.range("A1").value = [
    ["地区", "季度", "销售额", "产品"],
    ["华东", "Q1", 12000, "A"],
    ["华东", "Q2", 15000, "A"],
    ["华北", "Q1", 9000, "B"],
    ["华北", "Q2", 11000, "B"],
    ["华南", "Q1", 8000, "A"],
    ["华南", "Q2", 10000, "B"],
    ["华东", "Q1", 7000, "B"]
]

# 创建透视表专用工作表
pivot_sheet = wb.sheets.add("销售透视表")

# 获取数据源的完整范围(包含表头)
data_range = data_sheet.used_range

# 调用Excel原生API创建透视表
pivot_table = pivot_sheet.api.PivotTableWizard(
    SourceData=data_range.api,
    TableDestination=pivot_sheet.range("A1").api,
    TableName="区域销售汇总"
)

# 配置透视表字段
# 设置行字段:地区
pivot_table.PivotFields("地区").Orientation = xw.constants.PivotFieldOrientation.xlRowField
# 设置列字段:季度
pivot_table.PivotFields("季度").Orientation = xw.constants.PivotFieldOrientation.xlColumnField
# 设置值字段:销售额(求和汇总)
sales_field = pivot_table.PivotFields("销售额")
sales_field.Orientation = xw.constants.PivotFieldOrientation.xlDataField
sales_field.Function = xw.constants.XlConsolidationFunction.xlSum
sales_field.Name = "总销售额"  # 自定义值字段显示名称

# 可选:添加筛选字段(比如产品)
pivot_table.PivotFields("产品").Orientation = xw.constants.PivotFieldOrientation.xlPageField

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

# 关闭资源
wb.close()
app.quit()

2. 关键参数说明

  • PivotTableWizard参数:
    • SourceData:数据源的原生Range对象(通过data_range.api获取)
    • TableDestination:透视表放置的起始单元格原生对象
    • TableName:透视表的自定义名称
  • 字段方向常量:
    • xlRowField:行字段
    • xlColumnField:列字段
    • xlDataField:值字段
    • xlPageField:筛选字段
  • 汇总函数常量:
    • xlSum:求和
    • xlCount:计数
    • xlAverage:平均值
    • xlMax:最大值
    • xlMin:最小值

注意事项

  • 确保数据源的表头无重复名称,否则会导致字段配置失败
  • 如果使用已有工作簿,替换app.books.add()为app.books.open("你的文件路径.xlsx")即可
  • 运行代码前需确保已安装xlwings:pip install xlwings

内容的提问来源于stack exchange,提问作者Wan Seob Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 03:55:13