Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public static string GetAttributeByType(
            eExcelConditionalFormattingValueObjectType type)
        {
            switch (type)
            {
            case eExcelConditionalFormattingValueObjectType.Min:
                return(ExcelConditionalFormattingConstants.CfvoType.Min);

            case eExcelConditionalFormattingValueObjectType.Max:
                return(ExcelConditionalFormattingConstants.CfvoType.Max);

            case eExcelConditionalFormattingValueObjectType.Num:
                return(ExcelConditionalFormattingConstants.CfvoType.Num);

            case eExcelConditionalFormattingValueObjectType.Formula:
                return(ExcelConditionalFormattingConstants.CfvoType.Formula);

            case eExcelConditionalFormattingValueObjectType.Percent:
                return(ExcelConditionalFormattingConstants.CfvoType.Percent);

            case eExcelConditionalFormattingValueObjectType.Percentile:
                return(ExcelConditionalFormattingConstants.CfvoType.Percentile);
            }

            return(string.Empty);
        }
 /// <summary>
 /// Initialize the <see cref="ExcelConditionalFormattingColorScaleValue"/>
 /// </summary>
 /// <param name="position"></param>
 /// <param name="type"></param>
 /// <param name="color"></param>
 /// <param name="value"></param>
 /// <param name="formula"></param>
 /// <param name="ruleType"></param>
 /// <param name="priority"></param>
 /// <param name="address"></param>
 /// <param name="worksheet"></param>
 /// <param name="namespaceManager"></param>
 internal ExcelConditionalFormattingColorScaleValue(
     eExcelConditionalFormattingValueObjectPosition position,
     eExcelConditionalFormattingValueObjectType type,
     Color color,
     double value,
     string formula,
     eExcelConditionalFormattingRuleType ruleType,
     ExcelAddress address,
     int priority,
     ExcelWorksheet worksheet,
     XmlNamespaceManager namespaceManager)
     : this(
         position,
         type,
         color,
         value,
         formula,
         ruleType,
         address,
         priority,
         worksheet,
         null,
         namespaceManager)
 {
 }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public static string GetAttributeByType(
            eExcelConditionalFormattingValueObjectType type)
        {
            switch (type)
            {
                case eExcelConditionalFormattingValueObjectType.Min:
                    return ExcelConditionalFormattingConstants.CfvoType.Min;

                case eExcelConditionalFormattingValueObjectType.Max:
              return ExcelConditionalFormattingConstants.CfvoType.Max;

                case eExcelConditionalFormattingValueObjectType.Num:
              return ExcelConditionalFormattingConstants.CfvoType.Num;

                case eExcelConditionalFormattingValueObjectType.Formula:
              return ExcelConditionalFormattingConstants.CfvoType.Formula;

                case eExcelConditionalFormattingValueObjectType.Percent:
              return ExcelConditionalFormattingConstants.CfvoType.Percent;

                case eExcelConditionalFormattingValueObjectType.Percentile:
              return ExcelConditionalFormattingConstants.CfvoType.Percentile;
            }

            return string.Empty;
        }
 /// <summary>
 /// Initialize the <see cref="ExcelConditionalFormattingColorScaleValue"/>
 /// </summary>
 /// <param name="type"></param>
 /// <param name="color"></param>
 /// <param name="ruleType"></param>
 /// <param name="priority"></param>
 /// <param name="address"></param>
 /// <param name="worksheet"></param>
 /// <param name="namespaceManager"></param>
 internal ExcelConditionalFormattingIconDataBarValue(
     eExcelConditionalFormattingValueObjectType type,
     Color color,
     eExcelConditionalFormattingRuleType ruleType,
     ExcelAddress address,
     int priority,
     ExcelWorksheet worksheet,
     XmlNamespaceManager namespaceManager)
     : this(
         type,
         0,
         null,
         ruleType,
         address,
         priority,
         worksheet,
         null,
         namespaceManager)
 {
 }
 /// <summary>
 /// Initialize the <see cref="ExcelConditionalFormattingColorScaleValue"/>
 /// </summary>
 /// <param name="type"></param>
 /// <param name="value"></param>
 /// <param name="formula"></param>
 /// <param name="ruleType"></param>
 /// <param name="priority"></param>
 /// <param name="address"></param>
 /// <param name="worksheet"></param>
 /// <param name="namespaceManager"></param>
 internal ExcelConditionalFormattingIconDataBarValue(
     eExcelConditionalFormattingValueObjectType type,
     double value,
     string formula,
     eExcelConditionalFormattingRuleType ruleType,
     ExcelAddress address,
     int priority,
     ExcelWorksheet worksheet,
     XmlNamespaceManager namespaceManager)
     : this(
         type,
         value,
         formula,
         ruleType,
         address,
         priority,
         worksheet,
         null,
         namespaceManager)
 {
 }
 /// <summary>
 /// Initialize the <see cref="ExcelConditionalFormattingColorScaleValue"/>
 /// </summary>
 /// <param name="position"></param>
 /// <param name="type"></param>
 /// <param name="color"></param>
 /// <param name="ruleType"></param>
 /// <param name="priority"></param>
 /// <param name="address"></param>
 /// <param name="worksheet"></param>
 /// <param name="itemElementNode"></param>
 /// <param name="namespaceManager"></param>
 internal ExcelConditionalFormattingColorScaleValue(
     eExcelConditionalFormattingValueObjectPosition position,
     eExcelConditionalFormattingValueObjectType type,
     Color color,
     eExcelConditionalFormattingRuleType ruleType,
     ExcelAddress address,
     int priority,
     ExcelWorksheet worksheet,
     XmlNode itemElementNode,
     XmlNamespaceManager namespaceManager)
     : this(
         position,
         type,
         color,
         0,
         null,
         ruleType,
         address,
         priority,
         worksheet,
         itemElementNode,
         namespaceManager)
 {
 }
        /****************************************************************************************/

        #region Constructors
        /// <summary>
        /// Initialize the cfvo (§18.3.1.11) node
        /// </summary>
        /// <param name="position"></param>
        /// <param name="type"></param>
        /// <param name="color"></param>
        /// <param name="value"></param>
        /// <param name="formula"></param>
        /// <param name="ruleType"></param>
        /// <param name="address"></param>
        /// <param name="priority"></param>
        /// <param name="worksheet"></param>
        /// <param name="itemElementNode">The cfvo (§18.3.1.11) node parent. Can be any of the following:
        /// colorScale (§18.3.1.16); dataBar (§18.3.1.28); iconSet (§18.3.1.49)</param>
        /// <param name="namespaceManager"></param>
        internal ExcelConditionalFormattingColorScaleValue(
            eExcelConditionalFormattingValueObjectPosition position,
            eExcelConditionalFormattingValueObjectType type,
            Color color,
            double value,
            string formula,
            eExcelConditionalFormattingRuleType ruleType,
            ExcelAddress address,
            int priority,
            ExcelWorksheet worksheet,
            XmlNode itemElementNode,
            XmlNamespaceManager namespaceManager)
            : base(
                namespaceManager,
                itemElementNode)
        {
            Require.Argument(priority).IsInRange(1, int.MaxValue, "priority");
            Require.Argument(address).IsNotNull("address");
            Require.Argument(worksheet).IsNotNull("worksheet");

            // Save the worksheet for private methods to use
            _worksheet = worksheet;

            // Schema order list
            SchemaNodeOrder = new string[]
            {
                ExcelConditionalFormattingConstants.Nodes.Cfvo,
                ExcelConditionalFormattingConstants.Nodes.Color
            };

            // Check if the parent does not exists
            if (itemElementNode == null)
            {
                // Get the parent node path by the rule type
                string parentNodePath = ExcelConditionalFormattingValueObjectType.GetParentPathByRuleType(
                    ruleType);

                // Check for en error (rule type does not have <cfvo>)
                if (parentNodePath == string.Empty)
                {
                    throw new Exception(
                              ExcelConditionalFormattingConstants.Errors.MissingCfvoParentNode);
                }

                // Point to the <cfvo> parent node
                itemElementNode = _worksheet.WorksheetXml.SelectSingleNode(
                    string.Format(
                        "//{0}[{1}='{2}']/{3}[{4}='{5}']/{6}",
                        // {0}
                        ExcelConditionalFormattingConstants.Paths.ConditionalFormatting,
                        // {1}
                        ExcelConditionalFormattingConstants.Paths.SqrefAttribute,
                        // {2}
                        address.Address,
                        // {3}
                        ExcelConditionalFormattingConstants.Paths.CfRule,
                        // {4}
                        ExcelConditionalFormattingConstants.Paths.PriorityAttribute,
                        // {5}
                        priority,
                        // {6}
                        parentNodePath),
                    _worksheet.NameSpaceManager);

                // Check for en error (rule type does not have <cfvo>)
                if (itemElementNode == null)
                {
                    throw new Exception(
                              ExcelConditionalFormattingConstants.Errors.MissingCfvoParentNode);
                }
            }

            // Point to the <cfvo> parent node (<colorScale>, <dataBar> or <iconSet>)
            // This is different than normal, as TopNode does not point to the node itself but to
            // its PARENT. Later, in the CreateNodeByOrdem method the TopNode will be updated.
            TopNode = itemElementNode;

            // Save the attributes
            Position = position;
            RuleType = ruleType;
            Type     = type;
            Color    = color;
            Value    = value;
            Formula  = formula;
        }
        /****************************************************************************************/

        #region Constructors
        /// <summary>
        /// Initialize the cfvo (§18.3.1.11) node
        /// </summary>
        /// <param name="type"></param>
        /// <param name="value"></param>
        /// <param name="formula"></param>
        /// <param name="ruleType"></param>
        /// <param name="address"></param>
        /// <param name="priority"></param>
        /// <param name="worksheet"></param>
        /// <param name="itemElementNode">The cfvo (§18.3.1.11) node parent. Can be any of the following:
        /// colorScale (§18.3.1.16); dataBar (§18.3.1.28); iconSet (§18.3.1.49)</param>
        /// <param name="namespaceManager"></param>
        internal ExcelConditionalFormattingIconDataBarValue(
            eExcelConditionalFormattingValueObjectType type,
            double value,
            string formula,
            eExcelConditionalFormattingRuleType ruleType,
            ExcelAddress address,
            int priority,
            ExcelWorksheet worksheet,
            XmlNode itemElementNode,
            XmlNamespaceManager namespaceManager)
            : this(
                ruleType,
                address,
                worksheet,
                itemElementNode,
                namespaceManager)
        {
            Require.Argument(priority).IsInRange(1, int.MaxValue, "priority");

            // Check if the parent does not exists
            if (itemElementNode == null)
            {
                // Get the parent node path by the rule type
                string parentNodePath = ExcelConditionalFormattingValueObjectType.GetParentPathByRuleType(
                    ruleType);

                // Check for en error (rule type does not have <cfvo>)
                if (parentNodePath == string.Empty)
                {
                    throw new Exception(
                              ExcelConditionalFormattingConstants.Errors.MissingCfvoParentNode);
                }

                // Point to the <cfvo> parent node
                itemElementNode = _worksheet.WorksheetXml.SelectSingleNode(
                    string.Format(
                        "//{0}[{1}='{2}']/{3}[{4}='{5}']/{6}",
                        // {0}
                        ExcelConditionalFormattingConstants.Paths.ConditionalFormatting,
                        // {1}
                        ExcelConditionalFormattingConstants.Paths.SqrefAttribute,
                        // {2}
                        address.Address,
                        // {3}
                        ExcelConditionalFormattingConstants.Paths.CfRule,
                        // {4}
                        ExcelConditionalFormattingConstants.Paths.PriorityAttribute,
                        // {5}
                        priority,
                        // {6}
                        parentNodePath),
                    _worksheet.NameSpaceManager);

                // Check for en error (rule type does not have <cfvo>)
                if (itemElementNode == null)
                {
                    throw new Exception(
                              ExcelConditionalFormattingConstants.Errors.MissingCfvoParentNode);
                }
            }

            TopNode = itemElementNode;

            // Save the attributes
            RuleType = ruleType;
            Type     = type;
            Value    = value;
            Formula  = formula;
        }
		/****************************************************************************************/

		#region Constructors
    /// <summary>
    /// Initialize the cfvo (§18.3.1.11) node
    /// </summary>
    /// <param name="position"></param>
    /// <param name="type"></param>
    /// <param name="color"></param>
    /// <param name="value"></param>
    /// <param name="formula"></param>
    /// <param name="ruleType"></param>
    /// <param name="address"></param>
    /// <param name="priority"></param>
    /// <param name="worksheet"></param>
    /// <param name="itemElementNode">The cfvo (§18.3.1.11) node parent. Can be any of the following:
    /// colorScale (§18.3.1.16); dataBar (§18.3.1.28); iconSet (§18.3.1.49)</param>
    /// <param name="namespaceManager"></param>
		internal ExcelConditionalFormattingColorScaleValue(
			eExcelConditionalFormattingValueObjectPosition position,
			eExcelConditionalFormattingValueObjectType type,
			Color color,
			double value,
			string formula,
			eExcelConditionalFormattingRuleType ruleType,
      ExcelAddress address,
      int priority,
			ExcelWorksheet worksheet,
			XmlNode itemElementNode,
			XmlNamespaceManager namespaceManager)
			: base(
				namespaceManager,
				itemElementNode)
		{
			Require.Argument(priority).IsInRange(1, int.MaxValue, "priority");
			Require.Argument(address).IsNotNull("address");
			Require.Argument(worksheet).IsNotNull("worksheet");

			// Save the worksheet for private methods to use
			_worksheet = worksheet;

			// Schema order list
			SchemaNodeOrder = new string[]
			{
        ExcelConditionalFormattingConstants.Nodes.Cfvo,
        ExcelConditionalFormattingConstants.Nodes.Color
			};

			// Check if the parent does not exists
			if (itemElementNode == null)
			{
				// Get the parent node path by the rule type
				string parentNodePath = ExcelConditionalFormattingValueObjectType.GetParentPathByRuleType(
					ruleType);

				// Check for en error (rule type does not have <cfvo>)
				if (parentNodePath == string.Empty)
				{
					throw new Exception(
						ExcelConditionalFormattingConstants.Errors.MissingCfvoParentNode);
				}

				// Point to the <cfvo> parent node
        itemElementNode = _worksheet.WorksheetXml.SelectSingleNode(
					string.Format(
						"//{0}[{1}='{2}']/{3}[{4}='{5}']/{6}",
					// {0}
						ExcelConditionalFormattingConstants.Paths.ConditionalFormatting,
					// {1}
						ExcelConditionalFormattingConstants.Paths.SqrefAttribute,
					// {2}
						address.Address,
					// {3}
						ExcelConditionalFormattingConstants.Paths.CfRule,
					// {4}
						ExcelConditionalFormattingConstants.Paths.PriorityAttribute,
					// {5}
						priority,
					// {6}
						parentNodePath),
					_worksheet.NameSpaceManager);

				// Check for en error (rule type does not have <cfvo>)
        if (itemElementNode == null)
				{
					throw new Exception(
						ExcelConditionalFormattingConstants.Errors.MissingCfvoParentNode);
				}
			}

			// Point to the <cfvo> parent node (<colorScale>, <dataBar> or <iconSet>)
      // This is different than normal, as TopNode does not point to the node itself but to
      // its PARENT. Later, in the CreateNodeByOrdem method the TopNode will be updated.
      TopNode = itemElementNode;

			// Save the attributes
			Position = position;
			RuleType = ruleType;
			Type = type;
			Color = color;
			Value = value;
			Formula = formula;
		}
		/// <summary>
		/// Initialize the <see cref="ExcelConditionalFormattingColorScaleValue"/>
		/// </summary>
		/// <param name="position"></param>
		/// <param name="type"></param>
		/// <param name="color"></param>
		/// <param name="ruleType"></param>
		/// <param name="priority"></param>
		/// <param name="address"></param>
		/// <param name="worksheet"></param>
		/// <param name="namespaceManager"></param>
		internal ExcelConditionalFormattingColorScaleValue(
			eExcelConditionalFormattingValueObjectPosition position,
			eExcelConditionalFormattingValueObjectType type,
			Color color,
			eExcelConditionalFormattingRuleType ruleType,
      ExcelAddress address,
      int priority,
			ExcelWorksheet worksheet,
			XmlNamespaceManager namespaceManager)
			: this(
				position,
				type,
				color,
				0,
				null,
				ruleType,
        address,
        priority,
				worksheet,
				null,
				namespaceManager)
		{
		}
		/****************************************************************************************/

		#region Constructors
    /// <summary>
    /// Initialize the cfvo (§18.3.1.11) node
    /// </summary>
    /// <param name="type"></param>
    /// <param name="value"></param>
    /// <param name="formula"></param>
    /// <param name="ruleType"></param>
    /// <param name="address"></param>
    /// <param name="priority"></param>
    /// <param name="worksheet"></param>
    /// <param name="itemElementNode">The cfvo (§18.3.1.11) node parent. Can be any of the following:
    /// colorScale (§18.3.1.16); dataBar (§18.3.1.28); iconSet (§18.3.1.49)</param>
    /// <param name="namespaceManager"></param>
		internal ExcelConditionalFormattingIconDataBarValue(
			eExcelConditionalFormattingValueObjectType type,
			double value,
			string formula,
			eExcelConditionalFormattingRuleType ruleType,
            ExcelAddress address,
            int priority,
			ExcelWorksheet worksheet,
			XmlNode itemElementNode,
			XmlNamespaceManager namespaceManager)
			: this(
            ruleType,
            address,
            worksheet,
            itemElementNode,
			namespaceManager)
		{
			Require.Argument(priority).IsInRange(1, int.MaxValue, "priority");

            // Check if the parent does not exists
			if (itemElementNode == null)
			{
				// Get the parent node path by the rule type
				string parentNodePath = ExcelConditionalFormattingValueObjectType.GetParentPathByRuleType(
					ruleType);

				// Check for en error (rule type does not have <cfvo>)
				if (parentNodePath == string.Empty)
				{
					throw new Exception(
						ExcelConditionalFormattingConstants.Errors.MissingCfvoParentNode);
				}

				// Point to the <cfvo> parent node
        itemElementNode = _worksheet.WorksheetXml.SelectSingleNode(
					string.Format(
						"//{0}[{1}='{2}']/{3}[{4}='{5}']/{6}",
					// {0}
						ExcelConditionalFormattingConstants.Paths.ConditionalFormatting,
					// {1}
						ExcelConditionalFormattingConstants.Paths.SqrefAttribute,
					// {2}
						address.Address,
					// {3}
						ExcelConditionalFormattingConstants.Paths.CfRule,
					// {4}
						ExcelConditionalFormattingConstants.Paths.PriorityAttribute,
					// {5}
						priority,
					// {6}
						parentNodePath),
					_worksheet.NameSpaceManager);

				// Check for en error (rule type does not have <cfvo>)
                if (itemElementNode == null)
				{
					throw new Exception(
						ExcelConditionalFormattingConstants.Errors.MissingCfvoParentNode);
				}
			}

            TopNode = itemElementNode;

			// Save the attributes
			RuleType = ruleType;
			Type = type;
			Value = value;
			Formula = formula;
		}
		/// <summary>
		/// Initialize the <see cref="ExcelConditionalFormattingColorScaleValue"/>
		/// </summary>
		/// <param name="type"></param>
		/// <param name="color"></param>
		/// <param name="ruleType"></param>
		/// <param name="priority"></param>
		/// <param name="address"></param>
		/// <param name="worksheet"></param>
		/// <param name="namespaceManager"></param>
		internal ExcelConditionalFormattingIconDataBarValue(
			eExcelConditionalFormattingValueObjectType type,
			Color color,
			eExcelConditionalFormattingRuleType ruleType,
            ExcelAddress address,
            int priority,
			ExcelWorksheet worksheet,
			XmlNamespaceManager namespaceManager)
			: this(
				type,
				0,
				null,
				ruleType,
                address,
                priority,
				worksheet,
				null,
				namespaceManager)
		{
		}
		/// <summary>
		/// Initialize the <see cref="ExcelConditionalFormattingColorScaleValue"/>
		/// </summary>
		/// <param name="type"></param>
		/// <param name="value"></param>
		/// <param name="formula"></param>
		/// <param name="ruleType"></param>
		/// <param name="priority"></param>
		/// <param name="address"></param>
		/// <param name="worksheet"></param>
		/// <param name="namespaceManager"></param>
		internal ExcelConditionalFormattingIconDataBarValue(
			eExcelConditionalFormattingValueObjectType type,
			double value,
			string formula,
			eExcelConditionalFormattingRuleType ruleType,
            ExcelAddress address,
            int priority,
			ExcelWorksheet worksheet,
			XmlNamespaceManager namespaceManager)
			: this(
				type,
				value,
				formula,
				ruleType,
                address,
                priority,
				worksheet,
				null,
				namespaceManager)
		{
            
		}
        /// <summary>
        /// Initialize the <see cref="ExcelConditionalFormattingValueObject"/>
        /// </summary>
        /// <param name="position"></param>
        /// <param name="type"></param>
        /// <param name="color"></param>
        /// <param name="value"></param>
        /// <param name="formula"></param>
        /// <param name="ruleType"></param>
        /// <param name="priority"></param>
        /// <param name="address"></param>
        /// <param name="worksheet"></param>
        /// <param name="namespaceManager"></param>
        internal ExcelConditionalFormattingValueObject(
            eExcelConditionalFormattingValueObjectPosition position,
            eExcelConditionalFormattingValueObjectType type,
            Color color,
            double value,
            string formula,
            eExcelConditionalFormattingRuleType ruleType,
            ExcelAddress address,
            int priority,
            ExcelWorksheet worksheet,
            XmlNamespaceManager namespaceManager)
            : this(position,
				type,
				color,
				value,
				formula,
				ruleType,
        address,
        priority,
				worksheet,
				null,
				namespaceManager)
        {
        }