如何根据特定单元格 (Aspose Cells) 中的值对数据透视表的范围进行排序?

How can I order a PivotTable's ranges by the value in a particular cell (Aspose Cells)?

我需要按范围的其中一个单元格中的值对范围(每个范围包含四行)进行排序。这是第一组数据的样子:

我需要根据 "Sum of TotalPrice" 和 "Grand Total" 并列的单元格中的值对它们进行排序。所以在显示的数据中,顺序应该是:

ASPARAGUS, STANDARD 11/1#
LETTUCE, SPRING MIX 3#
ASPARAGUS, LARGE 11/1#
LETTUCE, ROMAINE HEARTS 48 CT
CUCUMBERS, ENGLISH (SDLS) 12-14 CT
TOMATOES, 5x6 LOOSE X-LG 25#
CARROTS, BABY PEELED W/TOPS 5# (IMPORT)
TOMATOES, CHERRI 12/1 PT

如何使用 Aspose Cells 做到这一点?

在Excel Interop(对于其中一些报告来说是站不住脚的,因为它甚至不会生成更大的报告,即使在几个小时后,而 Aspose Cells 可以在几分钟内生成它们),代码是这个:

// These two lines don't seem that they would do so, but they do result in the items 
// being sorted by (grand) total purchases descending
var fld = ((PivotField)pvt.PivotFields("Description"));
fld.AutoSort(2, "Total Purchases");

正如评论所指出的,为什么这个作品对我来说是个谜,而且肯定是在 Aspose Cells 中做到这一点的方法,而且可能更容易理解,但究竟是如何做到的问题。

更新

以下代码:

pivotTable.DataFields[0].DisplayName = "Total Packages";
pivotTable.DataFields[1].DisplayName = "Total Purchases";
pivotTable.DataFields[2].DisplayName = "Avg Purchase";
pivotTable.DataFields[3].DisplayName = "% of Total";

pivotTable.RowFields[0].ShowInOutlineForm = true;
pivotTable.RowFields[0].ShowCompact = true;

PivotField field = pivotTable.RowFields[1];
field.IsAutoSort = true;
field.IsAscendSort = false;
field.AutoSortField = 1; // 0 based indexed position in the PivotTable.DataFields

pivotTable.PivotTableStyleType = PivotTableStyleType.PivotTableStyleLight16;

pivotTable.RefreshDataFlag = true;
pivotTable.RefreshData();
pivotTable.CalculateData();
pivotTable.RefreshDataFlag = false;

...但它对我不起作用;它失败了,"You can't operate the field" 这一行:

field.IsAscendSort = false;

我们需要您的模板 Excel 文件(如果有),通过 Aspose.Cells API 和 Excel 输出 Excel 文件(包含 Pivot Table)您可以在 Ms Excel 中手动创建的文件,该文件应包含 PivotTable 以及您为基础范围设置的所需顺序。我们建议您关注您的 Aspose 论坛 thread.

我在 Aspose 担任支持开发人员/传播者。