internal ConditionalFormattingRule ToConditionalFormattingRule()
        {
            var cfr = new ConditionalFormattingRule();

            cfr.Type = Type;
            if (FormatId != null)
            {
                cfr.FormatId = FormatId.Value;
            }
            cfr.Priority = Priority;
            if (StopIfTrue)
            {
                cfr.StopIfTrue = StopIfTrue;
            }
            if (!AboveAverage)
            {
                cfr.AboveAverage = AboveAverage;
            }
            if (Percent)
            {
                cfr.Percent = Percent;
            }
            if (Bottom)
            {
                cfr.Bottom = Bottom;
            }
            if (HasOperator)
            {
                cfr.Operator = Operator;
            }
            if ((Text != null) && (Text.Length > 0))
            {
                cfr.Text = Text;
            }
            if (HasTimePeriod)
            {
                cfr.TimePeriod = TimePeriod;
            }
            if (Rank != null)
            {
                cfr.Rank = Rank.Value;
            }
            if (StdDev != null)
            {
                cfr.StdDev = StdDev.Value;
            }
            if (EqualAverage)
            {
                cfr.EqualAverage = EqualAverage;
            }

            foreach (var f in Formulas)
            {
                cfr.Append((Formula)f.CloneNode(true));
            }
            if (HasColorScale)
            {
                cfr.Append(ColorScale.ToColorScale());
            }
            if (HasDataBar)
            {
                cfr.Append(DataBar.ToDataBar());
            }
            if (HasIconSet)
            {
                cfr.Append(IconSet.ToIconSet());
            }

            if (Extensions.Count > 0)
            {
                var extlist = new ConditionalFormattingRuleExtensionList();
                foreach (var ext in Extensions)
                {
                    extlist.Append((ConditionalFormattingRuleExtension)ext.CloneNode(true));
                }
                cfr.Append(extlist);
            }

            return(cfr);
        }