Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
page_fields koleksiyonu aracılığıyla bir filtre alanı ekleyebilir, filtreyi tekli seçim modunda yönetebilir, her filtre öğesini göstermek için temizleyebilir ya da alanı çoklu seçime geçirerek kullanıcıların Excel’deki onay kutusu arayüzü aracılığıyla aynı anda birkaç filtre öğesi seçmesine olanak tanıyabilirsiniz.
Bir filtre alanı, Pivot Tablosu gövdesinin kaynak verilerin hangi alt kümesini görüntüleyeceğini kontrol eden bir Pivot alanıdır. Son kullanıcılar bunu Excel’de işlenmiş bir Pivot Tablosunun üst kısmında bir açılır menü olarak görür ve kullanılabilir filtre öğelerinden birinin seçilmesi, Pivot Tablosu gövdesini yalnızca o filtre öğesine ait kayıtların özetleneceği şekilde yeniden oluşturur. Bir Pivot alanı, PivotFieldType.ROW, PivotFieldType.COLUMN veya PivotFieldType.DATA yerine PivotFieldType.PAGE olarak kaydedildiğinde filtre alanı haline gelir.
Aşağıdaki örnek, küçük bir Meyve / Yıl / Tutar veri kümesi oluşturur, E3 hücresine bir Pivot Tablosu yerleştirir; satır alanında Fruit (Meyve), veri alanında Amount (Tutar) ve filtre alanında Year (Yıl) bulunur, Pivot Tablosunu yeniler ve çalışma kitabını kaydeder.
import jpype
import asposecells
jpype.startJVM()
from asposecells.api import Workbook
from asposecells.api import Workbook, PivotFieldType
# Yeni bir çalışma kitabı oluştur
workbook = Workbook()
worksheet = workbook.getWorksheets().get(0)
worksheet.setName("Data")
# Başlık satırını ayarla
worksheet.getCells().get("A1").putValue("Fruit")
worksheet.getCells().get("B1").putValue("Year")
worksheet.getCells().get("C1").putValue("Amount")
# 9 satır örnek veri doldur: Fruit, Year, Amount
data = [
["apple", 2020, 100],
["banana", 2021, 200],
["apple", 2021, 150],
["grape", 2020, 120],
["orange", 2022, 180],
["banana", 2020, 90],
["grape", 2021, 130],
["apple", 2022, 170],
["orange", 2021, 110]
]
for i in range(len(data)):
worksheet.getCells().get(i + 1, 0).putValue(data[i][0])
worksheet.getCells().get(i + 1, 1).putValue(data[i][1])
worksheet.getCells().get(i + 1, 2).putValue(data[i][2])
# E3 hücresine sabitlenmiş bir pivot tablo ekle
pivotIndex = worksheet.getPivotTables().add("A1:C10", "E3", "PivotTable1")
pivotTable = worksheet.getPivotTables().get(pivotIndex)
# Alanları bölgelerine ekle: Satır olarak Fruit, Veri olarak Amount, Sayfa alanı olarak Year
pivotTable.addFieldToArea(PivotFieldType.Row, "Fruit")
pivotTable.addFieldToArea(PivotFieldType.Data, "Amount")
pivotTable.addFieldToArea(PivotFieldType.Page, "Year")
# Pivot tablo verilerini yenile ve hesapla
pivotTable.calculateData()
# Çalışma kitabını kaydet
workbook.save("pageFieldSample.xlsx")
jpype.shutdownJVM()
Zaten bir PivotField örneğiyle çalışıyorsanız, onu doğrudan PivotTable.page_fields.add yöntemine geçirebilirsiniz. Pivot Tablosu ve filtre alanı önceki senaryodakiyle tamamen aynı şekilde oluşturulur; yalnızca son filtre alanı kaydı alt düzey API çağrısıyla değiştirilir.
import jpype
import asposecells
jpype.startJVM()
from asposecells.api import Workbook
from asposecells.api import Workbook, Worksheet, Cells, Range, SaveFormat, PivotTable, PivotField, PivotFieldType
# — Pivot tablosu ve sayfa alanı tam olarak Senaryo 1a'daki gibi oluşturulur
# (Meyve/Yıl/Tutar verileri, pivot E3'te, Meyve→Satır,
# Tutar→Veri). Aşağıda BaseFields koleksiyonundan Year PivotField'ını
# alıp PageFields.Add'a geçiriyoruz — bu, AddFieldToArea'nın
# düşük seviyeli alternatifidir. Sonuç, Senaryo 1a ile işlevsel olarak
# aynıdır.
workbook = Workbook()
sheet = workbook.getWorksheets().get(0)
# Başlıklar
sheet.getCells().get("A1").putValue("Fruit")
sheet.getCells().get("B1").putValue("Year")
sheet.getCells().get("C1").putValue("Amount")
# Örnek veriler (9 satır)
sheet.getCells().get("A2").putValue("apple"); sheet.getCells().get("B2").putValue("2020"); sheet.getCells().get("C2").putValue(100)
sheet.getCells().get("A3").putValue("apple"); sheet.getCells().get("B3").putValue("2021"); sheet.getCells().get("C3").putValue(150)
sheet.getCells().get("A4").putValue("apple"); sheet.getCells().get("B4").putValue("2022"); sheet.getCells().get("C4").putValue(200)
sheet.getCells().get("A5").putValue("grape"); sheet.getCells().get("B5").putValue("2020"); sheet.getCells().get("C5").putValue(300)
sheet.getCells().get("A6").putValue("grape"); sheet.getCells().get("B6").putValue("2021"); sheet.getCells().get("C6").putValue(400)
sheet.getCells().get("A7").putValue("grape"); sheet.getCells().get("B7").putValue("2022"); sheet.getCells().get("C7").putValue(500)
sheet.getCells().get("A8").putValue("blueberry"); sheet.getCells().get("B8").putValue("2020"); sheet.getCells().get("C8").putValue(250)
sheet.getCells().get("A9").putValue("blueberry"); sheet.getCells().get("B9").putValue("2021"); sheet.getCells().get("C9").putValue(350)
sheet.getCells().get("A10").putValue("blueberry");sheet.getCells().get("B10").putValue("2022"); sheet.getCells().get("C10").putValue(450)
# E3 konumunda A1:C10 aralığını kapsayan pivot tablo ekle
pivotIndex = sheet.getPivotTables().add("E3", "A1:C10", "PivotTable1")
pivotTable = sheet.getPivotTables().get(pivotIndex)
# Meyve -> Satır, Tutar -> Veri (Year aşağıda Sayfa alanına gidecek)
pivotTable.addFieldToArea(PivotFieldType.Row, "Fruit")
pivotTable.addFieldToArea(PivotFieldType.Data, "Amount")
# Düşük seviyeli yaklaşım: mevcut Year PivotField'ını BaseFields'tan al
# ve PageFields.Add(PivotField) ile Sayfa alanına kaydet.
yearField = pivotTable.getBaseFields().get("Year")
pivotTable.getPageFields().add(yearField)
# Yeni sayfa alanının kaydedilen çalışma kitabında yansıtılması için yenile
pivotTable.calculateData()
workbook.save("output.xlsx")
jpype.shutdownJVM()
Varsayılan tekli seçim davranışında, filtre alanı tek bir açılır menü olarak işlenir ve PivotField.current_page_item tamsayısı, Pivot Tablosu gövdesini hangi filtre öğesinin yönlendireceğini seçer. Belirli bir dizin atamak o öğeyi seçer; özel sınır değeri 0x7FFD (ondalık 32765) atamak filtreyi temizler ve böylece her filtre öğesi aynı anda özetlenir. Tekli seçim varsayılan davranıştır; bunu açıkça etkinleştirmeniz gerekmez.
current_page_item değerini sihirli değer olan 0x7FFD olarak ayarlamak, filtreyi temizlemek ile eşdeğerdir: Pivot Tablosu gövdesi, hiçbir filtre uygulanmamış gibi her filtre öğesini özetler.
import jpype
import asposecells
jpype.startJVM()
from asposecells.api import Workbook
from asposecells.api import Workbook, Worksheet, Cells, Range, SaveFormat, PivotFieldType
# Yeni bir çalışma kitabı oluştur
workbook = Workbook()
sheet = workbook.getWorksheets().get(0)
# Fruit/Year/Amount verilerini doldur
sheet.getCells().get("A1").putValue("Fruit")
sheet.getCells().get("B1").putValue("Year")
sheet.getCells().get("C1").putValue("Amount")
data = [
["Apple", 2022, 100],
["Apple", 2023, 150],
["Banana", 2022, 80],
["Banana", 2023, 120],
["Cherry", 2022, 200],
["Cherry", 2023, 250]
]
for r in range(len(data)):
for c in range(len(data[r])):
sheet.getCells().get(r + 1, c).putValue(data[r][c])
# E3 konumunda pivot tablo oluştur
pivotTables = sheet.getPivotTables()
index = pivotTables.add("=A1:C7", "E3", "PivotTable1")
pivotTable = pivotTables.get(index)
# Pivot alanlarını yapılandır: Fruit→Satır, Amount→Veri, Year→Sayfa
pivotTable.addFieldToArea(PivotFieldType.ROW, "Fruit")
pivotTable.addFieldToArea(PivotFieldType.DATA, "Amount")
pivotTable.addFieldToArea(PivotFieldType.PAGE, "Year")
pivotTable.calculateData()
# Sayfa filtresini temizle, böylece sayfa alanındaki her öğe görünür olsun.
# 0x7FFD (ondalık 32765), "tüm öğeler" anlamına gelen özel sentinel değeridir —
# Excel'in sayfa alanı açılır menüsünde "(Tümü)" seçmeye eşdeğerdir.
pivotTable.getPageFields().get(0).setCurrentPageItem(0x7FFD)
workbook.save("output.xlsx")
jpype.shutdownJVM()
current_page_item değerini gerçek bir dizine ayarlamak yalnızca o filtre öğesini seçer. Dizin, filtre alanının sıralanmış öğe listesindeki öğenin konumudur; dolayısıyla örneğin 1 sıralamadan sonra ikinci öğeyi seçer.
import jpype
import asposecells
jpype.startJVM()
from asposecells.api import Workbook
from asposecells.api import Workbook, Worksheet, Cells, Range, SaveFormat, PivotFieldType
# Create workbook
workbook = Workbook()
sheet = workbook.getWorksheets().get(0)
cells = sheet.getCells()
# Add sample data (Fruit/Year/Amount)
cells.get("A1").putValue("Fruit")
cells.get("B1").putValue("Year")
cells.get("C1").putValue("Amount")
cells.get("A2").putValue("Apple")
cells.get("B2").putValue("2020")
cells.get("C2").putValue("100")
cells.get("A3").putValue("Apple")
cells.get("B3").putValue("2021")
cells.get("C3").putValue("150")
cells.get("A4").putValue("Banana")
cells.get("B4").putValue("2020")
cells.get("C4").putValue("200")
cells.get("A5").putValue("Banana")
cells.get("B5").putValue("2021")
cells.get("C5").putValue("250")
# Add pivot table at E3
pivotTables = sheet.getPivotTables()
pivotIndex = pivotTables.add("A1:C5", "E3", "PivotTable1")
pivotTable = pivotTables.get(pivotIndex)
# Add fields: Fruit→Row, Amount→Data, Year→Page
pivotTable.addFieldToArea(PivotFieldType.Row, "Fruit")
pivotTable.addFieldToArea(PivotFieldType.Data, "Amount")
pivotTable.addFieldToArea(PivotFieldType.Page, "Year")
# Page-field-specific operations
pivotTable.getPageFields().get(0).setCurrentPageItem(1) # 1 = second item in sorted order (e.g. "2021")
# Refresh and calculate pivot table
pivotTable.calculateData()
workbook.save("output.xlsx")
jpype.shutdownJVM()
Çoklu seçim filtreleme, filtre açılır menüsünü bir onay kutusu listesine dönüştürür ve son kullanıcının aynı anda birkaç filtre öğesi seçmesine olanak tanır. Aspose.Cells birlikte çalışan iki özellik sunar. Çoklu seçim kullanıcı arayüzünün geçerli olabilmesi için PivotField.is_multiple_item_selection_allowed değerinin True olarak ayarlanması gerekir. Etkinleştirildikten sonra, PivotItem.is_hidden onay kutusu listesinde hangi öğelerin görüneceğini kontrol eder; böylece her öğeyi gösterebilir veya yalnızca belirli öğeleri beyaz listeye alabilirsiniz.
import jpype
import asposecells
jpype.startJVM()
from asposecells.api import Workbook
from asposecells.api import Workbook, Worksheet, Cells, Range, SaveFormat, PivotFieldType
import os
import re
# — Pivot tablosu ve sayfa alanı tam olarak
# Senaryo 1a'daki gibi oluşturulur (Fruit/Year/Amount verileri, pivot E3'te, Fruit→Satır,
# Amount→Veri, Year→Sayfa AddFieldToArea aracılığıyla).
# Aşağıda sayfa alanında çoklu seçim filtrelemesi uyguluyoruz.
workbook = Workbook()
sheet = workbook.getWorksheets().get(0)
cells = sheet.getCells()
# Örnek veri: Fruit | Year | Amount
cells.get(0, 0).putValue("Fruit")
cells.get(0, 1).putValue("Year")
cells.get(0, 2).putValue("Amount")
data = [
["apple", "2019", "100"],
["apple", "2020", "150"],
["apple", "2021", "200"],
["banana", "2019", "110"],
["banana", "2020", "160"],
["banana", "2021", "210"],
["grape", "2019", "120"],
["grape", "2020", "170"],
["grape", "2021", "220"]
]
for i in range(len(data)):
cells.get(i + 1, 0).putValue(data[i][0])
cells.get(i + 1, 1).putValue(int(data[i][1]))
cells.get(i + 1, 2).putValue(int(data[i][2]))
pivotSheet = workbook.getWorksheets().add("Pivot")
pivots = pivotSheet.getPivotTables()
pivotIndex = pivots.add("E3", "A1:C10", "PivotTable1")
pivotTable = pivots.get(pivotIndex)
pivotTable.addFieldToArea(PivotFieldType.Row, "Fruit")
pivotTable.addFieldToArea(PivotFieldType.Data, "Amount")
pivotTable.addFieldToArea(PivotFieldType.Page, "Year")
# — Sayfa alanında çoklu seçimi etkinleştir
pivotTable.getPageFields().get(0).setMultipleItemSelectionAllowed(True)
# Bölüm A — TÜM öğeleri seç (her öğeyi görünür yap)
pivotItems = pivotTable.getPageFields().get(0).getPivotItems()
for i in range(pivotItems.getCount()):
pivotItems.get(i).setHidden(False)
# Bölüm B — Yalnızca kaynak değere göre belirli öğeleri seç
for i in range(pivotItems.getCount()):
value = pivotItems.get(i).getStringValue()
if value == "2020" or value == "grape" or value == "blueberry":
pivotItems.get(i).setHidden(False)
else:
pivotItems.get(i).setHidden(True)
pivotTable.calculateData()
workbook.save("output.xlsx")
jpype.shutdownJVM()
Not:
PivotItem.is_hiddenaracılığıyla çoklu seçim filtreleme kullanılırken, en az birPivotItemgörünür kalmalıdır (is_hidden == False). Her öğe gizliyse, Excel dosyayı açarken ya kilitlenir ya da boş bir Pivot Tablosu işler. Çoklu seçim beyaz listenizin kaynak verilerinizden en az bir öğe içerdiğini her zaman doğrulayın.
Aşağıdaki tablo, her senaryoyu ayrıntılı olarak okumak zorunda kalmadan doğru kombinasyonu seçebilmeniz için her API’nin ve modun ne zaman kullanılacağını özetler.
| Senaryo / Kullanım Durumu | Önerilen API | Kullanılan Özellik | Notlar |
|---|---|---|---|
| Kaynak sütun adına göre filtre alanı ekleme (en yaygın) | PivotTable.add_field_to_area(PivotFieldType.PAGE, "fieldName") |
yok | Üst düzey, tek satırlık. Bir PivotField referansına ihtiyacınız olmadığı sürece bunu kullanın. |
Zaten bir PivotField nesneniz olduğunda filtre alanı ekleme |
PivotTable.page_fields.add(PivotField) |
yok | Alan nesnesi başka yerden alındığında veya yeniden kullanılması gerektiğinde kullanın. |
| Tek bir filtre öğesine filtreleme (varsayılan mod) | PivotField.current_page_item |
belirli bir dizine ayarla | Örneğin, 1 sıralanmış listedeki ikinci öğeyi gösterir. |
| Tüm öğeleri gösterme / filtreyi temizleme | PivotField.current_page_item |
0x7FFD olarak ayarla |
Sihirli değer olan 0x7FFD (ondalık 32765), “tüm öğeler” için sınır değeridir. |
| Excel’de çoklu seçim kullanıcı arayüzünü etkinleştirme | PivotField.is_multiple_item_selection_allowed |
True olarak ayarla |
is_hidden çağrılarının geçerli olabilmesi için önce ayarlanmalıdır. |
| Çoklu seçim listesinde tek tek öğeleri gizleme / gösterme | PivotItem.is_hidden |
öğe başına ayarla | En az bir öğe görünür kalmalıdır (is_hidden == False). |
PivotItem gizliyse, Excel açılışta kilitlenir veya boş bir Pivot Tablosu işler. Beyaz listenizi kaynak verilerinize göre oluşturarak en az bir öğenin görünür kalmasını sağlayın; böylece kaydedilen çalışma kitaplarınız her makinede güvenilir şekilde açılır.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.