public IConditionalFormattingRule CreateConditionalFormattingRule(ComparisonOperator comparisonOperation, string formula1, string formula2)
        {
            XSSFConditionalFormattingRule conditionalFormattingRule = new XSSFConditionalFormattingRule(this._sheet);
            CT_CfRule ctCfRule = conditionalFormattingRule.GetCTCfRule();

            ctCfRule.AddFormula(formula1);
            if (formula2 != null)
            {
                ctCfRule.AddFormula(formula2);
            }
            ctCfRule.type = ST_CfType.cellIs;
            ST_ConditionalFormattingOperator formattingOperator;

            switch (comparisonOperation)
            {
            case ComparisonOperator.BETWEEN:
                formattingOperator = ST_ConditionalFormattingOperator.between;
                break;

            case ComparisonOperator.NOT_BETWEEN:
                formattingOperator = ST_ConditionalFormattingOperator.notBetween;
                break;

            case ComparisonOperator.EQUAL:
                formattingOperator = ST_ConditionalFormattingOperator.equal;
                break;

            case ComparisonOperator.NOT_EQUAL:
                formattingOperator = ST_ConditionalFormattingOperator.notEqual;
                break;

            case ComparisonOperator.GT:
                formattingOperator = ST_ConditionalFormattingOperator.greaterThan;
                break;

            case ComparisonOperator.LT:
                formattingOperator = ST_ConditionalFormattingOperator.lessThan;
                break;

            case ComparisonOperator.GE:
                formattingOperator = ST_ConditionalFormattingOperator.greaterThanOrEqual;
                break;

            case ComparisonOperator.LE:
                formattingOperator = ST_ConditionalFormattingOperator.lessThanOrEqual;
                break;

            default:
                throw new ArgumentException("Unknown comparison operator: " + (object)comparisonOperation);
            }
            ctCfRule.@operator = formattingOperator;
            return((IConditionalFormattingRule)conditionalFormattingRule);
        }
        /**
         * A factory method allowing to create a conditional formatting rule
         * with a cell comparison operator<p/>
         * TODO - formulas Containing cell references are currently not Parsed properly
         *
         * @param comparisonOperation - a constant value from
         *		 <tt>{@link NPOI.hssf.record.CFRuleRecord.ComparisonOperator}</tt>: <p>
         * <ul>
         *		 <li>BETWEEN</li>
         *		 <li>NOT_BETWEEN</li>
         *		 <li>EQUAL</li>
         *		 <li>NOT_EQUAL</li>
         *		 <li>GT</li>
         *		 <li>LT</li>
         *		 <li>GE</li>
         *		 <li>LE</li>
         * </ul>
         * </p>
         * @param formula1 - formula for the valued, Compared with the cell
         * @param formula2 - second formula (only used with
         * {@link NPOI.ss.usermodel.ComparisonOperator#BETWEEN}) and
         * {@link NPOI.ss.usermodel.ComparisonOperator#NOT_BETWEEN} operations)
         */
        public IConditionalFormattingRule CreateConditionalFormattingRule(
            ComparisonOperator comparisonOperation,
            String formula1,
            String formula2)
        {
            XSSFConditionalFormattingRule rule = new XSSFConditionalFormattingRule(_sheet);
            CT_CfRule cfRule = rule.GetCTCfRule();

            cfRule.AddFormula(formula1);
            if (formula2 != null)
            {
                cfRule.AddFormula(formula2);
            }
            cfRule.type = (ST_CfType.cellIs);
            ST_ConditionalFormattingOperator operator1;

            switch (comparisonOperation)
            {
            case ComparisonOperator.Between:
                operator1 = ST_ConditionalFormattingOperator.between; break;

            case ComparisonOperator.NotBetween:
                operator1 = ST_ConditionalFormattingOperator.notBetween; break;

            case ComparisonOperator.LessThan:
                operator1 = ST_ConditionalFormattingOperator.lessThan; break;

            case ComparisonOperator.LessThanOrEqual:
                operator1 = ST_ConditionalFormattingOperator.lessThanOrEqual; break;

            case ComparisonOperator.GreaterThan:
                operator1 = ST_ConditionalFormattingOperator.greaterThan; break;

            case ComparisonOperator.GreaterThanOrEqual:
                operator1 = ST_ConditionalFormattingOperator.greaterThanOrEqual; break;

            case ComparisonOperator.Equal:
                operator1 = ST_ConditionalFormattingOperator.equal; break;

            case ComparisonOperator.NotEqual:
                operator1 = ST_ConditionalFormattingOperator.notEqual; break;

            default:
                throw new ArgumentException("Unknown comparison operator: " + comparisonOperation);
            }
            cfRule.@operator = (operator1);

            return(rule);
        }
        /**
         * A factory method allowing to create a conditional formatting rule with a formula.<br>
         *
         * @param formula - formula for the valued, Compared with the cell
         */
        public IConditionalFormattingRule CreateConditionalFormattingRule(String formula)
        {
            XSSFConditionalFormattingRule rule = new XSSFConditionalFormattingRule(_sheet);
            CT_CfRule cfRule = rule.GetCTCfRule();

            cfRule.AddFormula(formula);
            cfRule.type = ST_CfType.expression;
            return(rule);
        }
        public IConditionalFormattingRule CreateConditionalFormattingRule(string formula)
        {
            XSSFConditionalFormattingRule conditionalFormattingRule = new XSSFConditionalFormattingRule(this._sheet);
            CT_CfRule ctCfRule = conditionalFormattingRule.GetCTCfRule();

            ctCfRule.AddFormula(formula);
            ctCfRule.type = ST_CfType.expression;
            return((IConditionalFormattingRule)conditionalFormattingRule);
        }