如何提供基于Aspose.Cells数据透视表中另外两个值的计算值?
我将数据字段添加到数据透视表如下所示:
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除以Total Qty。
这可能吗? 如果是这样,我该怎么做?
我可以为源数据表创build另一个列,其中包含这个值,只是引用它,但如果我可以通过使用一些计算“欺骗”来避免这样做,那么将是可取的。
我通过在我的源数据表中添加一个额外的列来解决这个问题,通过进行上述计算(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);