コード例 #1
0
		/// <summary>
		/// Get the sequencial order of a cfvo/color by its position.
		/// </summary>
		/// <param name="position"></param>
        /// <param name="ruleType"></param>
		/// <returns>1, 2 or 3</returns>
		internal static int GetOrderByPosition(
			eExcelConditionalFormattingValueObjectPosition position,
			eExcelConditionalFormattingRuleType ruleType)
		{
			switch (position)
			{
				case eExcelConditionalFormattingValueObjectPosition.Low:
					return 1;

				case eExcelConditionalFormattingValueObjectPosition.Middle:
					return 2;

				case eExcelConditionalFormattingValueObjectPosition.High:
					// Check if the rule type is TwoColorScale.
					if (ruleType == eExcelConditionalFormattingRuleType.TwoColorScale)
					{
						// There are only "Low" and "High". So "High" is the second
						return 2;
					}

					// There are "Low", "Middle" and "High". So "High" is the third
					return 3;
			}

			return 0;
		}
コード例 #2
0
    /****************************************************************************************/

    #region Constructors
    /// <summary>
    /// Initialize the <see cref="ExcelConditionalFormattingRule"/>
    /// </summary>
    /// <param name="type"></param>
    /// <param name="address"></param>
    /// <param name="priority">Used also as the cfRule unique key</param>
    /// <param name="worksheet"></param>
    /// <param name="itemElementNode"></param>
    /// <param name="namespaceManager"></param>
    internal ExcelConditionalFormattingRule(
      eExcelConditionalFormattingRuleType type,
      ExcelAddress address,
      int priority,
      ExcelWorksheet worksheet,
      XmlNode itemElementNode,
      XmlNamespaceManager namespaceManager)
      : base(
        namespaceManager,
        itemElementNode)
    {
      Require.Argument(address).IsNotNull("address");

  	  // While MSDN states that 1 is the "highest priority," it also defines this
	  // field as W3C XML Schema int, which would allow values less than 1. Excel
	  // itself will, on occasion, use a value of 0, so this check will allow a 0.
      Require.Argument(priority).IsInRange(0, int.MaxValue, "priority");

      Require.Argument(worksheet).IsNotNull("worksheet");

      _type = type;
      _worksheet = worksheet;
      SchemaNodeOrder = _worksheet.SchemaNodeOrder;

      if (itemElementNode == null)
      {
        // Create/Get the <cfRule> inside <conditionalFormatting>
        itemElementNode = CreateComplexNode(
          _worksheet.WorksheetXml.DocumentElement,
          string.Format(
            "{0}[{1}='{2}']/{1}='{2}'/{3}[{4}='{5}']/{4}='{5}'",
          //{0}
            ExcelConditionalFormattingConstants.Paths.ConditionalFormatting,
          // {1}
            ExcelConditionalFormattingConstants.Paths.SqrefAttribute,
          // {2}
            address.AddressSpaceSeparated,          //CF node don't what to have comma between multi addresses, use space instead.
          // {3}
            ExcelConditionalFormattingConstants.Paths.CfRule,
          //{4}
            ExcelConditionalFormattingConstants.Paths.PriorityAttribute,
          //{5}
            priority));
      }

      // Point to <cfRule>
      TopNode = itemElementNode;

      Address = address;
      Priority = priority;
      Type = type;
      if (DxfId >= 0)
      {
          worksheet.Workbook.Styles.Dxfs[DxfId].AllowChange = true;  //This Id is referenced by CF, so we can use it when we save.
          _style = worksheet.Workbook.Styles.Dxfs[DxfId].Clone();    //Clone, so it can be altered without effecting other dxf styles
      }
    }
コード例 #3
0
        /// <summary>
        /// Initialize the <see cref="ExcelConditionalFormattingRule"/>
        /// </summary>
        /// <param name="type"></param>
        /// <param name="address"></param>
        /// <param name="priority">Used also as the cfRule unique key</param>
        /// <param name="worksheet"></param>
        /// <param name="itemElementNode"></param>
        /// <param name="namespaceManager"></param>
        internal ExcelConditionalFormattingRule(
            eExcelConditionalFormattingRuleType type,
            ExcelAddress address,
            int priority,
            ExcelWorksheet worksheet,
            XmlNode itemElementNode,
            XmlNamespaceManager namespaceManager)
            : base(namespaceManager,
        itemElementNode)
        {
            Require.Argument(address).IsNotNull("address");
              Require.Argument(priority).IsInRange(1, int.MaxValue, "priority");
              Require.Argument(worksheet).IsNotNull("worksheet");

              _type = type;
              _worksheet = worksheet;
              SchemaNodeOrder = _worksheet.SchemaNodeOrder;

              if (itemElementNode == null)
              {
            // Create/Get the <cfRule> inside <conditionalFormatting>
            itemElementNode = CreateComplexNode(
              _worksheet.WorksheetXml.DocumentElement,
              string.Format(
            "{0}[{1}='{2}']/{1}='{2}'/{3}[{4}='{5}']/{4}='{5}'",
              //{0}
            ExcelConditionalFormattingConstants.Paths.ConditionalFormatting,
              // {1}
            ExcelConditionalFormattingConstants.Paths.SqrefAttribute,
              // {2}
            address.Address,
              // {3}
            ExcelConditionalFormattingConstants.Paths.CfRule,
              //{4}
            ExcelConditionalFormattingConstants.Paths.PriorityAttribute,
              //{5}
            priority));
              }

              // Point to <cfRule>
              TopNode = itemElementNode;

              Address = address;
              Priority = priority;
              Type = type;
              if (DxfId >= 0)
              {
              worksheet.Workbook.Styles.Dxfs[DxfId].AllowChange = true;  //This Id is referenced by CF, so we can use it when we save.
              _style = worksheet.Workbook.Styles.Dxfs[DxfId].Clone();    //Clone, so it can be altered without effecting other dxf styles
              }
        }
コード例 #4
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="type"></param>
 /// <param name="priority"></param>
 /// <param name="address"></param>
 /// <param name="worksheet"></param>
 /// <param name="itemElementNode"></param>
 /// <param name="namespaceManager"></param>
 internal ExcelConditionalFormattingTimePeriodGroup(
     eExcelConditionalFormattingRuleType type,
     ExcelAddress address,
     int priority,
     ExcelWorksheet worksheet,
     XmlNode itemElementNode,
     XmlNamespaceManager namespaceManager)
     : base(type,
 address,
 priority,
 worksheet,
 itemElementNode,
 (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager)
 {
 }
コード例 #5
0
 /// <summary>
 /// 
 /// </summary>
   /// <param name="type"></param>
   /// <param name="priority"></param>
 /// <param name="address"></param>
 /// <param name="worksheet"></param>
 /// <param name="itemElementNode"></param>
 internal ExcelConditionalFormattingTimePeriodGroup(
   eExcelConditionalFormattingRuleType type,
   ExcelAddress address,
   int priority,
   ExcelWorksheet worksheet,
   XmlNode itemElementNode)
   : this(
     type,
     address,
     priority,
     worksheet,
     itemElementNode,
     null)
 {
 }
コード例 #6
0
 /// <summary>
 /// Initialize the <see cref="ExcelConditionalFormattingRule"/>
 /// </summary>
 /// <param name="type"></param>
 /// <param name="address"></param>
 /// <param name="priority"></param>
 /// <param name="worksheet"></param>
 /// <param name="namespaceManager"></param>
 internal ExcelConditionalFormattingRule(
     eExcelConditionalFormattingRuleType type,
     ExcelAddress address,
     int priority,
     ExcelWorksheet worksheet,
     XmlNamespaceManager namespaceManager)
     : this(
         type,
         address,
         priority,
         worksheet,
         null,
         namespaceManager)
 {
 }
コード例 #7
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="type"></param>
 /// <param name="priority"></param>
 /// <param name="address"></param>
 /// <param name="worksheet"></param>
 /// <param name="itemElementNode"></param>
 internal ExcelConditionalFormattingTimePeriodGroup(
     eExcelConditionalFormattingRuleType type,
     ExcelAddress address,
     int priority,
     ExcelWorksheet worksheet,
     XmlNode itemElementNode)
     : this(
         type,
         address,
         priority,
         worksheet,
         itemElementNode,
         null)
 {
 }
コード例 #8
0
        /****************************************************************************************/

        #region Constructors
        /// <summary>
        ///
        /// </summary>
        /// <param name="type"></param>
        /// <param name="priority"></param>
        /// <param name="address"></param>
        /// <param name="worksheet"></param>
        /// <param name="itemElementNode"></param>
        /// <param name="namespaceManager"></param>
        internal ExcelConditionalFormattingTimePeriodGroup(
            eExcelConditionalFormattingRuleType type,
            ExcelAddress address,
            int priority,
            ExcelWorksheet worksheet,
            XmlNode itemElementNode,
            XmlNamespaceManager namespaceManager)
            : base(
                type,
                address,
                priority,
                worksheet,
                itemElementNode,
                (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager)
        {
        }
 /// <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)
 {
 }
コード例 #10
0
        /// <summary>
        /// Get the cfvo (§18.3.1.11) node parent by the rule type. Can be any of the following:
        /// "colorScale" (§18.3.1.16); "dataBar" (§18.3.1.28); "iconSet" (§18.3.1.49)
        /// </summary>
        /// <param name="ruleType"></param>
        /// <returns></returns>
        public static string GetParentPathByRuleType(
            eExcelConditionalFormattingRuleType ruleType)
        {
            switch (ruleType)
            {
            case eExcelConditionalFormattingRuleType.TwoColorScale:
            case eExcelConditionalFormattingRuleType.ThreeColorScale:
                return(ExcelConditionalFormattingConstants.Paths.ColorScale);

            case eExcelConditionalFormattingRuleType.ThreeIconSet:
            case eExcelConditionalFormattingRuleType.FourIconSet:
            case eExcelConditionalFormattingRuleType.FiveIconSet:
                return(ExcelConditionalFormattingConstants.Paths.IconSet);

            case eExcelConditionalFormattingRuleType.DataBar:
                return(ExcelConditionalFormattingConstants.Paths.DataBar);
            }

            return(string.Empty);
        }
 /// <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)
 {
 }
コード例 #12
0
        /// <summary>
        /// Return cfvo §18.3.1.11 parent according to the rule type
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public static string GetCfvoParentPathByType(
            eExcelConditionalFormattingRuleType type)
        {
            switch (type)
            {
            case eExcelConditionalFormattingRuleType.TwoColorScale:
            case eExcelConditionalFormattingRuleType.ThreeColorScale:
                return(ExcelConditionalFormattingConstants.Paths.ColorScale);

            case eExcelConditionalFormattingRuleType.ThreeIconSet:
            case eExcelConditionalFormattingRuleType.FourIconSet:
            case eExcelConditionalFormattingRuleType.FiveIconSet:
                return(ExcelConditionalFormattingConstants.RuleType.IconSet);

            case eExcelConditionalFormattingRuleType.DataBar:
                return(ExcelConditionalFormattingConstants.RuleType.DataBar);
            }

            throw new Exception(
                      ExcelConditionalFormattingConstants.Errors.MissingRuleType);
        }
        /// <summary>
        /// Initialize the cfvo (§18.3.1.11) node
        /// </summary>
        /// <param name="ruleType"></param>
        /// <param name="address"></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(
            eExcelConditionalFormattingRuleType ruleType,
            ExcelAddress address,
            ExcelWorksheet worksheet,
            XmlNode itemElementNode,
            XmlNamespaceManager namespaceManager)
            : base(
                namespaceManager,
                itemElementNode)
        {
            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,
            };

            //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);
                }
            }
            RuleType = ruleType;
        }
 /// <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)
 {
 }
コード例 #15
0
        /****************************************************************************************/

        #region Conditional Formatting Rules
        /// <summary>
        /// Add rule (internal)
        /// </summary>
        /// <param name="type"></param>
        /// <param name="address"></param>
        /// <returns></returns>F
        internal IExcelConditionalFormattingRule AddRule(
            eExcelConditionalFormattingRuleType type,
            ExcelAddress address)
        {
            Require.Argument(address).IsNotNull("address");

            address = ValidateAddress(address);
            EnsureRootElementExists();

            // Create the Rule according to the correct type, address and priority
            IExcelConditionalFormattingRule cfRule = ExcelConditionalFormattingRuleFactory.Create(
                type,
                address,
                GetNextPriority(),
                _worksheet,
                null);

            // Add the newly created rule to the list
            _rules.Add(cfRule);

            // Return the newly created rule
            return(cfRule);
        }
コード例 #16
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="position"></param>
        /// <param name="topNode"></param>
        /// <param name="nameSpaceManager"></param>
        /// <returns></returns>
        public static XmlNode GetCfvoNodeByPosition(
            eExcelConditionalFormattingValueObjectPosition position,
            eExcelConditionalFormattingRuleType ruleType,
            XmlNode topNode,
            XmlNamespaceManager nameSpaceManager)
        {
            // Get the corresponding <cfvo> node (by the position)
            var node = topNode.SelectSingleNode(
                string.Format(
                    "{0}[position()={1}]",
                    // {0}
                    ExcelConditionalFormattingConstants.Paths.Cfvo,
                    // {1}
                    ExcelConditionalFormattingValueObjectType.GetOrderByPosition(position, ruleType)),
                nameSpaceManager);

            if (node == null)
            {
                throw new Exception(
                          ExcelConditionalFormattingConstants.Errors.MissingCfvoNode);
            }

            return(node);
        }
コード例 #17
0
		public static ExcelConditionalFormattingRule Create(
			eExcelConditionalFormattingRuleType type,
      ExcelAddress address,
      int priority,
			ExcelWorksheet worksheet,
			XmlNode itemElementNode)
		{
			Require.Argument(type);
      Require.Argument(address).IsNotNull("address");

	  // While MSDN states that 1 is the "highest priority," it also defines this
	  // field as W3C XML Schema int, which would allow values less than 1. Excel
	  // itself will, on occasion, use a value of 0, so this check will allow a 0.
      Require.Argument(priority).IsInRange(0, int.MaxValue, "priority");

      Require.Argument(worksheet).IsNotNull("worksheet");
			
			// According the conditional formatting rule type
			switch (type)
			{
        case eExcelConditionalFormattingRuleType.AboveAverage:
          return new ExcelConditionalFormattingAboveAverage(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.AboveOrEqualAverage:
          return new ExcelConditionalFormattingAboveOrEqualAverage(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.BelowAverage:
          return new ExcelConditionalFormattingBelowAverage(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.BelowOrEqualAverage:
          return new ExcelConditionalFormattingBelowOrEqualAverage(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.AboveStdDev:
          return new ExcelConditionalFormattingAboveStdDev(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.BelowStdDev:
          return new ExcelConditionalFormattingBelowStdDev(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.Bottom:
          return new ExcelConditionalFormattingBottom(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.BottomPercent:
          return new ExcelConditionalFormattingBottomPercent(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.Top:
          return new ExcelConditionalFormattingTop(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.TopPercent:
          return new ExcelConditionalFormattingTopPercent(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.Last7Days:
          return new ExcelConditionalFormattingLast7Days(
            address,
            priority,
            worksheet,
            itemElementNode);


        case eExcelConditionalFormattingRuleType.LastMonth:
          return new ExcelConditionalFormattingLastMonth(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.LastWeek:
          return new ExcelConditionalFormattingLastWeek(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.NextMonth:
          return new ExcelConditionalFormattingNextMonth(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.NextWeek:
          return new ExcelConditionalFormattingNextWeek(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.ThisMonth:
          return new ExcelConditionalFormattingThisMonth(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.ThisWeek:
          return new ExcelConditionalFormattingThisWeek(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.Today:
          return new ExcelConditionalFormattingToday(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.Tomorrow:
          return new ExcelConditionalFormattingTomorrow(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.Yesterday:
          return new ExcelConditionalFormattingYesterday(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.BeginsWith:
          return new ExcelConditionalFormattingBeginsWith(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.Between:
          return new ExcelConditionalFormattingBetween(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.ContainsBlanks:
          return new ExcelConditionalFormattingContainsBlanks(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.ContainsErrors:
          return new ExcelConditionalFormattingContainsErrors(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.ContainsText:
          return new ExcelConditionalFormattingContainsText(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.DuplicateValues:
          return new ExcelConditionalFormattingDuplicateValues(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.EndsWith:
          return new ExcelConditionalFormattingEndsWith(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.Equal:
          return new ExcelConditionalFormattingEqual(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.Expression:
          return new ExcelConditionalFormattingExpression(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.GreaterThan:
          return new ExcelConditionalFormattingGreaterThan(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.GreaterThanOrEqual:
          return new ExcelConditionalFormattingGreaterThanOrEqual(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.LessThan:
          return new ExcelConditionalFormattingLessThan(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.LessThanOrEqual:
          return new ExcelConditionalFormattingLessThanOrEqual(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.NotBetween:
          return new ExcelConditionalFormattingNotBetween(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.NotContainsBlanks:
          return new ExcelConditionalFormattingNotContainsBlanks(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.NotContainsErrors:
          return new ExcelConditionalFormattingNotContainsErrors(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.NotContainsText:
          return new ExcelConditionalFormattingNotContainsText(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.NotEqual:
          return new ExcelConditionalFormattingNotEqual(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.UniqueValues:
          return new ExcelConditionalFormattingUniqueValues(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.ThreeColorScale:
          return new ExcelConditionalFormattingThreeColorScale(
            address,
            priority,
            worksheet,
            itemElementNode);

        case eExcelConditionalFormattingRuleType.TwoColorScale:
          return new ExcelConditionalFormattingTwoColorScale(
            address,
            priority,
						worksheet,
						itemElementNode);
        case eExcelConditionalFormattingRuleType.ThreeIconSet:
          return new ExcelConditionalFormattingThreeIconSet(
            address,
            priority,
            worksheet,
            itemElementNode,
            null);
        case eExcelConditionalFormattingRuleType.FourIconSet:
          return new ExcelConditionalFormattingFourIconSet(
            address,
            priority,
            worksheet,
            itemElementNode,
            null);
        case eExcelConditionalFormattingRuleType.FiveIconSet:
          return new ExcelConditionalFormattingFiveIconSet(
            address,
            priority,
            worksheet,
            itemElementNode,
            null);
        case eExcelConditionalFormattingRuleType.DataBar:
          return new ExcelConditionalFormattingDataBar(
            eExcelConditionalFormattingRuleType.DataBar,
            address,
            priority,
            worksheet,
            itemElementNode,
            null);


        //TODO: Add DataBar
			}

			throw new InvalidOperationException(
        string.Format(
          ExcelConditionalFormattingConstants.Errors.NonSupportedRuleType,
          type.ToString()));
		}
コード例 #18
0
        /****************************************************************************************/

        #region Private Properties

        #endregion Private Properties

        /****************************************************************************************/

        #region Constructors
        /// <summary>
        /// 
        /// </summary>
        /// <param name="type"></param>
        /// <param name="priority"></param>
        /// <param name="address"></param>
        /// <param name="worksheet"></param>
        /// <param name="itemElementNode"></param>
        /// <param name="namespaceManager"></param>
        internal ExcelConditionalFormattingDataBar(
          eExcelConditionalFormattingRuleType type,
          ExcelAddress address,
          int priority,
          ExcelWorksheet worksheet,
          XmlNode itemElementNode,
          XmlNamespaceManager namespaceManager)
            : base(
              type,
              address,
              priority,
              worksheet,
              itemElementNode,
              (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager)
        {
            SchemaNodeOrder = new string[] { "cfvo", "color" };
            //Create the <dataBar> node inside the <cfRule> node
            if (itemElementNode!=null && itemElementNode.HasChildNodes)
            {
                bool high=false;
                foreach (XmlNode node in itemElementNode.SelectNodes("d:dataBar/d:cfvo", NameSpaceManager))
                {
                    if (high == false)
                    {
                        LowValue = new ExcelConditionalFormattingIconDataBarValue(
                                type,
                                address,
                                worksheet,
                                node,
                                namespaceManager);
                        high = true;
                    }
                    else
                    {
                        HighValue = new ExcelConditionalFormattingIconDataBarValue(
                                type,
                                address,
                                worksheet,
                                node,
                                namespaceManager);
                    }
                }
            }
            else
            {
                var iconSetNode = CreateComplexNode(
                  Node,
                  ExcelConditionalFormattingConstants.Paths.DataBar);

                var lowNode = iconSetNode.OwnerDocument.CreateElement(ExcelConditionalFormattingConstants.Paths.Cfvo, ExcelPackage.schemaMain);
                iconSetNode.AppendChild(lowNode);
                LowValue = new ExcelConditionalFormattingIconDataBarValue(eExcelConditionalFormattingValueObjectType.Min,
                        0,
                        "",
                        eExcelConditionalFormattingRuleType.DataBar,
                        address,
                        priority,
                        worksheet,
                        lowNode,
                        namespaceManager);

                var highNode = iconSetNode.OwnerDocument.CreateElement(ExcelConditionalFormattingConstants.Paths.Cfvo, ExcelPackage.schemaMain);
                iconSetNode.AppendChild(highNode);
                HighValue = new ExcelConditionalFormattingIconDataBarValue(eExcelConditionalFormattingValueObjectType.Max,
                        0,
                        "",
                        eExcelConditionalFormattingRuleType.DataBar,
                        address,
                        priority,
                        worksheet,
                        highNode,
                        namespaceManager);
            }
            Type = type;
        }
コード例 #19
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="type"></param>
 /// <param name="address"></param>
 /// <param name="priority"></param>
 /// <param name="worksheet"></param>
 internal ExcelConditionalFormattingTimePeriodGroup(
   eExcelConditionalFormattingRuleType type,
   ExcelAddress address,
   int priority,
   ExcelWorksheet worksheet)
   : this(
     type,
     address,
     priority,
     worksheet,
     null,
     null)
 {
 }
コード例 #20
0
 /// <summary>
 /// Initialize the <see cref="ExcelConditionalFormattingRule"/>
 /// </summary>
 /// <param name="type"></param>
 /// <param name="address"></param>
 /// <param name="priority"></param>
 /// <param name="worksheet"></param>
 /// <param name="namespaceManager"></param>
 internal ExcelConditionalFormattingRule(
   eExcelConditionalFormattingRuleType type,
   ExcelAddress address,
   int priority,
   ExcelWorksheet worksheet,
   XmlNamespaceManager namespaceManager)
   : this(
     type,
     address,
     priority,
     worksheet,
     null,
     namespaceManager)
 {
 }
コード例 #21
0
        public static ExcelConditionalFormattingRule Create(
            eExcelConditionalFormattingRuleType type,
            ExcelAddress address,
            int priority,
            ExcelWorksheet worksheet,
            XmlNode itemElementNode)
        {
            Require.Argument(type);
              Require.Argument(address).IsNotNull("address");
              Require.Argument(priority).IsInRange(1, int.MaxValue, "priority");
            Require.Argument(worksheet).IsNotNull("worksheet");

            // According the conditional formatting rule type
            switch (type)
            {
            case eExcelConditionalFormattingRuleType.AboveAverage:
              return new ExcelConditionalFormattingAboveAverage(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.AboveOrEqualAverage:
              return new ExcelConditionalFormattingAboveOrEqualAverage(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.BelowAverage:
              return new ExcelConditionalFormattingBelowAverage(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.BelowOrEqualAverage:
              return new ExcelConditionalFormattingBelowOrEqualAverage(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.AboveStdDev:
              return new ExcelConditionalFormattingAboveStdDev(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.BelowStdDev:
              return new ExcelConditionalFormattingBelowStdDev(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.Bottom:
              return new ExcelConditionalFormattingBottom(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.BottomPercent:
              return new ExcelConditionalFormattingBottomPercent(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.Top:
              return new ExcelConditionalFormattingTop(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.TopPercent:
              return new ExcelConditionalFormattingTopPercent(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.Last7Days:
              return new ExcelConditionalFormattingLast7Days(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.LastMonth:
              return new ExcelConditionalFormattingLastMonth(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.LastWeek:
              return new ExcelConditionalFormattingLastWeek(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.NextMonth:
              return new ExcelConditionalFormattingNextMonth(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.NextWeek:
              return new ExcelConditionalFormattingNextWeek(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.ThisMonth:
              return new ExcelConditionalFormattingThisMonth(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.ThisWeek:
              return new ExcelConditionalFormattingThisWeek(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.Today:
              return new ExcelConditionalFormattingToday(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.Tomorrow:
              return new ExcelConditionalFormattingTomorrow(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.Yesterday:
              return new ExcelConditionalFormattingYesterday(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.BeginsWith:
              return new ExcelConditionalFormattingBeginsWith(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.Between:
              return new ExcelConditionalFormattingBetween(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.ContainsBlanks:
              return new ExcelConditionalFormattingContainsBlanks(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.ContainsErrors:
              return new ExcelConditionalFormattingContainsErrors(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.ContainsText:
              return new ExcelConditionalFormattingContainsText(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.DuplicateValues:
              return new ExcelConditionalFormattingDuplicateValues(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.EndsWith:
              return new ExcelConditionalFormattingEndsWith(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.Equal:
              return new ExcelConditionalFormattingEqual(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.Expression:
              return new ExcelConditionalFormattingExpression(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.GreaterThan:
              return new ExcelConditionalFormattingGreaterThan(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.GreaterThanOrEqual:
              return new ExcelConditionalFormattingGreaterThanOrEqual(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.LessThan:
              return new ExcelConditionalFormattingLessThan(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.LessThanOrEqual:
              return new ExcelConditionalFormattingLessThanOrEqual(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.NotBetween:
              return new ExcelConditionalFormattingNotBetween(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.NotContainsBlanks:
              return new ExcelConditionalFormattingNotContainsBlanks(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.NotContainsErrors:
              return new ExcelConditionalFormattingNotContainsErrors(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.NotContainsText:
              return new ExcelConditionalFormattingNotContainsText(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.NotEqual:
              return new ExcelConditionalFormattingNotEqual(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.UniqueValues:
              return new ExcelConditionalFormattingUniqueValues(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.ThreeColorScale:
              return new ExcelConditionalFormattingThreeColorScale(
            address,
            priority,
            worksheet,
            itemElementNode);

            case eExcelConditionalFormattingRuleType.TwoColorScale:
              return new ExcelConditionalFormattingTwoColorScale(
            address,
            priority,
                        worksheet,
                        itemElementNode);

            //TODO: Add DataBar and IconSet
            }

            throw new InvalidOperationException(
            string.Format(
              ExcelConditionalFormattingConstants.Errors.NonSupportedRuleType,
              type.ToString()));
        }
コード例 #22
0
        /****************************************************************************************/

        #region Private Properties

        #endregion Private Properties

        /****************************************************************************************/

        #region Constructors
        /// <summary>
        ///
        /// </summary>
        /// <param name="type"></param>
        /// <param name="priority"></param>
        /// <param name="address"></param>
        /// <param name="worksheet"></param>
        /// <param name="itemElementNode"></param>
        /// <param name="namespaceManager"></param>
        internal ExcelConditionalFormattingDataBar(
            eExcelConditionalFormattingRuleType type,
            ExcelAddress address,
            int priority,
            ExcelWorksheet worksheet,
            XmlNode itemElementNode,
            XmlNamespaceManager namespaceManager)
            : base(
                type,
                address,
                priority,
                worksheet,
                itemElementNode,
                (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager)
        {
            SchemaNodeOrder = new string[] { "cfvo", "color" };
            //Create the <dataBar> node inside the <cfRule> node
            if (itemElementNode != null && itemElementNode.HasChildNodes)
            {
                bool high = false;
                foreach (XmlNode node in itemElementNode.SelectNodes("d:dataBar/d:cfvo", NameSpaceManager))
                {
                    if (high == false)
                    {
                        LowValue = new ExcelConditionalFormattingIconDataBarValue(
                            type,
                            address,
                            worksheet,
                            node,
                            namespaceManager);
                        high = true;
                    }
                    else
                    {
                        HighValue = new ExcelConditionalFormattingIconDataBarValue(
                            type,
                            address,
                            worksheet,
                            node,
                            namespaceManager);
                    }
                }
            }
            else
            {
                var iconSetNode = CreateComplexNode(
                    Node,
                    ExcelConditionalFormattingConstants.Paths.DataBar);

                var lowNode = iconSetNode.OwnerDocument.CreateElement(ExcelConditionalFormattingConstants.Paths.Cfvo, ExcelPackage.schemaMain);
                iconSetNode.AppendChild(lowNode);
                LowValue = new ExcelConditionalFormattingIconDataBarValue(eExcelConditionalFormattingValueObjectType.Min,
                                                                          0,
                                                                          "",
                                                                          eExcelConditionalFormattingRuleType.DataBar,
                                                                          address,
                                                                          priority,
                                                                          worksheet,
                                                                          lowNode,
                                                                          namespaceManager);

                var highNode = iconSetNode.OwnerDocument.CreateElement(ExcelConditionalFormattingConstants.Paths.Cfvo, ExcelPackage.schemaMain);
                iconSetNode.AppendChild(highNode);
                HighValue = new ExcelConditionalFormattingIconDataBarValue(eExcelConditionalFormattingValueObjectType.Max,
                                                                           0,
                                                                           "",
                                                                           eExcelConditionalFormattingRuleType.DataBar,
                                                                           address,
                                                                           priority,
                                                                           worksheet,
                                                                           highNode,
                                                                           namespaceManager);
            }
            Type = type;
        }
コード例 #23
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public static string GetAttributeByType(
            eExcelConditionalFormattingRuleType type)
        {
            switch (type)
            {
            case eExcelConditionalFormattingRuleType.AboveAverage:
            case eExcelConditionalFormattingRuleType.AboveOrEqualAverage:
            case eExcelConditionalFormattingRuleType.BelowAverage:
            case eExcelConditionalFormattingRuleType.BelowOrEqualAverage:
            case eExcelConditionalFormattingRuleType.AboveStdDev:
            case eExcelConditionalFormattingRuleType.BelowStdDev:
                return(ExcelConditionalFormattingConstants.RuleType.AboveAverage);

            case eExcelConditionalFormattingRuleType.Bottom:
            case eExcelConditionalFormattingRuleType.BottomPercent:
            case eExcelConditionalFormattingRuleType.Top:
            case eExcelConditionalFormattingRuleType.TopPercent:
                return(ExcelConditionalFormattingConstants.RuleType.Top10);

            case eExcelConditionalFormattingRuleType.Last7Days:
            case eExcelConditionalFormattingRuleType.LastMonth:
            case eExcelConditionalFormattingRuleType.LastWeek:
            case eExcelConditionalFormattingRuleType.NextMonth:
            case eExcelConditionalFormattingRuleType.NextWeek:
            case eExcelConditionalFormattingRuleType.ThisMonth:
            case eExcelConditionalFormattingRuleType.ThisWeek:
            case eExcelConditionalFormattingRuleType.Today:
            case eExcelConditionalFormattingRuleType.Tomorrow:
            case eExcelConditionalFormattingRuleType.Yesterday:
                return(ExcelConditionalFormattingConstants.RuleType.TimePeriod);

            case eExcelConditionalFormattingRuleType.Between:
            case eExcelConditionalFormattingRuleType.Equal:
            case eExcelConditionalFormattingRuleType.GreaterThan:
            case eExcelConditionalFormattingRuleType.GreaterThanOrEqual:
            case eExcelConditionalFormattingRuleType.LessThan:
            case eExcelConditionalFormattingRuleType.LessThanOrEqual:
            case eExcelConditionalFormattingRuleType.NotBetween:
            case eExcelConditionalFormattingRuleType.NotEqual:
                return(ExcelConditionalFormattingConstants.RuleType.CellIs);

            case eExcelConditionalFormattingRuleType.ThreeIconSet:
            case eExcelConditionalFormattingRuleType.FourIconSet:
            case eExcelConditionalFormattingRuleType.FiveIconSet:
                return(ExcelConditionalFormattingConstants.RuleType.IconSet);

            case eExcelConditionalFormattingRuleType.ThreeColorScale:
            case eExcelConditionalFormattingRuleType.TwoColorScale:
                return(ExcelConditionalFormattingConstants.RuleType.ColorScale);

            case eExcelConditionalFormattingRuleType.BeginsWith:
                return(ExcelConditionalFormattingConstants.RuleType.BeginsWith);

            case eExcelConditionalFormattingRuleType.ContainsBlanks:
                return(ExcelConditionalFormattingConstants.RuleType.ContainsBlanks);

            case eExcelConditionalFormattingRuleType.ContainsErrors:
                return(ExcelConditionalFormattingConstants.RuleType.ContainsErrors);

            case eExcelConditionalFormattingRuleType.ContainsText:
                return(ExcelConditionalFormattingConstants.RuleType.ContainsText);

            case eExcelConditionalFormattingRuleType.DuplicateValues:
                return(ExcelConditionalFormattingConstants.RuleType.DuplicateValues);

            case eExcelConditionalFormattingRuleType.EndsWith:
                return(ExcelConditionalFormattingConstants.RuleType.EndsWith);

            case eExcelConditionalFormattingRuleType.Expression:
                return(ExcelConditionalFormattingConstants.RuleType.Expression);

            case eExcelConditionalFormattingRuleType.NotContainsBlanks:
                return(ExcelConditionalFormattingConstants.RuleType.NotContainsBlanks);

            case eExcelConditionalFormattingRuleType.NotContainsErrors:
                return(ExcelConditionalFormattingConstants.RuleType.NotContainsErrors);

            case eExcelConditionalFormattingRuleType.NotContainsText:
                return(ExcelConditionalFormattingConstants.RuleType.NotContainsText);

            case eExcelConditionalFormattingRuleType.UniqueValues:
                return(ExcelConditionalFormattingConstants.RuleType.UniqueValues);

            case eExcelConditionalFormattingRuleType.DataBar:
                return(ExcelConditionalFormattingConstants.RuleType.DataBar);
            }

            throw new Exception(
                      ExcelConditionalFormattingConstants.Errors.MissingRuleType);
        }
コード例 #24
0
    /// <summary>
    /// 
    /// </summary>
    /// <param name="type"></param>
    /// <returns></returns>
    public static string GetAttributeByType(
      eExcelConditionalFormattingRuleType type)
    {
      switch (type)
      {
        case eExcelConditionalFormattingRuleType.AboveAverage:
        case eExcelConditionalFormattingRuleType.AboveOrEqualAverage:
        case eExcelConditionalFormattingRuleType.BelowAverage:
        case eExcelConditionalFormattingRuleType.BelowOrEqualAverage:
        case eExcelConditionalFormattingRuleType.AboveStdDev:
        case eExcelConditionalFormattingRuleType.BelowStdDev:
          return ExcelConditionalFormattingConstants.RuleType.AboveAverage;

        case eExcelConditionalFormattingRuleType.Bottom:
        case eExcelConditionalFormattingRuleType.BottomPercent:
        case eExcelConditionalFormattingRuleType.Top:
        case eExcelConditionalFormattingRuleType.TopPercent:
          return ExcelConditionalFormattingConstants.RuleType.Top10;

        case eExcelConditionalFormattingRuleType.Last7Days:
        case eExcelConditionalFormattingRuleType.LastMonth:
        case eExcelConditionalFormattingRuleType.LastWeek:
        case eExcelConditionalFormattingRuleType.NextMonth:
        case eExcelConditionalFormattingRuleType.NextWeek:
        case eExcelConditionalFormattingRuleType.ThisMonth:
        case eExcelConditionalFormattingRuleType.ThisWeek:
        case eExcelConditionalFormattingRuleType.Today:
        case eExcelConditionalFormattingRuleType.Tomorrow:
        case eExcelConditionalFormattingRuleType.Yesterday:
          return ExcelConditionalFormattingConstants.RuleType.TimePeriod;

        case eExcelConditionalFormattingRuleType.Between:
        case eExcelConditionalFormattingRuleType.Equal:
        case eExcelConditionalFormattingRuleType.GreaterThan:
        case eExcelConditionalFormattingRuleType.GreaterThanOrEqual:
        case eExcelConditionalFormattingRuleType.LessThan:
        case eExcelConditionalFormattingRuleType.LessThanOrEqual:
        case eExcelConditionalFormattingRuleType.NotBetween:
        case eExcelConditionalFormattingRuleType.NotEqual:
          return ExcelConditionalFormattingConstants.RuleType.CellIs;

        case eExcelConditionalFormattingRuleType.ThreeIconSet:
        case eExcelConditionalFormattingRuleType.FourIconSet:
        case eExcelConditionalFormattingRuleType.FiveIconSet:
          return ExcelConditionalFormattingConstants.RuleType.IconSet;

        case eExcelConditionalFormattingRuleType.ThreeColorScale:
        case eExcelConditionalFormattingRuleType.TwoColorScale:
          return ExcelConditionalFormattingConstants.RuleType.ColorScale;

        case eExcelConditionalFormattingRuleType.BeginsWith:
          return ExcelConditionalFormattingConstants.RuleType.BeginsWith;

        case eExcelConditionalFormattingRuleType.ContainsBlanks:
          return ExcelConditionalFormattingConstants.RuleType.ContainsBlanks;

        case eExcelConditionalFormattingRuleType.ContainsErrors:
          return ExcelConditionalFormattingConstants.RuleType.ContainsErrors;

        case eExcelConditionalFormattingRuleType.ContainsText:
          return ExcelConditionalFormattingConstants.RuleType.ContainsText;

        case eExcelConditionalFormattingRuleType.DuplicateValues:
          return ExcelConditionalFormattingConstants.RuleType.DuplicateValues;

        case eExcelConditionalFormattingRuleType.EndsWith:
          return ExcelConditionalFormattingConstants.RuleType.EndsWith;

        case eExcelConditionalFormattingRuleType.Expression:
          return ExcelConditionalFormattingConstants.RuleType.Expression;

        case eExcelConditionalFormattingRuleType.NotContainsBlanks:
          return ExcelConditionalFormattingConstants.RuleType.NotContainsBlanks;

        case eExcelConditionalFormattingRuleType.NotContainsErrors:
          return ExcelConditionalFormattingConstants.RuleType.NotContainsErrors;

        case eExcelConditionalFormattingRuleType.NotContainsText:
          return ExcelConditionalFormattingConstants.RuleType.NotContainsText;

        case eExcelConditionalFormattingRuleType.UniqueValues:
          return ExcelConditionalFormattingConstants.RuleType.UniqueValues;

        case eExcelConditionalFormattingRuleType.DataBar:
          return ExcelConditionalFormattingConstants.RuleType.DataBar;
      }

      throw new Exception(
        ExcelConditionalFormattingConstants.Errors.MissingRuleType);
    }
コード例 #25
0
		/// <summary>
		/// Get the cfvo (§18.3.1.11) node parent by the rule type. Can be any of the following:
		/// "colorScale" (§18.3.1.16); "dataBar" (§18.3.1.28); "iconSet" (§18.3.1.49)
		/// </summary>
		/// <param name="ruleType"></param>
		/// <returns></returns>
		public static string GetParentPathByRuleType(
			eExcelConditionalFormattingRuleType ruleType)
		{
			switch (ruleType)
			{
				case eExcelConditionalFormattingRuleType.TwoColorScale:
				case eExcelConditionalFormattingRuleType.ThreeColorScale:
					return ExcelConditionalFormattingConstants.Paths.ColorScale;

				case eExcelConditionalFormattingRuleType.ThreeIconSet:
                case eExcelConditionalFormattingRuleType.FourIconSet:
                case eExcelConditionalFormattingRuleType.FiveIconSet:
					        return ExcelConditionalFormattingConstants.Paths.IconSet;

                case eExcelConditionalFormattingRuleType.DataBar:
                  return ExcelConditionalFormattingConstants.Paths.DataBar;
              }

			return string.Empty;
		}
コード例 #26
0
		/// <summary>
		/// 
		/// </summary>
		/// <param name="position"></param>
		///<param name="ruleType"></param>
        /// <param name="topNode"></param>
		/// <param name="nameSpaceManager"></param>
		/// <returns></returns>
		public static XmlNode GetCfvoNodeByPosition(
			eExcelConditionalFormattingValueObjectPosition position,
			eExcelConditionalFormattingRuleType ruleType,
			XmlNode topNode,
			XmlNamespaceManager nameSpaceManager)
		{
			// Get the corresponding <cfvo> node (by the position)
			var node = topNode.SelectSingleNode(
				string.Format(
					"{0}[position()={1}]",
				// {0}
					ExcelConditionalFormattingConstants.Paths.Cfvo,
				// {1}
					ExcelConditionalFormattingValueObjectType.GetOrderByPosition(position, ruleType)),
				nameSpaceManager);

			if (node == null)
			{
				throw new Exception(
          ExcelConditionalFormattingConstants.Errors.MissingCfvoNode);
			}

			return node;
		}
        /****************************************************************************************/

        #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 cfvo (§18.3.1.11) node
    /// </summary>
    /// <param name="ruleType"></param>
    /// <param name="address"></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(
            eExcelConditionalFormattingRuleType ruleType,
            ExcelAddress address,
            ExcelWorksheet worksheet,
            XmlNode itemElementNode,
            XmlNamespaceManager namespaceManager)
            : base(
                namespaceManager,
                itemElementNode)
        {
            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,
			};

            //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);
                }
            }
            RuleType = ruleType;            
        }
コード例 #29
0
        public static ExcelConditionalFormattingRule Create(
            eExcelConditionalFormattingRuleType type,
            ExcelAddress address,
            int priority,
            ExcelWorksheet worksheet,
            XmlNode itemElementNode)
        {
            Require.Argument(type);
            Require.Argument(address).IsNotNull("address");
            Require.Argument(priority).IsInRange(0, int.MaxValue, "priority");
            Require.Argument(worksheet).IsNotNull("worksheet");

            // According the conditional formatting rule type
            switch (type)
            {
            case eExcelConditionalFormattingRuleType.AboveAverage:
                return(new ExcelConditionalFormattingAboveAverage(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.AboveOrEqualAverage:
                return(new ExcelConditionalFormattingAboveOrEqualAverage(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.BelowAverage:
                return(new ExcelConditionalFormattingBelowAverage(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.BelowOrEqualAverage:
                return(new ExcelConditionalFormattingBelowOrEqualAverage(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.AboveStdDev:
                return(new ExcelConditionalFormattingAboveStdDev(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.BelowStdDev:
                return(new ExcelConditionalFormattingBelowStdDev(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.Bottom:
                return(new ExcelConditionalFormattingBottom(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.BottomPercent:
                return(new ExcelConditionalFormattingBottomPercent(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.Top:
                return(new ExcelConditionalFormattingTop(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.TopPercent:
                return(new ExcelConditionalFormattingTopPercent(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.Last7Days:
                return(new ExcelConditionalFormattingLast7Days(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));


            case eExcelConditionalFormattingRuleType.LastMonth:
                return(new ExcelConditionalFormattingLastMonth(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.LastWeek:
                return(new ExcelConditionalFormattingLastWeek(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.NextMonth:
                return(new ExcelConditionalFormattingNextMonth(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.NextWeek:
                return(new ExcelConditionalFormattingNextWeek(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.ThisMonth:
                return(new ExcelConditionalFormattingThisMonth(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.ThisWeek:
                return(new ExcelConditionalFormattingThisWeek(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.Today:
                return(new ExcelConditionalFormattingToday(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.Tomorrow:
                return(new ExcelConditionalFormattingTomorrow(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.Yesterday:
                return(new ExcelConditionalFormattingYesterday(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.BeginsWith:
                return(new ExcelConditionalFormattingBeginsWith(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.Between:
                return(new ExcelConditionalFormattingBetween(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.ContainsBlanks:
                return(new ExcelConditionalFormattingContainsBlanks(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.ContainsErrors:
                return(new ExcelConditionalFormattingContainsErrors(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.ContainsText:
                return(new ExcelConditionalFormattingContainsText(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.DuplicateValues:
                return(new ExcelConditionalFormattingDuplicateValues(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.EndsWith:
                return(new ExcelConditionalFormattingEndsWith(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.Equal:
                return(new ExcelConditionalFormattingEqual(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.Expression:
                return(new ExcelConditionalFormattingExpression(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.GreaterThan:
                return(new ExcelConditionalFormattingGreaterThan(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.GreaterThanOrEqual:
                return(new ExcelConditionalFormattingGreaterThanOrEqual(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.LessThan:
                return(new ExcelConditionalFormattingLessThan(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.LessThanOrEqual:
                return(new ExcelConditionalFormattingLessThanOrEqual(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.NotBetween:
                return(new ExcelConditionalFormattingNotBetween(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.NotContainsBlanks:
                return(new ExcelConditionalFormattingNotContainsBlanks(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.NotContainsErrors:
                return(new ExcelConditionalFormattingNotContainsErrors(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.NotContainsText:
                return(new ExcelConditionalFormattingNotContainsText(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.NotEqual:
                return(new ExcelConditionalFormattingNotEqual(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.UniqueValues:
                return(new ExcelConditionalFormattingUniqueValues(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.ThreeColorScale:
                return(new ExcelConditionalFormattingThreeColorScale(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.TwoColorScale:
                return(new ExcelConditionalFormattingTwoColorScale(
                           address,
                           priority,
                           worksheet,
                           itemElementNode));

            case eExcelConditionalFormattingRuleType.ThreeIconSet:
                return(new ExcelConditionalFormattingThreeIconSet(
                           address,
                           priority,
                           worksheet,
                           itemElementNode,
                           null));

            case eExcelConditionalFormattingRuleType.FourIconSet:
                return(new ExcelConditionalFormattingFourIconSet(
                           address,
                           priority,
                           worksheet,
                           itemElementNode,
                           null));

            case eExcelConditionalFormattingRuleType.FiveIconSet:
                return(new ExcelConditionalFormattingFiveIconSet(
                           address,
                           priority,
                           worksheet,
                           itemElementNode,
                           null));

            case eExcelConditionalFormattingRuleType.DataBar:
                return(new ExcelConditionalFormattingDataBar(
                           eExcelConditionalFormattingRuleType.DataBar,
                           address,
                           priority,
                           worksheet,
                           itemElementNode,
                           null));


                //TODO: Add DataBar
            }

            throw new InvalidOperationException(
                      string.Format(
                          ExcelConditionalFormattingConstants.Errors.NonSupportedRuleType,
                          type.ToString()));
        }
		/// <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)
		{
            
		}
        /****************************************************************************************/

        #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="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)
		{
		}
コード例 #33
0
    /// <summary>
    /// Return cfvo §18.3.1.11 parent according to the rule type
    /// </summary>
    /// <param name="type"></param>
    /// <returns></returns>
    public static string GetCfvoParentPathByType(
      eExcelConditionalFormattingRuleType type)
    {
      switch (type)
      {
        case eExcelConditionalFormattingRuleType.TwoColorScale:
        case eExcelConditionalFormattingRuleType.ThreeColorScale:
          return ExcelConditionalFormattingConstants.Paths.ColorScale;

        case eExcelConditionalFormattingRuleType.ThreeIconSet:
        case eExcelConditionalFormattingRuleType.FourIconSet:
        case eExcelConditionalFormattingRuleType.FiveIconSet:
          return ExcelConditionalFormattingConstants.RuleType.IconSet;

        case eExcelConditionalFormattingRuleType.DataBar:
          return ExcelConditionalFormattingConstants.RuleType.DataBar;
      }

      throw new Exception(
        ExcelConditionalFormattingConstants.Errors.MissingRuleType);
    }
		/****************************************************************************************/

		#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;
		}
コード例 #35
0
		/// <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)
		{
		}
コード例 #36
0
		/****************************************************************************************/

		#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;
		}
コード例 #37
0
        /****************************************************************************************/

        #region Private Properties

        #endregion Private Properties

        /****************************************************************************************/

        #region Constructors
        /// <summary>
        ///
        /// </summary>
        /// <param name="type"></param>
        /// <param name="address"></param>
        /// <param name="priority"></param>
        /// <param name="worksheet"></param>
        /// <param name="itemElementNode"></param>
        /// <param name="namespaceManager"></param>
        internal ExcelConditionalFormattingIconSetBase(
            eExcelConditionalFormattingRuleType type,
            ExcelAddress address,
            int priority,
            ExcelWorksheet worksheet,
            XmlNode itemElementNode,
            XmlNamespaceManager namespaceManager)
            : base(
                type,
                address,
                priority,
                worksheet,
                itemElementNode,
                (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager)
        {
            if (itemElementNode != null && itemElementNode.HasChildNodes)
            {
                int pos = 1;
                foreach (XmlNode node in itemElementNode.SelectNodes("d:iconSet/d:cfvo", NameSpaceManager))
                {
                    if (pos == 1)
                    {
                        Icon1 = new ExcelConditionalFormattingIconDataBarValue(
                            type,
                            address,
                            worksheet,
                            node,
                            namespaceManager);
                    }
                    else if (pos == 2)
                    {
                        Icon2 = new ExcelConditionalFormattingIconDataBarValue(
                            type,
                            address,
                            worksheet,
                            node,
                            namespaceManager);
                    }
                    else if (pos == 3)
                    {
                        Icon3 = new ExcelConditionalFormattingIconDataBarValue(
                            type,
                            address,
                            worksheet,
                            node,
                            namespaceManager);
                    }
                    else
                    {
                        break;
                    }
                    pos++;
                }
            }
            else
            {
                var iconSetNode = CreateComplexNode(
                    Node,
                    ExcelConditionalFormattingConstants.Paths.IconSet);

                //Create the <iconSet> node inside the <cfRule> node
                double spann;
                if (type == eExcelConditionalFormattingRuleType.ThreeIconSet)
                {
                    spann = 3;
                }
                else if (type == eExcelConditionalFormattingRuleType.FourIconSet)
                {
                    spann = 4;
                }
                else
                {
                    spann = 5;
                }

                var iconNode1 = iconSetNode.OwnerDocument.CreateElement(ExcelConditionalFormattingConstants.Paths.Cfvo, ExcelPackage.schemaMain);
                iconSetNode.AppendChild(iconNode1);
                Icon1 = new ExcelConditionalFormattingIconDataBarValue(eExcelConditionalFormattingValueObjectType.Percent,
                                                                       0,
                                                                       "",
                                                                       eExcelConditionalFormattingRuleType.ThreeIconSet,
                                                                       address,
                                                                       priority,
                                                                       worksheet,
                                                                       iconNode1,
                                                                       namespaceManager);

                var iconNode2 = iconSetNode.OwnerDocument.CreateElement(ExcelConditionalFormattingConstants.Paths.Cfvo, ExcelPackage.schemaMain);
                iconSetNode.AppendChild(iconNode2);
                Icon2 = new ExcelConditionalFormattingIconDataBarValue(eExcelConditionalFormattingValueObjectType.Percent,
                                                                       Math.Round(100D / spann, 0),
                                                                       "",
                                                                       eExcelConditionalFormattingRuleType.ThreeIconSet,
                                                                       address,
                                                                       priority,
                                                                       worksheet,
                                                                       iconNode2,
                                                                       namespaceManager);

                var iconNode3 = iconSetNode.OwnerDocument.CreateElement(ExcelConditionalFormattingConstants.Paths.Cfvo, ExcelPackage.schemaMain);
                iconSetNode.AppendChild(iconNode3);
                Icon3 = new ExcelConditionalFormattingIconDataBarValue(eExcelConditionalFormattingValueObjectType.Percent,
                                                                       Math.Round(100D * (2D / spann), 0),
                                                                       "",
                                                                       eExcelConditionalFormattingRuleType.ThreeIconSet,
                                                                       address,
                                                                       priority,
                                                                       worksheet,
                                                                       iconNode3,
                                                                       namespaceManager);
                Type = type;
            }
        }
コード例 #38
0
        /// <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)
        {
        }