تحديد الموقع المطلق لبند جدول الإحصائيات المحورية
أحيانًا ، يحتاج المستخدم إلى تحديد الموقع المطلق لعناصر جدول الإحصائيات المحورية ، API لـ Aspose.Cells قد فتحت خصائص وطريقة جديدة لتحقيق هذه الاحتياجات.
- تمت إضافة PivotItem.setPosition() الخاصية التي يمكن استخدامها لتحديد مؤشر الموقع في كافة PivotItems بغض النظر عن العقدة الأم. تمت إضافة PivotItem.setPositionInSameParentNode() للخاصية التي يمكن استخدامها لتحديد مؤشر الموقع في PivotItems تحت نفس العقدة الأم.
- تمت إضافة الطريقة PivotItem.move(int count, boolean isSameParent) من أجل نقل العنصر لأعلى أو لأسفل استنادًا إلى قيمة العدد، حيث يكون العدد هو عدد المواقف التي يجب نقل عنصر الجدول المحوري لأعلى أو لأسفل. إذا كانت قيمة العدد أقل من الصفر، فسيتم نقل العنصر لأعلى بينما إذا كانت قيمة العدد أكبر من الصفر، فسيتم نقل عنصر الجدول المحوري لأسفل، طراز البيانات المنطقية هو الباراميتر الذي يحدد ما إذا كان يجب تنفيذ عملية النقل في نفس عقد الأصل أم لا.
- تم إهمال الطريقة PivotItem.move(int count)، لذا يُقترح استخدام الطريقة المضافة حديثًا PivotItem.move(int count, boolean isSameParent) بدلاً من ذلك.
يرجى ملاحظة أنه من الضروري استدعاء الطريقة PivotTable.refreshData و PivotTable.calculateData قبل استخدام PivotItem.setPosition()، خصائص PivotItem.setPositionInSameParentNode() و PivotItem.move(int count, boolean isSameParent).
كود عينة
يقوم الكود العينة التالي بإنشاء جدول إحصائيات محوري ومن ثم يُحدد مواقع عناصر الجدول المحوري في نفس العقدة الأم.
// 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"); |