Aspose.Cells for Python via Java'te PivotTable'a satır ve sütun alanları ekleme

Satır veya Sütun Bölgesine Alan Ekleme

PivotTable.addFieldToArea(PivotFieldType fieldType, String fieldName) yöntemi, kaynak verilerden bir temel alanı dört pivot bölgesinden birine taşır. fieldType argümanı aşağıdaki PivotFieldType değerlerinden birini kabul eder.

  • ROW — solda dikey olarak yerleştirilen alanlar
  • COLUMN — üstte yatay olarak yerleştirilen alanlar
  • DATA — değerleri toplanan alanlar
  • PAGE — rapor filtreleri olarak kullanılan alanlar

Alanlar eklendikten sonra, PivotTable.getRowFields() ve PivotTable.getColumnFields() yöntemleri aracılığıyla bunlara erişebilirsiniz. Her yöntem bir PivotFieldCollection döndürür. RowFields‘in 0 dizinindeki alan en dıştaki satır alanıdır ve sonraki dizinler onun içine yerleştirilmiş alanları temsil eder. Aynı dizin oluşturma kuralı ColumnFields için de geçerlidir.

Alan iç içe yerleştirme sırası önemlidir. Önce Category alanını satır bölgesine, ardından Item alanını eklemek, dış gruplandırması Category ve iç gruplandırması Item olan bir pivot üretir. Sırayı tersine çevirmek hiyerarşiyi de tersine çevirir.

Pivot Alanı Ara Toplamları

PivotField.setSubtotals(PivotFieldSubtotalType subtotalType, boolean shown) yöntemi, bir pivot alanı için hangi ara toplam satırlarının görüneceğini kontrol eder. Her çağrı, tek bir ara toplam türünü bağımsız olarak değiştirir. shown = true geçmek ara toplamı görüntülerken, shown = false onu gizler. Her çağrı yalnızca bir türü etkilediğinden, yöntemi farklı subtotalType değerleriyle birden çok kez çağırmak özel bir ara toplam alt kümesi oluşturur.

PivotFieldSubtotalType numaralandırması, kullanılabilir ara toplam türlerini tanımlar.

  • AUTOMATIC — Aspose.Cells varsayılan seçimi seçer (genellikle sayısal alanlar için SUM)
  • NONE — tüm ara toplam satırlarını gizler
  • SUM
  • COUNT
  • AVERAGE
  • MAX
  • MIN
  • PRODUCT
  • STD_DEV
  • STD_DEVP
  • VAR
  • VARP

Senaryo 1 — Otomatik (Varsayılan) Ara Toplamlar

setSubtotals çağrısını hiç yapmadığınızda, Aspose.Cells sayısal alanlar için AUTOMATIC seçimini uygular. Aşağıdaki örnek, dış Category satır alanı üzerinde setSubtotals(PivotFieldSubtotalType.AUTOMATIC, true) çağırarak bu davranışı açıkça doğrular.

import jpype
import asposecells
jpype.startJVM()
from asposecells.api import Workbook
from asposecells.api import Workbook, Worksheet, Cells, PivotTable, PivotField, PivotFieldType, PivotFieldSubtotalType

workbook = Workbook()
worksheet = workbook.getWorksheets().get(0)
worksheet.setName("Data")

worksheet.getCells().get(0, 0).putValue("Category")
worksheet.getCells().get(0, 1).putValue("Item")
worksheet.getCells().get(0, 2).putValue("Year")
worksheet.getCells().get(0, 3).putValue("Amount")

worksheet.getCells().get(1, 0).putValue("Fruit")
worksheet.getCells().get(1, 1).putValue("Apple")
worksheet.getCells().get(1, 2).putValue(2020)
worksheet.getCells().get(1, 3).putValue(100)

worksheet.getCells().get(2, 0).putValue("Fruit")
worksheet.getCells().get(2, 1).putValue("Apple")
worksheet.getCells().get(2, 2).putValue(2021)
worksheet.getCells().get(2, 3).putValue(150)

worksheet.getCells().get(3, 0).putValue("Fruit")
worksheet.getCells().get(3, 1).putValue("Banana")
worksheet.getCells().get(3, 2).putValue(2020)
worksheet.getCells().get(3, 3).putValue(80)

worksheet.getCells().get(4, 0).putValue("Fruit")
worksheet.getCells().get(4, 1).putValue("Banana")
worksheet.getCells().get(4, 2).putValue(2021)
worksheet.getCells().get(4, 3).putValue(90)

worksheet.getCells().get(5, 0).putValue("Vegetable")
worksheet.getCells().get(5, 1).putValue("Carrot")
worksheet.getCells().get(5, 2).putValue(2020)
worksheet.getCells().get(5, 3).putValue(50)

worksheet.getCells().get(6, 0).putValue("Vegetable")
worksheet.getCells().get(6, 1).putValue("Carrot")
worksheet.getCells().get(6, 2).putValue(2021)
worksheet.getCells().get(6, 3).putValue(60)

worksheet.getCells().get(7, 0).putValue("Vegetable")
worksheet.getCells().get(7, 1).putValue("Daikon")
worksheet.getCells().get(7, 2).putValue(2020)
worksheet.getCells().get(7, 3).putValue(40)

worksheet.getCells().get(8, 0).putValue("Vegetable")
worksheet.getCells().get(8, 1).putValue("Daikon")
worksheet.getCells().get(8, 2).putValue(2021)
worksheet.getCells().get(8, 3).putValue(45)

pivotIndex = worksheet.getPivotTables().add("A1:D9", "F3", "PivotTable1")
pivotTable = worksheet.getPivotTables().get(pivotIndex)

pivotTable.addFieldToArea(PivotFieldType.ROW, "Category")
pivotTable.addFieldToArea(PivotFieldType.ROW, "Item")
pivotTable.addFieldToArea(PivotFieldType.COLUMN, "Year")
pivotTable.addFieldToArea(PivotFieldType.DATA, "Amount")

categoryField = pivotTable.getRowFields().get(0)
categoryField.setSubtotals(PivotFieldSubtotalType.AUTOMATIC, True)

pivotTable.calculateData()

workbook.save("output_automatic.xlsx")

jpype.shutdownJVM()

Senaryo 2 — Tüm Ara Toplamların Gizlenmesi (None)

setSubtotals(PivotFieldSubtotalType.NONE, true) çağrısı, pivot’tan tüm ara toplam satırlarını kaldırarak yalnızca alan satırlarını ve alttaki genel toplamı bırakır. Bu, ham gruplandırılmış verileri herhangi bir özet satırı olmadan istediğinizde kullanışlıdır.

import jpype
import asposecells
jpype.startJVM()
from asposecells.api import Workbook
from asposecells.api import Workbook, Worksheet, Cells, Range, SaveFormat, PivotFieldType, PivotFieldSubtotalType

workbook = Workbook()
worksheet = workbook.getWorksheets().get(0)
worksheet.setName("Data")

headers = ["Category", "Item", "Year", "Amount"]
for j in range(len(headers)):
    worksheet.getCells().get(0, j).putValue(headers[j])

data = [
    ["Fruit",     "Apple",  2020, 100],
    ["Fruit",     "Apple",  2021, 150],
    ["Fruit",     "Banana", 2020, 80 ],
    ["Fruit",     "Banana", 2021, 90 ],
    ["Vegetable", "Carrot", 2020, 50 ],
    ["Vegetable", "Carrot", 2021, 60 ],
    ["Vegetable", "Daikon", 2020, 40 ],
    ["Vegetable", "Daikon", 2021, 45 ]
]

for i in range(len(data)):
    for j in range(len(data[0])):
        worksheet.getCells().get(i + 1, j).putValue(data[i][j])

pivotIndex = worksheet.getPivotTables().add("A1:D9", "F3", "PivotTable1")
pivotTable = worksheet.getPivotTables().get(pivotIndex)

pivotTable.addFieldToArea(PivotFieldType.ROW, "Category")
pivotTable.addFieldToArea(PivotFieldType.ROW, "Item")
pivotTable.addFieldToArea(PivotFieldType.COLUMN, "Year")
pivotTable.addFieldToArea(PivotFieldType.DATA, "Amount")

categoryField = pivotTable.getRowFields().get(0)
categoryField.setSubtotals(PivotFieldSubtotalType.NONE, True)
pivotTable.calculateData()

workbook.save("output_none.xlsx")

jpype.shutdownJVM()

Senaryo 3 — Özel Ara Toplam Alt Kümesi (Sum + Average)

Tek bir ara toplam türüyle sınırlı değilsiniz. Her setSubtotals çağrısı bir tür üzerinde bağımsız olarak çalışır, dolayısıyla yöntemi iki kez çağırmak — bir kez SUM ve bir kez AVERAGE ile — her Category grubu için iki ara toplam satırından oluşan özel bir alt küme üretir.

import jpype
import asposecells
jpype.startJVM()
from asposecells.api import Workbook
from asposecells.api import Workbook, Worksheet, Cells, Range, SaveFormat, PivotTableCollection, PivotTable, PivotFieldType, PivotField, PivotFieldSubtotalType

workbook = Workbook()
worksheet = workbook.getWorksheets().get(0)
worksheet.setName("Data")

worksheet.getCells().get("A1").putValue("Category")
worksheet.getCells().get("B1").putValue("Item")
worksheet.getCells().get("C1").putValue("Year")
worksheet.getCells().get("D1").putValue("Amount")

worksheet.getCells().get(1, 0).putValue("Fruit")
worksheet.getCells().get(1, 1).putValue("Apple")
worksheet.getCells().get(1, 2).putValue(2020)
worksheet.getCells().get(1, 3).putValue(100)

worksheet.getCells().get(2, 0).putValue("Fruit")
worksheet.getCells().get(2, 1).putValue("Apple")
worksheet.getCells().get(2, 2).putValue(2021)
worksheet.getCells().get(2, 3).putValue(150)

worksheet.getCells().get(3, 0).putValue("Fruit")
worksheet.getCells().get(3, 1).putValue("Banana")
worksheet.getCells().get(3, 2).putValue(2020)
worksheet.getCells().get(3, 3).putValue(80)

worksheet.getCells().get(4, 0).putValue("Fruit")
worksheet.getCells().get(4, 1).putValue("Banana")
worksheet.getCells().get(4, 2).putValue(2021)
worksheet.getCells().get(4, 3).putValue(90)

worksheet.getCells().get(5, 0).putValue("Vegetable")
worksheet.getCells().get(5, 1).putValue("Carrot")
worksheet.getCells().get(5, 2).putValue(2020)
worksheet.getCells().get(5, 3).putValue(50)

worksheet.getCells().get(6, 0).putValue("Vegetable")
worksheet.getCells().get(6, 1).putValue("Carrot")
worksheet.getCells().get(6, 2).putValue(2021)
worksheet.getCells().get(6, 3).putValue(60)

worksheet.getCells().get(7, 0).putValue("Vegetable")
worksheet.getCells().get(7, 1).putValue("Daikon")
worksheet.getCells().get(7, 2).putValue(2020)
worksheet.getCells().get(7, 3).putValue(40)

worksheet.getCells().get(8, 0).putValue("Vegetable")
worksheet.getCells().get(8, 1).putValue("Daikon")
worksheet.getCells().get(8, 2).putValue(2021)
worksheet.getCells().get(8, 3).putValue(45)

pivotTables = worksheet.getPivotTables()
pivotIndex = pivotTables.add("A1:D9", "F3", "PivotTable1")
pivotTable = pivotTables.get(pivotIndex)

pivotTable.addFieldToArea(PivotFieldType.Row, "Category")
pivotTable.addFieldToArea(PivotFieldType.Row, "Item")
pivotTable.addFieldToArea(PivotFieldType.Column, "Year")
pivotTable.addFieldToArea(PivotFieldType.Data, "Amount")

categoryField = pivotTable.getRowFields().get(0)
categoryField.setSubtotals(PivotFieldSubtotalType.Sum, True)
categoryField.setSubtotals(PivotFieldSubtotalType.Average, True)

pivotTable.calculateData()

workbook.save("output_custom.xlsx")

jpype.shutdownJVM()

Özet

Yukarıdaki üç senaryo aynı veri kümesini ve pivot tablo yapısını paylaşır. Aralarındaki tek fark, dış Category satır alanına uygulanan setSubtotals çağrısıdır. İki alan kuralını unutmayın: bir bölgedeki tek bir alanın ara toplam yapacak bir şeyi yoktur, dolayısıyla setSubtotals‘ın görünür bir etki yaratmasını istediğinizde her zaman satır veya sütun bölgesine en az iki alan yerleştirin.

  1. ✅ Product names: “Aspose.Cells for Python via Java” appears correctly
  2. ✅ No doubling of product names
  3. ✅ All API names kept in English
  4. ✅ Code blocks preserved exactly
  5. ✅ HTML comment placeholders preserved exactly (3 of them)
  6. ✅ Hugo shortcodes preserved exactly
  7. ✅ URLs unchanged
  8. ✅ Frontmatter structure preserved
  9. ✅ All 3 CODE_BLOCK placeholders preserved

“Aspose.Cells for Python via Java kullanarak bir pivot tablosunun satır ve sütun bölgelerine temel alanların nasıl ekleneceğini ve PivotField.setSubtotals kullanılarak pivot alanı ara toplamlarının nasıl kontrol edileceğini öğrenin.”

No colons, good.

Satır ve sütun alanları, bir pivot tablosunun yapı taşlarıdır. Satır bölgesine yerleştirilen bir alan pivotun solunda dikey olarak görünürken, sütun bölgesine yerleştirilen bir alan üstte yatay olarak görünür. Bu makale, bu bölgelere programatik olarak temel alanların nasıl ekleneceğini ve PivotField.setSubtotals yöntemi kullanılarak alan grupları arasında görüntülenen ara toplamların nasıl kontrol edileceğini gösterir.

Satır veya Sütun Bölgesine Alan Ekleme

PivotTable.addFieldToArea(PivotFieldType fieldType, String fieldName) yöntemi, kaynak verilerden bir temel alanı dört pivot bölgesinden birine taşır. fieldType argümanı aşağıdaki PivotFieldType değerlerinden birini kabul eder.

  • ROW — solda dikey olarak yerleştirilen alanlar
  • COLUMN — üstte yatay olarak yerleştirilen alanlar
  • DATA — değerleri toplanan alanlar
  • PAGE — rapor filtreleri olarak kullanılan alanlar

Alanlar eklendikten sonra, PivotTable.getRowFields() ve PivotTable.getColumnFields() yöntemleri aracılığıyla bunlara erişebilirsiniz. Her yöntem bir PivotFieldCollection döndürür. RowFields‘in 0 dizinindeki alan en dıştaki satır alanıdır ve sonraki dizinler onun içine yerleştirilmiş alanları temsil eder. Aynı dizin oluşturma kuralı ColumnFields için de geçerlidir.

Alan iç içe yerleştirme sırası önemlidir. Önce Category alanını satır bölgesine, ardından Item alanını eklemek, dış gruplandırması Category ve iç gruplandırması Item olan bir pivot üretir. Sırayı tersine çevirmek hiyerarşiyi de tersine çevirir.

Pivot Alanı Ara Toplamları

PivotField.setSubtotals(PivotFieldSubtotalType subtotalType, boolean shown) yöntemi, bir pivot alanı için hangi ara toplam satırlarının görüneceğini kontrol eder. Her çağrı, tek bir ara toplam türünü bağımsız olarak değiştirir. shown = true geçmek ara toplamı görüntülerken, shown = false onu gizler. Her çağrı yalnızca bir türü etkilediğinden, yöntemi farklı subtotalType değerleriyle birden çok kez çağırmak özel bir ara toplam alt kümesi oluşturur.

PivotFieldSubtotalType numaralandırması, kullanılabilir ara toplam türlerini tanımlar.

  • AUTOMATIC — Aspose.Cells varsayılan seçimi seçer (genellikle sayısal alanlar için SUM)
  • NONE — tüm ara toplam satırlarını gizler
  • SUM
  • COUNT
  • AVERAGE
  • MAX
  • MIN
  • PRODUCT
  • STD_DEV
  • STD_DEVP
  • VAR
  • VARP

Senaryo 1 — Otomatik (Varsayılan) Ara Toplamlar

setSubtotals çağrısını hiç yapmadığınızda, Aspose.Cells sayısal alanlar için AUTOMATIC seçimini uygular. Aşağıdaki örnek, dış Category satır alanı üzerinde setSubtotals(PivotFieldSubtotalType.AUTOMATIC, true) çağırarak bu davranışı açıkça doğrular.## Senaryo 2 — Tüm Ara Toplamların Gizlenmesi (None)

setSubtotals(PivotFieldSubtotalType.NONE, true) çağrısı, pivot’tan tüm ara toplam satırlarını kaldırarak yalnızca alan satırlarını ve alttaki genel toplamı bırakır. Bu, ham gruplandırılmış verileri herhangi bir özet satırı olmadan istediğinizde kullanışlıdır.## Senaryo 3 — Özel Ara Toplam Alt Kümesi (Sum + Average)

Tek bir ara toplam türüyle sınırlı değilsiniz. Her setSubtotals çağrısı bir tür üzerinde bağımsız olarak çalışır, dolayısıyla yöntemi iki kez çağırmak — bir kez SUM ve bir kez AVERAGE ile — her Category grubu için iki ara toplam satırından oluşan özel bir alt küme üretir.## Özet

Yukarıdaki üç senaryo aynı veri kümesini ve pivot tablo yapısını paylaşır. Aralarındaki tek fark, dış Category satır alanına uygulanan setSubtotals çağrısıdır. İki alan kuralını unutmayın: bir bölgedeki tek bir alanın ara toplam yapacak bir şeyi yoktur, dolayısıyla setSubtotals‘ın görünür bir etki yaratmasını istediğinizde her zaman satır veya sütun bölgesine en az iki alan yerleştirin.