Указание абсолютного положения элемента сводки
Contents
[
Hide
]
Иногда пользователю необходимо указать абсолютную позицию элементов сводки, Aspose.Cells API предоставил несколько новых свойств и метод для выполнения требований пользователя.
- ДобавленPivotItem.Position свойство, которое можно использовать для указания индекса позиции во всех PivotItems независимо от родительского узла. ДобавленPivotItem.PositionInSameParentNode свойство, которое можно использовать для указания индекса позиции в PivotItems под тем же родительским узлом.
- ДобавленPivotItem.Move (целое число, логическое значение isSameParent)для перемещения элемента вверх или вниз в зависимости от значения счетчика, где счетчик — это номер позиции, на которую нужно переместить PivotItem вверх или вниз. Если значение счетчика меньше нуля, элемент будет перемещен вверх, а если значение счетчика больше нуля, PivotItem переместится вниз, логический параметр isSameParent указывает, должна ли операция перемещения выполняться в том же родительском узле. или не.
- УстарелоPivotItem.Move(целое число) метод, поэтому предлагается использовать недавно добавленный методPivotItem.Move (целое число, логическое значение isSameParent) вместо.
Следующий пример кода создает сводную таблицу, а затем указывает позиции сводных элементов в том же родительском узле. Вы можете скачатьисходный файл Excel ивывод Excel файлы для справки. Если вы откроете выходной файл Excel, вы увидите, что сводной элемент «4H12» находится на 0-й позиции в родительском «K11», а «DIF400» — на 3-й позиции. Точно так же CA32 находится в позиции 1, а AAA3 — в позиции 2.
This file contains 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"); |
Обратите внимание, перед использованием необходимо вызвать методы PivotTable.RefreshData и PivotTable.CalculateData.PivotItem.Position, PivotItem.PositionInSameParentNode свойства иPivotItem.Move (целое число, логическое значение isSameParent) метод.