Ange den absoluta positionen för Pivot Item
Ibland behöver användaren ange den absoluta positionen för pivotobjekten. Aspose.Cells API har exponerat några nya egenskaper och en metod för att uppfylla detta användarkrav.
- Lagt till egenskapen PivotItem.setPosition() som kan användas för att ange positionens index för alla PivotItems oavsett föräldernod. Lagt till egenskapen PivotItem.setPositionInSameParentNode() som kan användas för att ange positionens index för PivotItems under samma föräldernod.
- Tillagt PivotItem.move(int count, boolean isSameParent)-metod för att flytta objektet uppåt eller nedåt baserat på räkningsvärdet, där räkningen är antalet positioner att flytta PivotItem uppåt eller nedåt. Om räkningsvärdet är mindre än noll flyttas objektet uppåt medan om räkningsvärdet är större än noll kommer PivotItem att flyttas nedåt, Boolean-typen ärSameParent- parameter som anger om flyttoperationen måste utföras i samma föräldernod eller inte.
- Ogiltigförklarade metoden PivotItem.move(int count), därför rekommenderas det att istället använda den nyttillagda metoden PivotItem.move(int count, boolean isSameParent).
Observera att det är nödvändigt att anropa metoderna PivotTable.refreshData and PivotTable.calculateData innan du använder egenskaperna PivotItem.setPosition(), PivotItem.setPositionInSameParentNode() och metoden PivotItem.move(int count, boolean isSameParent).
Exempelkod
Följande exempelkod skapar en pivot-tabell och anger sedan pivotobjektens positioner i samma föräldernod.
// 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"); |