使用 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 中格式化數據透視表中的單元格。此外,您可以使用 文檔 探索更多關於 Python Excel 庫的信息。如果您有任何疑問,請隨時通過我們的 論壇 告訴我們。

也可以看看