ピボットアイテムの絶対位置を指定する
Contents
[
Hide
]
場合によっては、ユーザーはピボット項目の絶対位置を指定する必要があります。Aspose.Cells API は、このユーザー要件を達成するためのいくつかの新しいプロパティとメソッドを公開しました。
- 追加したPivotItem.setPosition()親ノードに関係なく、すべての PivotItems の位置インデックスを指定するために使用できるプロパティ。追加したPivotItem.setPositionInSameParentNode()同じ親ノードの下の PivotItems で位置インデックスを指定するために使用できるプロパティ。
- 追加した[PivotItem.move(int count, boolean isSameParent)](https://reference.aspose.com/cells/java/com.aspose.cells/pivotitem#move(int,%20boolean)メソッドを使用して、カウント値に基づいて項目を上下に移動します。カウントは、PivotItem を上下に移動する位置の数です。カウント値が 0 より小さい場合、アイテムは上に移動し、カウント値が 0 より大きい場合、PivotItem は下に移動します。ブール型の isSameParent パラメーターは、移動操作を同じ親ノードで実行する必要があるかどうかを指定します。いいえ。
- 廃止された*PivotItem.move(整数カウント)*メソッド、したがって、新しく追加されたメソッドを使用することをお勧めします[PivotItem.move(int count, boolean isSameParent)](https://reference.aspose.com/cells/java/com.aspose.cells/pivotitem#move(int,%20boolean)) 代わりは。
に電話する必要があることに注意してください。[PivotTable.refreshData](https://reference.aspose.com/cells/java/com.aspose.cells/pivottable#refreshData() ) と[PivotTable.calculateData](https://reference.aspose.com/cells/java/com.aspose.cells/pivottable#calculateData() )メソッドを使用する前にPivotItem.setPosition(), PivotItem.setPositionInSameParentNode()プロパティと[PivotItem.move(int count, boolean isSameParent)](https://reference.aspose.com/cells/java/com.aspose.cells/pivotitem#move(int,%20boolean)) 方法。
サンプルコード
次のサンプル コードは、ピボット テーブルを作成し、同じ親ノードでピボット アイテムの位置を指定します。
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-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"); |