如何通过特定单元格(Aspose Cells)中的值来订购数据透视表的范围?

时间:2016-11-18 23:23:23

标签: excel pivot-table aspose-cells

我需要通过其中一个范围的单元格中的范围(每个范围覆盖四行)来排序。这是第一批数据的外观:

enter image description here

我需要通过< Total of TotalPrice"的总和中的单元格中的值来对它们进行排序。和#34; 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;

......但它对我不起作用;它失败了,"你不能操作这个领域"在这一行:

field.IsAscendSort = false;

1 个答案:

答案 0 :(得分:0)

我们需要您的模板Excel文件(如果有),输出Aspose.Cells API的Excel文件(包含数据透视表)和Excel文件,您可以在Ms Excel中手动创建,该文件应包含数据透视表,其中包含所需的订单集基础范围。我们建议您跟进Aspose论坛thread

我是Aspose的支持开发人员/传播者。