Pivot Öğesi nin mutlak konumunu belirtme
Kullanıcı bazen pivot öğelerin mutlak konumunu belirlemek isteyebilir, Aspose.Cells API bu kullanıcı gereksinimini karşılamak için birkaç yeni özellik ve bir yöntem sunar.
- Tüm ebeveyn düğümün bağımsızında PivotItems içindeki pozisyon indeksini belirlemek için kullanılabilecek PivotItem.setPosition() özelliği eklendi. - Aynı ebeveyn düğümdeki PivotItems içindeki pozisyon indeksini belirlemek için kullanılabilecek PivotItem.setPositionInSameParentNode() özelliği eklendi.
- PivotItem’ı yukarı veya aşağı hareket ettirmek için PivotItem.move(int count, boolean isSameParent) yöntemi eklenmiştir, burada sayım, PivotItem’ın yukarı veya aşağı hareket edilecek pozisyon sayısıdır. Eğer sayım değeri sıfırdan küçükse, öğe yukarı taşınacak, eğer sayım değeri sıfırdan büyükse, PivotItem aşağı taşınacak, Boolean tipi isSameParent parametresi taşıma işleminin aynı üst düğümde gerçekleştirilmesi gerekip gerekmediğini belirtir.
- PivotItem.move(int sayım) yöntemi kullanılmayacak, bu nedenle yeni eklenen yöntemin PivotItem.move(int count, boolean isSameParent) kullanılması önerilir.
Lütfen, PivotTable.refreshData ve PivotTable.calculateData yöntemlerini kullanmadan önce PivotItem.setPosition(), PivotItem.setPositionInSameParentNode() özelliklerini ve PivotItem.move(int count, boolean isSameParent) yöntemini kullanmak gereklidir.
Örnek Kod
Aşağıdaki örnek kod bir pivot tablo oluşturur ve daha sonra aynı üst düğümdeki Pivot Öğelerinin pozisyonlarını belirtir.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getDataDir(SpecifyAbsolutePositionOfPivotItem.class); | |
Workbook wb = new Workbook(dataDir + "source.xlsx"); | |
Worksheet wsPivot = wb.getWorksheets().add("pvtNew Hardware"); | |
Worksheet wsData = wb.getWorksheets().get("New Hardware - Yearly"); | |
// Get the pivottables collection for the pivot sheet | |
PivotTableCollection pivotTables = wsPivot.getPivotTables(); | |
// Add PivotTable to the worksheet | |
int index = pivotTables.add("='New Hardware - Yearly'!A1:D621", "A3", "HWCounts_PivotTable"); | |
// Get the PivotTable object | |
PivotTable pvtTable = pivotTables.get(index); | |
// Add vendor row field | |
pvtTable.addFieldToArea(PivotFieldType.ROW, "Vendor"); | |
// Add item row field | |
pvtTable.addFieldToArea(PivotFieldType.ROW, "Item"); | |
// Add data field | |
pvtTable.addFieldToArea(PivotFieldType.DATA, "2014"); | |
// Turn off the subtotals for the vendor row field | |
PivotField pivotField = pvtTable.getRowFields().get("Vendor"); | |
pivotField.setSubtotals(PivotFieldSubtotalType.NONE, true); | |
// Turn off grand total | |
pvtTable.setColumnGrand(false); | |
// Please call the PivotTable.RefreshData() and PivotTable.CalculateData(). Before using PivotItem.Position, | |
// PivotItem.PositionInSameParentNode and PivotItem.Move(int count, bool isSameParent). | |
pvtTable.refreshData(); | |
pvtTable.calculateData(); | |
pvtTable.getRowFields().get("Item").getPivotItems().get("4H12").setPositionInSameParentNode(0); | |
pvtTable.getRowFields().get("Item").getPivotItems().get("DIF400").setPositionInSameParentNode(3); | |
/* | |
* As a result of using PivotItem.PositionInSameParentNode,it will change the original sort sequence, // so when you use | |
* PivotItem.PositionInSameParentNode in another parent node,you need call the method named "CalculateData" again. | |
*/ | |
pvtTable.calculateData(); | |
pvtTable.getRowFields().get("Item").getPivotItems().get("CA32").setPositionInSameParentNode(1); | |
pvtTable.getRowFields().get("Item").getPivotItems().get("AAA3").setPositionInSameParentNode(2); | |
// Save file | |
wb.save(dataDir + "output.xlsx"); |