Ange den absoluta positionen för pivotobjektet
Contents
[
Hide
]
Ibland måste användaren specificera den absoluta positionen för pivotposterna, Aspose.Cells API har exponerat få nya egenskaper och en metod för att uppnå användarkrav.
- Lagt tillPivotItem.Position egenskap som kan användas för att ange positionsindex i alla PivotItems oavsett föräldernod. Lagt tillPivotItem.PositionInSameParentNode egenskap som kan användas för att ange positionsindex i PivotItems under samma överordnade nod.
- Lagt tillPivotItem.Move(int count, bool isSameParent)metod för att flytta objektet uppåt eller nedåt baserat på räknevärdet, där count är antalet positioner för att flytta PivotItem uppåt eller nedåt. Om räknevärdet är mindre än noll, kommer objektet att flyttas uppåt, där som om räknevärdet är större än noll, kommer PivotItem att flyttas nedåt, boolesk typ isSameParent parametern anger om flyttoperationen måste utföras i samma överordnade nod eller inte.
- Föråldrad denPivotItem.Move(int count) metod, därför föreslås det att använda den nyligen tillagda metodenPivotItem.Move(int count, bool isSameParent) istället.
Följande exempelkod skapar en pivottabell och anger sedan pivotobjektens positioner i samma överordnade nod. Du kan ladda nerkäll Excel ochutgång Excel filer för din referens. Om du öppnar den utgående Excel-filen kommer du att se pivotobjektet “4H12” är på 0:e positionen i överordnat “K11” och “DIF400” är på 3:e positionen. På samma sätt är CA32 i position 1 och AAA3 är i position 2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
Workbook wb = new Workbook(dataDir + "source.xlsx"); | |
Worksheet wsPivot = wb.Worksheets.Add("pvtNew Hardware"); | |
Worksheet wsData = wb.Worksheets["New Hardware - Yearly"]; | |
// Get the pivottables collection for the pivot sheet | |
PivotTableCollection pivotTables = wsPivot.PivotTables; | |
// Add PivotTable to the worksheet | |
int index = pivotTables.Add("='New Hardware - Yearly'!A1:D621", "A3", "HWCounts_PivotTable"); | |
// Get the PivotTable object | |
PivotTable pvtTable = pivotTables[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.RowFields["Vendor"]; | |
pivotField.SetSubtotals(PivotFieldSubtotalType.None, true); | |
// Turn off grand total | |
pvtTable.ColumnGrand = 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.RowFields["Item"].PivotItems["4H12"].PositionInSameParentNode = 0; | |
pvtTable.RowFields["Item"].PivotItems["DIF400"].PositionInSameParentNode = 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.RowFields["Item"].PivotItems["CA32"].PositionInSameParentNode = 1; | |
pvtTable.RowFields["Item"].PivotItems["AAA3"].PositionInSameParentNode = 2; | |
// Save file | |
wb.Save(dataDir + "output_out.xlsx"); |
Observera att det är nödvändigt att anropa metoderna PivotTable.RefreshData och PivotTable.CalculateData innan du använderPivotItem.Position, PivotItem.PositionInSameParentNode fastigheter ochPivotItem.Move(int count, bool isSameParent) metod.