我正在将数据字段添加到数据透视表中,如下所示:
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除以总数量。
这可能吗?如果是这样,我该怎么做?
我可以为源数据表创建另一个包含此值的列,并仅引用它,但如果我可以通过使用某些计算“trickery”来避免这样做,那将是更好的。
答案 0 :(得分:2)
我通过在源数据表中添加一个额外的列来解决这个问题,通过进行上述计算来填充它(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);