如何提供基于 Aspose.Cells 数据透视表中的其他两个值的计算值?

How can I provide a calculated value that is based on two other values in an Aspose.Cells PivotTable?

我正在向数据透视表中添加数据字段,如下所示:

int TOTALQTY_COLUMN = 4;
int TOTALPRICE_COLUMN = 5;
. . .
pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, TOTALQTY_COLUMN);
pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, TOTALPRICE_COLUMN);

或者,提供更多上下文:

Aspose.Cells.Pivot.PivotTableCollection pivotTables = pivotTableSheet.PivotTables;
int colcount = COLUMNS_IN_DATA_SHEET; 
string lastColAsStr = ReportRunnerConstsAndUtils.GetExcelColumnName(colcount);
int rowcount = sourceDataSheet.Cells.Rows.Count;
string sourceDataArg = string.Format("sourceDataSheet!A1:{0}{1}", lastColAsStr, rowcount);
int index = pivotTableSheet.PivotTables.Add(sourceDataArg, "A7", "PivotTableSheet");
Aspose.Cells.Pivot.PivotTable pivotTable = pivotTables[index];

pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, DESCRIPTION_COLUMN);

pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Column, MONTHYR_COLUMN);

pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, TOTALQTY_COLUMN);
pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, TOTALPRICE_COLUMN);

我需要另一个数据字段,它基于提供给这两个数据字段的值(来自源数据的 TOTALQTY_COLUMN 和 TOTALPRICE_COLUMN 列),特别是 TotalPrice 除以总数量。

这可能吗?如果可以,我该怎么做?

我可以为包含此值的源数据 sheet 创建另一列并仅引用它,但如果我可以通过使用一些计算来避免这样做 "trickery" 则更好.

我通过在我的源数据中添加一个额外的列来解决这个问题 sheet,通过进行上述计算 (TotalPrice / TotalQty) 来填充它:

decimal avgPrice = 0.0M;
if ((TotalPrice > 0.0M) && (Quantity > 0))
{
    avgPrice = TotalPrice/Quantity;
}
cell = sourceDataSheet.Cells[_lastRowAddedPivotTableData, 10];
cell.PutValue(Math.Round(avgPrice, 2));

...然后相应地引用该新数据源列:

pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, AVGPRICE_COLUMN);