/// <summary>
 /// Highlight cells with values compared to the average.
 /// </summary>
 /// <param name="AverageType">The type of comparison to the average.</param>
 /// <param name="HighlightStyle">A custom formatted style. Note that only number formats, fonts, borders and fills are used. Note further that for fonts, only italic/bold, underline, color and strikethrough settings are used.</param>
 public void HighlightCellsAboveAverage(SLHighlightCellsAboveAverageValues AverageType, SLStyle HighlightStyle)
 {
     this.HighlightCellsAboveAverage(AverageType, this.TranslateToDifferentialFormat(HighlightStyle));
 }
        private void HighlightCellsAboveAverage(SLHighlightCellsAboveAverageValues AverageType, SLDifferentialFormat HighlightStyle)
        {
            SLConditionalFormattingRule cfr = new SLConditionalFormattingRule();
            cfr.Type = ConditionalFormatValues.AboveAverage;

            switch (AverageType)
            {
                case SLHighlightCellsAboveAverageValues.Above:
                    // that's all is needed!
                    break;
                case SLHighlightCellsAboveAverageValues.Below:
                    cfr.AboveAverage = false;
                    break;
                case SLHighlightCellsAboveAverageValues.EqualOrAbove:
                    cfr.EqualAverage = true;
                    break;
                case SLHighlightCellsAboveAverageValues.EqualOrBelow:
                    cfr.EqualAverage = true;
                    cfr.AboveAverage = false;
                    break;
                case SLHighlightCellsAboveAverageValues.OneStdDevAbove:
                    cfr.StdDev = 1;
                    break;
                case SLHighlightCellsAboveAverageValues.OneStdDevBelow:
                    cfr.AboveAverage = false;
                    cfr.StdDev = 1;
                    break;
                case SLHighlightCellsAboveAverageValues.TwoStdDevAbove:
                    cfr.StdDev = 2;
                    break;
                case SLHighlightCellsAboveAverageValues.TwoStdDevBelow:
                    cfr.AboveAverage = false;
                    cfr.StdDev = 2;
                    break;
                case SLHighlightCellsAboveAverageValues.ThreeStdDevAbove:
                    cfr.StdDev = 3;
                    break;
                case SLHighlightCellsAboveAverageValues.ThreeStdDevBelow:
                    cfr.AboveAverage = false;
                    cfr.StdDev = 3;
                    break;
            }

            cfr.DifferentialFormat = HighlightStyle.Clone();
            cfr.HasDifferentialFormat = true;

            this.AppendRule(cfr);
        }