Пример #1
0
        private CFRule GetConditionalFormattingRule(CT_CfRule ct_cfrule)
        {
            CFRule rule = new CFRule((CFType)ct_cfrule.type, ct_cfrule.priority);

            if (ct_cfrule.formula != null)
            {
                string for1 = null, for2 = null, for3 = null;
                if (ct_cfrule.formula.Length > 0)
                    for1 = ct_cfrule.formula[0];
                if (ct_cfrule.formula.Length > 1)
                    for2 = ct_cfrule.formula[1];
                if (ct_cfrule.formula.Length > 2)
                    for3 = ct_cfrule.formula[2];
                rule.Formula1 = for1;
                rule.Formula2 = for2;
                rule.Formula3 = for3;
            }

            switch (ct_cfrule.type)
            {
                case ST_CfType.iconSet:
                    rule.IconSet = new IconSet
                    {
                        IconSetType = (IconSetType)ct_cfrule.iconSet.iconSet,
                        ShowValue = ct_cfrule.iconSet.showValue,
                        CFVOList = ConvertCFVOList(ct_cfrule.iconSet.cfvo)
                    };
                    break;

                case ST_CfType.dataBar:
                    rule.DataBar = new DataBar
                    {
                        CFVOList = ConvertCFVOList(ct_cfrule.dataBar.cfvo),
                        Color = ConvertColor(ct_cfrule.dataBar.color)
                    };
                    break;

                case ST_CfType.colorScale:
                    rule.ColorScale = new ColorScale
                    {
                        CFVOList = ConvertCFVOList(ct_cfrule.colorScale.cfvo),
                        Colors = ConvertColorList(ct_cfrule.colorScale.color)
                    };
                    break;

                case ST_CfType.timePeriod:
                    rule.TimePeriod = (TimePeriod)ct_cfrule.timePeriod;
                    break;

                case ST_CfType.top10:
                    rule.IsPercent = ct_cfrule.percent;
                    rule.IsBottom = ct_cfrule.bottom;
                    rule.Rank = (int)ct_cfrule.rank;
                    break;

                case ST_CfType.aboveAverage:
                    rule.IsAboveAverage = ct_cfrule.aboveAverage;
                    rule.IsEqualAverage = ct_cfrule.equalAverage;
                    rule.IsStdDev = ct_cfrule.stdDevSpecified;
                    rule.StdDev = ct_cfrule.stdDev;
                    break;

                case ST_CfType.containsText:
                case ST_CfType.notContainsText:
                case ST_CfType.beginsWith:
                case ST_CfType.endsWith:
                case ST_CfType.cellIs:
                    rule.Text = ct_cfrule.text;
                    rule.Operator = (CFOperator)ct_cfrule.@operator;
                    break;
            }

            if (ct_cfrule.dxfIdSpecified)
                rule.Style = GetDxfStyle(ct_cfrule.dxfId);

            return rule;
        }
Пример #2
0
        public void WriteConditionalFormattingRule(CFRule rule, string firstCell, out CT_CfRule cfRule)
        {
            ST_CfType     st_cftype     = (ST_CfType)rule.Type;
            CT_ColorScale ct_colorscale = null;
            CT_DataBar    ct_databar    = null;
            CT_IconSet    ct_iconset    = null;

            if (rule.Type == CFType.ColorScale)
            {
                WriteConditionalFormattingColorScale(rule.ColorScale, out ct_colorscale);
            }

            if (rule.Type == CFType.DataBar)
            {
                WriteConditionalFormattingDataBar(rule.DataBar, out ct_databar);
            }

            if (rule.Type == CFType.IconSet)
            {
                WriteConditionalFormattingIconSet(rule.IconSet, out ct_iconset);
            }

            if (CFRule.RequiresDxf(rule.Type))
            {
                List <string> formulas = new List <string>();

                if (!string.IsNullOrEmpty(rule.Formula1))
                {
                    formulas.Add(rule.Formula1);
                }

                if (!string.IsNullOrEmpty(rule.Formula2))
                {
                    formulas.Add(rule.Formula2);
                }

                if (!string.IsNullOrEmpty(rule.Formula3))
                {
                    formulas.Add(rule.Formula3);
                }

                cfRule = new CT_CfRule
                {
                    typeSpecified     = true,
                    type              = st_cftype,
                    priority          = rule.Priority,
                    formula           = formulas.ToArray(),
                    operatorSpecified = rule.Operator.HasValue,
                    @operator         = rule.Operator.HasValue ? (ST_ConditionalFormattingOperator)rule.Operator.Value : ST_ConditionalFormattingOperator.beginsWith,
                    text              = rule.Text,
                };
                cfRule = SetDxfStyle(cfRule, rule.Style);

                switch (rule.Type)
                {
                case CFType.Top10:
                    cfRule.percent       = rule.IsPercent;
                    cfRule.bottom        = rule.IsBottom;
                    cfRule.rankSpecified = rule.Rank.HasValue;
                    cfRule.rank          = (uint)rule.Rank.Value;
                    break;

                case CFType.AboveAverage:
                    cfRule.aboveAverage    = rule.IsAboveAverage;
                    cfRule.equalAverage    = rule.IsEqualAverage;
                    cfRule.stdDevSpecified = rule.IsStdDev;
                    cfRule.stdDev          = rule.StdDev;
                    break;

                case CFType.TimePeriod:
                    cfRule.timePeriodSpecified = true;
                    cfRule.timePeriod          = (ST_TimePeriod)rule.TimePeriod;
                    break;
                }
                return;
            }

            cfRule = new CT_CfRule
            {
                typeSpecified = true,
                type          = st_cftype,
                colorScale    = ct_colorscale,
                dataBar       = ct_databar,
                iconSet       = ct_iconset,
                priority      = rule.Priority
            };
        }
Пример #3
0
        private CFRule GetConditionalFormattingRule(CT_CfRule ct_cfrule)
        {
            CFRule rule = new CFRule((CFType)ct_cfrule.type, ct_cfrule.priority);

            if (ct_cfrule.formula != null)
            {
                string for1 = null, for2 = null, for3 = null;
                if (ct_cfrule.formula.Length > 0)
                {
                    for1 = ct_cfrule.formula[0];
                }
                if (ct_cfrule.formula.Length > 1)
                {
                    for2 = ct_cfrule.formula[1];
                }
                if (ct_cfrule.formula.Length > 2)
                {
                    for3 = ct_cfrule.formula[2];
                }
                rule.Formula1 = for1;
                rule.Formula2 = for2;
                rule.Formula3 = for3;
            }

            switch (ct_cfrule.type)
            {
            case ST_CfType.iconSet:
                rule.IconSet = new IconSet
                {
                    IconSetType = (IconSetType)ct_cfrule.iconSet.iconSet,
                    ShowValue   = ct_cfrule.iconSet.showValue,
                    CFVOList    = ConvertCFVOList(ct_cfrule.iconSet.cfvo)
                };
                break;

            case ST_CfType.dataBar:
                rule.DataBar = new DataBar
                {
                    CFVOList = ConvertCFVOList(ct_cfrule.dataBar.cfvo),
                    Color    = ConvertColor(ct_cfrule.dataBar.color)
                };
                break;

            case ST_CfType.colorScale:
                rule.ColorScale = new ColorScale
                {
                    CFVOList = ConvertCFVOList(ct_cfrule.colorScale.cfvo),
                    Colors   = ConvertColorList(ct_cfrule.colorScale.color)
                };
                break;

            case ST_CfType.timePeriod:
                rule.TimePeriod = (TimePeriod)ct_cfrule.timePeriod;
                break;

            case ST_CfType.top10:
                rule.IsPercent = ct_cfrule.percent;
                rule.IsBottom  = ct_cfrule.bottom;
                rule.Rank      = (int)ct_cfrule.rank;
                break;

            case ST_CfType.aboveAverage:
                rule.IsAboveAverage = ct_cfrule.aboveAverage;
                rule.IsEqualAverage = ct_cfrule.equalAverage;
                rule.IsStdDev       = ct_cfrule.stdDevSpecified;
                rule.StdDev         = ct_cfrule.stdDev;
                break;

            case ST_CfType.containsText:
            case ST_CfType.notContainsText:
            case ST_CfType.beginsWith:
            case ST_CfType.endsWith:
            case ST_CfType.cellIs:
                rule.Text     = ct_cfrule.text;
                rule.Operator = (CFOperator)ct_cfrule.@operator;
                break;
            }

            if (ct_cfrule.dxfIdSpecified)
            {
                rule.Style = GetDxfStyle(ct_cfrule.dxfId);
            }

            return(rule);
        }