使用 Python 在 Excel 中创建数据透视表

Excel 电子表格中的数据透视表用于以交互方式汇总数据。假设您有许多发票的数据,并且您希望按客户或产品对它们进行分组。在这种情况下,数据透视表就会发挥作用。在本文中,您将学习如何在 Python 中处理 Excel 中的数据透视表。特别是,您将了解如何使用 Python 在 Excel 中创建数据透视表。此外,我们将演示如何以编程方式格式化 Excel 数据透视表中的单元格。

在 Excel 中创建数据透视表的 Python 库 - 免费下载

Aspose.Cells for Python 是一个高速库,旨在创建和处理 Excel 文件。我们将使用这个库在 Excel 电子表格中创建数据透视表。

您可以使用以下 pip 命令 下载 其包或从 PyPI 安装它。

pip install aspose-cells

用 Python 在 Excel 中创建数据透视表

以下是使用 Python 在 Excel 中创建数据透视表的步骤。

  • 使用 Workbook 类创建新的或加载现有的 Excel 文件。
  • 使用数据填充工作表(可选)。
  • 使用 Worksheet.getPivotTables() 方法将数据透视表集合到 PivotTableCollection 对象中。
  • 使用 PivotTableCollection.add(string, string, string) 方法添加一个新的数据透视表并在对象中获取它的引用。
  • 设置总计、格式等选项。
  • 使用 PivotTable.addFieldToArea(int, int) 方法将字段添加到区域。
  • 使用 Workbook.save(string) 方法保存工作簿。

以下代码示例显示了如何在 Python 中的 Excel 中添加数据透视表。

import jpype
import asposecells

jpype.startJVM()
from asposecells.api import Workbook, PivotFieldType

# 实例化工作簿对象
workbook = Workbook()

# 添加新工作表并获取其参考
sheetIndex = workbook.getWorksheets().add()
worksheet = workbook.getWorksheets().get(sheetIndex)

# 获取工作表的单元格
cells = worksheet.getCells()

# 将值设置为单元格
cell = cells.get("A1")
cell.setValue("Sport")
cell = cells.get("B1")
cell.setValue("Quarter")
cell = cells.get("C1")
cell.setValue("Sales")

cell = cells.get("A2")
cell.setValue("Golf")
cell = cells.get("A3")
cell.setValue("Golf")
cell = cells.get("A4")
cell.setValue("Tennis")
cell = cells.get("A5")
cell.setValue("Tennis")
cell = cells.get("A6")
cell.setValue("Tennis")
cell = cells.get("A7")
cell.setValue("Tennis")
cell = cells.get("A8")
cell.setValue("Golf")

cell = cells.get("B2")
cell.setValue("Qtr3")
cell = cells.get("B3")
cell.setValue("Qtr4")
cell = cells.get("B4")
cell.setValue("Qtr3")
cell = cells.get("B5")
cell.setValue("Qtr4")
cell = cells.get("B6")
cell.setValue("Qtr3")
cell = cells.get("B7")
cell.setValue("Qtr4")
cell = cells.get("B8")
cell.setValue("Qtr3")

cell = cells.get("C2")
cell.setValue(1500)
cell = cells.get("C3")
cell.setValue(2000)
cell = cells.get("C4")
cell.setValue(600)
cell = cells.get("C5")
cell.setValue(1500)
cell = cells.get("C6")
cell.setValue(4070)
cell = cells.get("C7")
cell.setValue(5000)
cell = cells.get("C8")
cell.setValue(6430)

# 获取所有数据透视表
pivotTables = worksheet.getPivotTables()

# 将新数据透视表添加到工作表
index = pivotTables.add("=A1:C8", "E3", "PivotTable2")

# 访问新添加的数据透视表的实例
pivotTable = pivotTables.get(index)

# 隐藏行的总计
pivotTable.setRowGrand(False)

# 将第一个字段拖到行区域
pivotTable.addFieldToArea(PivotFieldType.ROW, 0)

# 将第二个字段拖到列区域
pivotTable.addFieldToArea(PivotFieldType.COLUMN, 1)

# 将第三个字段拖到数据区
pivotTable.addFieldToArea(PivotFieldType.DATA, 2)

# 保存 Excel 文件
workbook.save("CreatePivotTable.xlsx")

Excel 数据

excel数据透视表的数据源

数据透视表

在java中的excel中创建数据透视表

在 Python 中格式化 Excel 数据透视表中的单元格

以下是在 Python 中格式化 Excel 数据透视表中的单元格的步骤。

  • 使用 Workbook 类创建新的或加载现有的 Excel 文件。
  • 填充工作表(可选)。
  • 获取数据透视表所在工作表的参考。
  • 使用 Worksheet.getPivotTables().get(index) 方法通过索引获取数据透视表的引用。
  • 使用 Workbook.createStyle() 方法创建新样式并获取其参考。
  • 设置 Style 对象的所需属性。
  • 将 Style 对象分配给数据透视表。
  • 使用 Workbook.save(string) 方法保存工作簿。

以下代码示例显示了如何在 Python 中格式化 Excel 数据透视表。

import jpype
import asposecells

jpype.startJVM()
from asposecells.api import Workbook, BackgroundType, Color

# 从包含数据透视表的源 Excel 文件创建工作簿对象
workbook = Workbook("pivotTable_test.xlsx")

# 按名称访问工作表
worksheet = workbook.getWorksheets().get("PivotTable")

# 按索引访问数据透视表
pivotTable = worksheet.getPivotTables().get(0)

# 创建背景颜色为浅蓝色的样式对象
style = workbook.createStyle()
style.setPattern(BackgroundType.SOLID)
style.setBackgroundColor(Color.getLightBlue())

# 用浅蓝色格式化整个数据透视表
pivotTable.formatAll(style)

# 用黄色创建另一个样式对象
style = workbook.createStyle()
style.setPattern(BackgroundType.SOLID)
style.setBackgroundColor(Color.getYellow())

# 用黄色格式化数据透视表第一行的单元格
columns = [0, 1, 2, 3, 4]
for x in columns:
  pivotTable.format(1, x, style)

# 保存工作簿对象
workbook.save("output.xlsx")

用于创建 Excel 数据透视表的 Python 库 - 获得免费许可证

您可以获得免费的临时许可证 使用 Aspose.Cells for Python,而不受评估限制。

结论

在本文中,您学习了如何使用 Python 在 Excel 工作表中创建数据透视表。此外,您还了解了如何以编程方式在 Excel 中设置数据透视表中的单元格格式。此外,您可以使用 documentation 探索更多关于 Python Excel 库的信息。如果您有任何问题,请随时通过我们的 论坛 告诉我们。

也可以看看