如何使用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
相关产品推荐
相关产品推荐

