韩素欣 发表于 2025-7-9 08:16:08

Python 在 Excel 中应用数据透视表

数据透视表是 Excel 最强大的数据分析工具之一,能快速实现海量数据的动态汇总、多维分析与交互式展示。用户能在不同角度上查看和比较数据,深入研究数据之间的关系和模式。 但是 Excel 同其他 Office 软件一样,想要高效办公就得付出大量时间和精力去学习高阶使用,而人工处理也在面对大量数据时显得力不从心。
幸运的是,利用好 Python 等编程语言,我们就可以使用几行浅显易懂的代码实现全自动处理数据,并生成所需 Excel 文件。而 Python 的 Spire.XLS 库就是这样一个绝佳的工具。 本文将介绍如何使用 Python 在 Excel 中应用数据透视表。
前期准备

为了实现纯代码操控 Excel 文档,本文中需要用到 Spire.XLS for Python 库,我们可以用以下两种方法安装。

[*]手动下载产品包后再从本地路径安装。
[*]通过命令行直接使用以下 pip 命令安装:
pip install Spire.XLSPython 在 Excel 中创建透视表

从最简单的部分开始——要在 Excel 中创建透视表,请按照以下步骤操作:

[*]使用 Workbook.LoadFromFile() 方法加载一个现有的 Excel 文档
[*]通过 Workbook.Worksheets 属性获取指定的工作表
[*]使用 Worksheet.Range 属性指定透视表的单元格数据范围
[*]使用 Workbook.PivotCaches.Add() 方法创建 PivotCache 对象
[*]使用 Worksheet.PivotTables.Add() 方法根据 PivotCache 创建透视表
[*]添加行字段
[*]添加值字段
[*]使用 PivotTable.PivotBuiltInStyles 设置内置样式到透视表
[*]使用 Workbook.SaveToFile() 方法保存结果文档
[*]使用 Workbook.Dispose() 方法释放文档对象
from spire.xls import *
from spire.xls.common import *

# 创建一个 Workbook 对象
workbook = Workbook()

# 加载原 Excel 文档
workbook.LoadFromFile("Microsoft Excel 工作表.xlsx")

# 获取第一个工作表
sheet = workbook.Worksheets

# 指定透视表的数据范围
cellRange = sheet.Range["A2:D28"]

# 添加 CellRange 到 PivotCaches
piVotCache = workbook.PivotCaches.Add(cellRange)

# 通过PivotCaches添加透视表并设置位置
pivotTable = sheet.PivotTables.Add("Pivot Table", sheet.Range["H4"],
                                 piVotCache)

# 设置透视表的行字段
regionField = pivotTable.PivotFields["书店名称"]
regionField.Axis = AxisTypes.Row
pivotTable.Options.RowHeaderCaption = "书店名称"
productField = pivotTable.PivotFields["书籍名称"]
productField.Axis = AxisTypes.Row

# 添加值字段
pivotTable.DataFields.Add(pivotTable.PivotFields["销售数量(本)"], "总计销售数量(本)",
                        SubtotalTypes.Sum)

# 设置透视表的样式
pivotTable.BuiltInStyle = PivotBuiltInStyles.PivotStyleMedium11

# 设置透视表相应列的列宽
h = sheet.Range["H4"]
sheet.SetColumnWidth(h.Column, 18)
sheet.SetColumnWidth(h.Column + 1, 20)

# 保存文件
workbook.SaveToFile("结果.xlsx", ExcelVersion.Version2016)

# 释放对象
workbook.Dispose()结果预览:


(Python 在 Excel 中创建数据透视表)
Python 按列值对透视表进行排序

使用 Spire.XLS,让我们在 Python 中得以通过列值对透视表进行排序。首先,通过 PivotTable.PivotFields["FieldName"] 属性访问特定字段,然后使用 PivotField.SortType 属性设置其排序类型。
以下是按照特定字段的值对透视表进行排序的步骤:

[*]使用 Workbook.LoadFromFile() 方法加载含有透视表的原 Excel 文档
[*]通过 Workbook.Worksheets 属性获取特定的工作表
[*]通过 Worksheet.PivotTables 属性从工作表中获取特定的透视表
[*]通过 PivotTable.PivotFields["FieldName"] 属性获取特定的字段
[*]通过 PivotField.SortType 属性对该字段中的数据进行排序
[*]使用 Workbook.SaveToFile() 方法保存结果文件
[*]使用 Workbook.Dispose() 方法释放文档对象
from spire.xls import *
from spire.xls.common import *

# 创建一个 Workbook 对象
workbook = Workbook()

# 加载含有透视表的原 Excel 文档
workbook.LoadFromFile("透视表.xlsx")

# 获取第一个工作表
sheet = workbook.Worksheets

# 获取第一个透视表
pivotTable = sheet.PivotTables

# 获取要排序的字段
idField = pivotTable.PivotFields["书店名称"]

# 按升序排列
idField.SortType = PivotFieldSortType.Ascending

# 保存文件
workbook.SaveToFile("结果.xlsx", ExcelVersion.Version2016)

# 释放对象
workbook.Dispose()结果预览:


(Python 按列值对数据透视表排序)
Python 展开或折叠透视表中的行

若是想在 Python 中展开或折叠数据透视表中的行,可以使用 PivotField.HideItemDetail(string itemValue, bool isHiddenDetail) 方法来实现。
将第二个参数设置为 true 为折叠效果;反之,设置为 false 为展开效果。
详细步骤如下:

[*]使用 Workbook.LoadFromFile() 方法加载含有透视表的原 Excel 文档
[*]通过 Workbook.Worksheets 属性获取特定的工作表
[*]通过 Worksheet.PivotTables 属性从工作表中获取特定的透视表
[*]通过 PivotTable.PivotFields["FieldName"] 属性获取特定的字段
[*]通过 PivotField.HideItemDetail(string itemValue, bool isHiddenDetail) 方法针对具体项折叠或展开
[*]使用 Workbook.SaveToFile() 方法保存结果文件
[*]使用 Workbook.Dispose() 方法释放文档对象
from spire.xls import *
from spire.xls.common import *

# 创建一个 Workbook 对象
workbook = Workbook()

# 加载含有透视表的原 Excel 文档
workbook.LoadFromFile("透视表.xlsx")

# 获取第一个工作表
sheet = workbook.Worksheets

# 获取第一个透视表
pivotTable = sheet.PivotTables

# 获取特定字段
idField = pivotTable.PivotFields["书店名称"]

# 设置展开或折叠
idField.HideItemDetail("文化书店", True)
idField.HideItemDetail("西门书店", False)
idField.HideItemDetail("中原书店", False)

# 保存文件
workbook.SaveToFile("结果.xlsx", ExcelVersion.Version2016)

# 释放对象
workbook.Dispose()结果预览:


(Python 展开或折叠数据透视表)
小结

在本教程中,我们了解了 Python 创建透视表、Python 按列值对透视表进行排序和 Python 展开或折叠透视表中的行的方法。
如果您有任何问题,或者想要了解更多,欢迎访问我们的主页!同时也欢迎您在评论区留言,交流感想。
关于 Spire.XLS for Python
该步骤及以下所有相同步骤在实际使用中一般不强求,因为 Python 程序一般会在运行结束后自动完成该操作,即释放对象。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: Python 在 Excel 中应用数据透视表