PivotTable.AddCalculatedField

AddCalculatedField(string, string, bool)

Adds a calculated field to pivot field.

public void AddCalculatedField(string name, string formula, bool dragToDataArea)
ParameterTypeDescription
nameStringThe name of the calculated field
formulaStringThe formula of the calculated field.
dragToDataAreaBooleanTrue,drag this field to data area immediately

Examples

// Called: pt.AddCalculatedField("testcalfld", "=Sales*2", true);
public void PivotTable_Method_AddCalculatedField()
{
    string filePath = Constants.PivotTableSourcePath + @"NET50981_";

    Workbook wb = new Workbook(filePath + "calField.xlsx");
    Worksheet sheet = wb.Worksheets[0];
    PivotTableCollection pivotTables = sheet.PivotTables;
    PivotTable pt = pivotTables[0];
    pt.AddCalculatedField("testcalfld", "=Sales*2", true);

}

See Also


AddCalculatedField(string, string)

Adds a calculated field to pivot field and drag it to data area.

public void AddCalculatedField(string name, string formula)
ParameterTypeDescription
nameStringThe name of the calculated field
formulaStringThe formula of the calculated field.

Examples

// Called: pivotTable.AddCalculatedField("ChangeInPrem", "=IF(PremiumAtAudit=0,IF(WrittenPremiumAtInception=0,0,-1),IF(WrittenPremiumAtInception=0,IF(PremiumAtAudit<0,(PremiumAtAudit/PremiumAtAudit)*-1,(PremiumAtAudit/PremiumAtAudit)),(PremiumAtAudit-WrittenPremiumAtInception)/WrittenPremiumAtInception))");
public void PivotTable_Method_AddCalculatedField()
{
    string filePath = Constants.PivotTableSourcePath + @"NET45313_";

                  

    string mFullFilePath = filePath + "Sample without Pivots.xlsx";
    string outFilePath = CreateFolder(filePath) + "out.xlsx";


    //Open workbook
    Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();
    Aspose.Cells.Worksheet worksheet;
    Aspose.Cells.WorksheetCollection worksheets;
    //Aspose.Cells.Range range;
    //Aspose.Cells.Cells cells;
    char[] splitchar = { ':' };


    //Open workbook
    workbook = new Aspose.Cells.Workbook(mFullFilePath);

    //Calculate any formulas in the workbook
    workbook.CalculateFormula();

    worksheets = workbook.Worksheets;

    foreach (Aspose.Cells.Worksheet ws in workbook.Worksheets)
    {
        //Freeze top row
        ws.FreezePanes(1, 0, 1, 0);

        //Autofit all columns and rows
        ws.AutoFitColumns();
        ws.AutoFitRows();
    }

    Aspose.Cells.Worksheet detailWorksheet;
    Aspose.Cells.Pivot.PivotTableCollection pivotTables;
    Aspose.Cells.Pivot.PivotTable pivotTable;
    Aspose.Cells.Pivot.PivotField pivotField;
    Aspose.Cells.Pivot.PivotItemCollection pivotItems;
    Aspose.Cells.Pivot.PivotItem pivotItem;
    //Aspose.Cells.Pivot.PivotFieldCollection pivotColumnFields;
    Aspose.Cells.Pivot.PivotFieldCollection pivotDataFields;
    //Aspose.Cells.Pivot.PivotFieldCollection pivotPageFields;

    int pivotTableIndex;

    //Pivot Table font style
    Aspose.Cells.Style style = workbook.CreateStyle();
    style.Font.Size = 9;
    style.Font.Name = "Calibri";



    // Begin GL Audit Summary Pivot Table

    Console.WriteLine("{0} Begin GL Audit Summary pivot", DateTime.Now.ToString());

    detailWorksheet = workbook.Worksheets["GL Audit Detail"];

    worksheet = workbook.Worksheets.Add("GL Audit Summary");
    worksheet.MoveTo(0);

    pivotTables = worksheet.PivotTables;

    pivotTableIndex = pivotTables.Add(string.Format("'GL Audit Detail'!A1:{0}", CellsHelper.CellIndexToName(detailWorksheet.Cells.MaxDataRow, 30)), "A1", "PivotTable1");

    pivotTable = pivotTables[pivotTableIndex];

    pivotTable.PivotTableStyleType = Aspose.Cells.Pivot.PivotTableStyleType.PivotTableStyleLight16;

    pivotTable.ShowValuesRow = false;

    //Remove Grand Total
    pivotTable.ShowRowGrandTotals = false;


    //RowFields
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "ProgramName");

    //Uncheck "(blank)" item
    pivotField = pivotTable.RowFields["ProgramName"];
    pivotField.IsAutoSort = true;
    pivotField.IsAscendSort = true;
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotItems = pivotField.PivotItems;

    if (pivotItems.Count > 1)
    {

        for (int i = 0; i < pivotItems.Count; i++)
        {
            pivotItem = pivotItems[i];
            if (pivotItem.Name != null)
            {
                if (pivotItem.Name.Equals("(blank)"))
                {
                    pivotItem.IsHidden = true;
                }
            }
        }
    }

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

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "InsuredName");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["InsuredName"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "EffDate");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["EffDate"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "ExpDate");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["ExpDate"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "RiskState");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["RiskState"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "ExpBasis");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["ExpBasis"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "FirstAuditRevNumber");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["FirstAuditRevNumber"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "FirstAuditAgingDays");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["FirstAuditAgingDays"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "SecondAuditRevNumber");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["SecondAuditRevNumber"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "SecondAuditAgingDays");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["SecondAuditAgingDays"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "ThirdAuditRevNumber");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["ThirdAuditRevNumber"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "ThirdAuditAgingDays");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["ThirdAuditAgingDays"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "Class");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["Class"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "ClassDescription");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["ClassDescription"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    //DataFields
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "ExposureAtInception");
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "ExposureAtAudit");

    pivotTable.AddCalculatedField("ChangeInExp", "=IF(ExposureAtAudit=0,IF(ExposureAtInception=0,0,-1),IF(ExposureAtInception=0,1,(ExposureAtAudit-ExposureAtInception)/ExposureAtInception))");

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "WrittenPremiumAtInception");
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "WrittenPremiumAllEndorsements");
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "PremiumAtAudit");

    pivotTable.AddCalculatedField("ChangeInPrem", "=IF(PremiumAtAudit=0,IF(WrittenPremiumAtInception=0,0,-1),IF(WrittenPremiumAtInception=0,IF(PremiumAtAudit<0,(PremiumAtAudit/PremiumAtAudit)*-1,(PremiumAtAudit/PremiumAtAudit)),(PremiumAtAudit-WrittenPremiumAtInception)/WrittenPremiumAtInception))");

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

    //Update Captions and NumberFormats
    pivotDataFields = pivotTable.DataFields;

    pivotDataFields["ExposureAtInception"].DisplayName = "Exposure At Inception";
    pivotDataFields["ExposureAtInception"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["ExposureAtAudit"].DisplayName = "Exposure At Audit";
    pivotDataFields["ExposureAtAudit"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["ChangeInExp"].DisplayName = "Change In Exp";
    pivotDataFields["ChangeInExp"].NumberFormat = "0.0%;[Red](0.0%)";

    pivotDataFields["WrittenPremiumAtInception"].DisplayName = "Premium At Inception";
    pivotDataFields["WrittenPremiumAtInception"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["WrittenPremiumAllEndorsements"].DisplayName = "Premium All Endorsements";
    pivotDataFields["WrittenPremiumAllEndorsements"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["PremiumAtAudit"].DisplayName = "Premium At Audit";
    pivotDataFields["PremiumAtAudit"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["ChangeInPrem"].DisplayName = "Change In Prem";
    pivotDataFields["ChangeInPrem"].NumberFormat = "0.0%;[Red](0.0%)";


    pivotTable.FormatAll(style);

    //pivotTable.IsGridDropZones = true;
    pivotTable.RefreshData();
    pivotTable.CalculateData();
    pivotTable.RefreshDataOnOpeningFile = true;

    //Autofit all columns and rows
    worksheet.AutoFitColumns();
    worksheet.AutoFitRows();

    Console.WriteLine("{0} End GL Audit Summary pivot", DateTime.Now.ToString());

    // End GL Audit Summary Pivot Table


    // Begin GL Audit Totals Pivot Table

    Console.WriteLine("{0} Begin GL Audit Totals pivot", DateTime.Now.ToString());

    worksheet = workbook.Worksheets.Add("GL Audit Totals");
    worksheet.MoveTo(workbook.Worksheets["GL Audit Summary"].Index + 1);

    detailWorksheet = workbook.Worksheets["GL Audit Detail"];

    pivotTables = worksheet.PivotTables;

    pivotTableIndex = pivotTables.Add(string.Format("'GL Audit Detail'!A1:{0}", CellsHelper.CellIndexToName(detailWorksheet.Cells.MaxDataRow, 30)), "A1", "PivotTable2");

    pivotTable = pivotTables[pivotTableIndex];


    //RowFields
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "ProgramName");

    //Uncheck "(blank)" item
    pivotField = pivotTable.RowFields["ProgramName"];
    pivotField.IsAutoSort = true;
    pivotField.IsAscendSort = true;

    pivotItems = pivotField.PivotItems;

    if (pivotItems.Count > 1)
    {

        for (int i = 0; i < pivotItems.Count; i++)
        {
            pivotItem = pivotItems[i];
            if (pivotItem.Name != null)
            {
                if (pivotItem.Name.Equals("(blank)"))
                {
                    pivotItem.IsHidden = true;
                }
            }
        }
    }


    //DataFields
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "ExposureAtInception");
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "ExposureAtAudit");

    /*
        THE CODE IS FAILING ON THE FOLLOWING LINE

        From what I can tell, it is due to me re-using the exact same cell range from the previous pivot table

        pivotTableIndex = pivotTables.Add(string.Format("'GL Audit Detail'!A1:{0}", CellsHelper.CellIndexToName(detailWorksheet.Cells.MaxDataRow, 30)), "A1", "PivotTable2");

        If I change the column 30 to something else, like 31, the following line of code does not generate the error
    */
    pivotTable.AddCalculatedField("ChangeInExp", "=IF(ExposureAtAudit=0,IF(ExposureAtInception=0,0,-1),IF(ExposureAtInception=0,1,(ExposureAtAudit-ExposureAtInception)/ExposureAtInception))");

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "WrittenPremiumAtInception");
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "WrittenPremiumAllEndorsements");
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "PremiumAtAudit");

    pivotTable.AddCalculatedField("ChangeInPrem", "=IF(PremiumAtAudit=0,IF(WrittenPremiumAtInception=0,0,-1),IF(WrittenPremiumAtInception=0,IF(PremiumAtAudit<0,(PremiumAtAudit/PremiumAtAudit)*-1,(PremiumAtAudit/PremiumAtAudit)),(PremiumAtAudit-WrittenPremiumAtInception)/WrittenPremiumAtInception))");


    //Update Captions and NumberFormats
    pivotDataFields = pivotTable.DataFields;

    pivotDataFields["ExposureAtInception"].DisplayName = "Exposure At Inception";
    pivotDataFields["ExposureAtInception"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["ExposureAtAudit"].DisplayName = "Exposure At Audit";
    pivotDataFields["ExposureAtAudit"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["ChangeInExp"].DisplayName = "Change In Exp";
    pivotDataFields["ChangeInExp"].NumberFormat = "0.0%;[Red](0.0%)";

    pivotDataFields["WrittenPremiumAtInception"].DisplayName = "Premium At Inception";
    pivotDataFields["WrittenPremiumAtInception"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["WrittenPremiumAllEndorsements"].DisplayName = "Premium All Endorsements";
    pivotDataFields["WrittenPremiumAllEndorsements"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["PremiumAtAudit"].DisplayName = "Premium At Audit";
    pivotDataFields["PremiumAtAudit"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["ChangeInPrem"].DisplayName = "Change In Prem";
    pivotDataFields["ChangeInPrem"].NumberFormat = "0.0%;[Red](0.0%)";


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

    pivotTable.PivotTableStyleType = Aspose.Cells.Pivot.PivotTableStyleType.PivotTableStyleLight16;

    pivotTable.ShowValuesRow = false;

    //Remove Grand Total
    pivotTable.ShowRowGrandTotals = false;


    pivotTable.FormatAll(style);

    //pivotTable.IsGridDropZones = true;

       
    pivotTable.RefreshData();
    pivotTable.CalculateData();
    pivotTable.RefreshDataOnOpeningFile = true;

    //Autofit all columns and rows
    worksheet.AutoFitColumns();
    worksheet.AutoFitRows();

    Console.WriteLine("{0} End GL Audit Totals pivot", DateTime.Now.ToString());

    // End GL Audit Totals Pivot Table


    // Begin GL Audit History Summary Pivot Table

    Console.WriteLine("{0} Begin GL Audit History Summary pivot", DateTime.Now.ToString());

    detailWorksheet = workbook.Worksheets["GL Audit History Detail"];

    worksheet = workbook.Worksheets.Add("GL Audit History Summary");
    worksheet.MoveTo(workbook.Worksheets["GL Audit Totals"].Index + 1);

    pivotTables = worksheet.PivotTables;

    pivotTableIndex = pivotTables.Add(string.Format("'GL Audit History Detail'!A1:{0}", CellsHelper.CellIndexToName(detailWorksheet.Cells.MaxDataRow, 30)), "A1", "PivotTable3");

    pivotTable = pivotTables[pivotTableIndex];

    pivotTable.PivotTableStyleType = Aspose.Cells.Pivot.PivotTableStyleType.PivotTableStyleLight16;

    pivotTable.ShowValuesRow = false;

    //Remove Grand Total
    pivotTable.ShowRowGrandTotals = false;


    //RowFields
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "ProgramName");

    //Uncheck "(blank)" item
    pivotField = pivotTable.RowFields["ProgramName"];
    pivotField.IsAutoSort = true;
    pivotField.IsAscendSort = true;
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotItems = pivotField.PivotItems;

    if (pivotItems.Count > 1)
    {

        for (int i = 0; i < pivotItems.Count; i++)
        {
            pivotItem = pivotItems[i];
            if (pivotItem.Name != null)
            {
                if (pivotItem.Name.Equals("(blank)"))
                {
                    pivotItem.IsHidden = true;
                }
            }
        }
    }

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "PolicyNumber");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["PolicyNumber"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "InsuredName");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["InsuredName"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "EffDate");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["EffDate"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "ExpDate");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["ExpDate"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "RiskState");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["RiskState"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "ExpBasis");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["ExpBasis"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "FirstAuditRevNumber");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["FirstAuditRevNumber"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "FirstAuditAgingDays");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["FirstAuditAgingDays"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "SecondAuditRevNumber");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["SecondAuditRevNumber"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "SecondAuditAgingDays");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["SecondAuditAgingDays"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "ThirdAuditRevNumber");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["ThirdAuditRevNumber"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "ThirdAuditAgingDays");
    //Hide Subtotal
    pivotField = pivotTable.RowFields["ThirdAuditAgingDays"];
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);


    //DataFields
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "ExposureAtInception");
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "ExposureAtAudit");

    pivotTable.AddCalculatedField("ChangeInExp", "=IF(ExposureAtAudit=0,IF(ExposureAtInception=0,0,-1),IF(ExposureAtInception=0,1,(ExposureAtAudit-ExposureAtInception)/ExposureAtInception))");

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "WrittenPremiumAtInception");
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "WrittenPremiumAllEndorsements");
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "PremiumAtAudit");

    pivotTable.AddCalculatedField("ChangeInPrem", "=IF(PremiumAtAudit=0,IF(WrittenPremiumAtInception=0,0,-1),IF(WrittenPremiumAtInception=0,IF(PremiumAtAudit<0,(PremiumAtAudit/PremiumAtAudit)*-1,(PremiumAtAudit/PremiumAtAudit)),(PremiumAtAudit-WrittenPremiumAtInception)/WrittenPremiumAtInception))");

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

    //Update Captions and NumberFormats
    pivotDataFields = pivotTable.DataFields;

    pivotDataFields["ExposureAtInception"].DisplayName = "Exposure At Inception";
    pivotDataFields["ExposureAtInception"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["ExposureAtAudit"].DisplayName = "Exposure At Audit";
    pivotDataFields["ExposureAtAudit"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["ChangeInExp"].DisplayName = "Change In Exp";
    pivotDataFields["ChangeInExp"].NumberFormat = "0.0%;[Red](0.0%)";

    pivotDataFields["WrittenPremiumAtInception"].DisplayName = "Premium At Inception";
    pivotDataFields["WrittenPremiumAtInception"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["WrittenPremiumAllEndorsements"].DisplayName = "Premium All Endorsements";
    pivotDataFields["WrittenPremiumAllEndorsements"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["PremiumAtAudit"].DisplayName = "Premium At Audit";
    pivotDataFields["PremiumAtAudit"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["ChangeInPrem"].DisplayName = "Change In Prem";
    pivotDataFields["ChangeInPrem"].NumberFormat = "0.0%;[Red](0.0%)";


    pivotTable.FormatAll(style);

    //pivotTable.IsGridDropZones = true;

    pivotTable.RefreshData();
    pivotTable.CalculateData();
    pivotTable.RefreshDataOnOpeningFile = true;

    //Autofit all columns and rows
    worksheet.AutoFitColumns();
    worksheet.AutoFitRows();

    Console.WriteLine("{0} End GL Audit History Summary pivot", DateTime.Now.ToString());

    // End GL Audit History Summary Pivot Table


    // Begin GL Audit History Totals Pivot Table

    Console.WriteLine("{0} Begin GL Audit History Totals pivot", DateTime.Now.ToString());

    detailWorksheet = workbook.Worksheets["GL Audit History Detail"];

    worksheet = workbook.Worksheets.Add("GL Audit History Totals");
    worksheet.MoveTo(workbook.Worksheets["GL Audit History Summary"].Index + 1);

    pivotTables = worksheet.PivotTables;

    pivotTableIndex = pivotTables.Add(string.Format("'GL Audit History Detail'!A1:{0}", CellsHelper.CellIndexToName(detailWorksheet.Cells.MaxDataRow, 30)), "A1", "PivotTable4");

    pivotTable = pivotTables[pivotTableIndex];

    pivotTable.PivotTableStyleType = Aspose.Cells.Pivot.PivotTableStyleType.PivotTableStyleLight16;

    pivotTable.ShowValuesRow = false;

    //Remove Grand Total
    pivotTable.ShowRowGrandTotals = false;

    //RowFields
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, "ProgramName");

    //Uncheck "(blank)" item
    pivotField = pivotTable.RowFields["ProgramName"];
    pivotField.IsAutoSort = true;
    pivotField.IsAscendSort = true;
    pivotField.SetSubtotals(Aspose.Cells.Pivot.PivotFieldSubtotalType.Automatic, false);

    pivotItems = pivotField.PivotItems;

    if (pivotItems.Count > 1)
    {

        for (int i = 0; i < pivotItems.Count; i++)
        {
            pivotItem = pivotItems[i];
            if (pivotItem.Name != null)
            {
                if (pivotItem.Name.Equals("(blank)"))
                {
                    pivotItem.IsHidden = true;
                }
            }
        }
    }


    //DataFields
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "ExposureAtInception");
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "ExposureAtAudit");

    pivotTable.AddCalculatedField("ChangeInExp", "=IF(ExposureAtAudit=0,IF(ExposureAtInception=0,0,-1),IF(ExposureAtInception=0,1,(ExposureAtAudit-ExposureAtInception)/ExposureAtInception))");

    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "WrittenPremiumAtInception");
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "WrittenPremiumAllEndorsements");
    pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, "PremiumAtAudit");

    pivotTable.AddCalculatedField("ChangeInPrem", "=IF(PremiumAtAudit=0,IF(WrittenPremiumAtInception=0,0,-1),IF(WrittenPremiumAtInception=0,IF(PremiumAtAudit<0,(PremiumAtAudit/PremiumAtAudit)*-1,(PremiumAtAudit/PremiumAtAudit)),(PremiumAtAudit-WrittenPremiumAtInception)/WrittenPremiumAtInception))");

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

    //Update Captions and NumberFormats
    pivotDataFields = pivotTable.DataFields;

    pivotDataFields["ExposureAtInception"].DisplayName = "Exposure At Inception";
    pivotDataFields["ExposureAtInception"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["ExposureAtAudit"].DisplayName = "Exposure At Audit";
    pivotDataFields["ExposureAtAudit"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["ChangeInExp"].DisplayName = "Change In Exp";
    pivotDataFields["ChangeInExp"].NumberFormat = "0.0%;[Red](0.0%)";

    pivotDataFields["WrittenPremiumAtInception"].DisplayName = "Premium At Inception";
    pivotDataFields["WrittenPremiumAtInception"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["WrittenPremiumAllEndorsements"].DisplayName = "Premium All Endorsements";
    pivotDataFields["WrittenPremiumAllEndorsements"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["PremiumAtAudit"].DisplayName = "Premium At Audit";
    pivotDataFields["PremiumAtAudit"].NumberFormat = "$#,##0.00_);[Red]($#,##0.00)";

    pivotDataFields["ChangeInPrem"].DisplayName = "Change In Prem";
    pivotDataFields["ChangeInPrem"].NumberFormat = "0.0%;[Red](0.0%)";


    pivotTable.FormatAll(style);

    //pivotTable.IsGridDropZones = true;

           
    pivotTable.RefreshData();
    pivotTable.CalculateData();
          
    pivotTable.RefreshDataOnOpeningFile = true;

    //Autofit all columns and rows
    worksheet.AutoFitColumns();
    worksheet.AutoFitRows();

    Console.WriteLine("{0} End GL Audit History Totals pivot", DateTime.Now.ToString());

    workbook.Save(outFilePath);
}

See Also