Specificare la posizione assoluta dell elemento della tabella pivot
A volte, l’utente ha bisogno di specificare la posizione assoluta degli elementi della tabella pivot. Aspose.Cells API ha esposto alcune nuove proprietà e un metodo per soddisfare questo requisito dell’utente.
- Aggiunta la proprietà PivotItem.setPosition() che può essere utilizzata per specificare l’indice di posizione in tutti i PivotItems indipendentemente dal nodo genitore. Aggiunta la proprietà PivotItem.setPositionInSameParentNode() che può essere utilizzata per specificare l’indice di posizione nei PivotItems sotto lo stesso nodo genitore.
- Aggiunto il metodo PivotItem.move(int count, boolean isSameParent) per spostare l’elemento su o giù in base al valore del conteggio, dove il conteggio è il numero di posizioni in cui spostare il PivotItem su o giù. Se il valore del conteggio è inferiore a zero, l’elemento verrà spostato su, mentre se il valore del conteggio è maggiore di zero, il PivotItem si sposterà giù, il parametro di tipo Booleano isSameParent specifica se l’operazione di spostamento deve essere eseguita nello stesso nodo genitore o no.
- Obsoleto il metodo PivotItem.move(int count), pertanto, si consiglia di utilizzare il nuovo metodo PivotItem.move(int count, boolean isSameParent) al suo posto.
Si prega di notare che è necessario chiamare i metodi PivotTable.refreshData e PivotTable.calculateData prima di utilizzare le proprietà PivotItem.setPosition(), PivotItem.setPositionInSameParentNode() e il metodo PivotItem.move(int count, boolean isSameParent).
Codice di esempio
Il seguente codice di esempio crea una tabella pivot e poi specifica le posizioni dei Pivot Items nello stesso nodo genitore.
// 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"); |