/// <summary>
        /// Creates an instance of <see cref="ExcelDataValidation"/> out of the given parameters.
        /// </summary>
        /// <param name="type"></param>
        /// <param name="worksheet"></param>
        /// <param name="address"></param>
        /// <param name="itemElementNode"></param>
        /// <returns></returns>
        public static ExcelDataValidation Create(ExcelDataValidationType type, ExcelWorksheet worksheet, string address,
                                                 eDataValidationStorageType storageType, XmlNode itemElementNode)
        {
            Require.Argument(type).IsNotNull("validationType");
            switch (type.Type)
            {
            case eDataValidationType.Any:
                return(new ExcelDataValidationAny(worksheet, address, type, storageType, itemElementNode));

            case eDataValidationType.TextLength:
            case eDataValidationType.Whole:
                return(new ExcelDataValidationInt(worksheet, address, type, storageType, itemElementNode));

            case eDataValidationType.Decimal:
                return(new ExcelDataValidationDecimal(worksheet, address, type, storageType, itemElementNode));

            case eDataValidationType.List:
                return(new ExcelDataValidationList(worksheet, address, type, storageType, itemElementNode));

            case eDataValidationType.DateTime:
                return(new ExcelDataValidationDateTime(worksheet, address, type, storageType, itemElementNode));

            case eDataValidationType.Time:
                return(new ExcelDataValidationTime(worksheet, address, type, storageType, itemElementNode));

            case eDataValidationType.Custom:
                return(new ExcelDataValidationCustom(worksheet, address, type, storageType, itemElementNode));

            default:
                throw new InvalidOperationException("Non supported validationtype: " + type.Type.ToString());
            }
        }
 /// <summary>
 /// Constructor which is only used in unit tests
 /// </summary>
 /// <param name="worksheet"></param>
 /// <param name="address"></param>
 /// <param name="validationType"></param>
 /// <param name="itemElementNode"></param>
 /// <param name="namespaceManager"></param>
 internal ExcelDataValidationCustom(ExcelWorksheet worksheet, string address, ExcelDataValidationType validationType, XmlNode itemElementNode,
                                    XmlNamespaceManager namespaceManager, eDataValidationStorageType storageType = eDataValidationStorageType.Normal)
     : base(worksheet, address, validationType, storageType, itemElementNode, namespaceManager)
 {
     Formula = storageType == eDataValidationStorageType.X14
         ? new ExcelDataValidationFormulaCustom(NameSpaceManager, TopNode, _x14Formula1Path)
         : new ExcelDataValidationFormulaCustom(NameSpaceManager, TopNode, _formula1Path);
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="worksheet"></param>
 /// <param name="address"></param>
 /// <param name="validationType"></param>
 /// <param name="itemElementNode"></param>
 internal ExcelDataValidationDecimal(ExcelWorksheet worksheet, string address, ExcelDataValidationType validationType,
                                     eDataValidationStorageType storageType, XmlNode itemElementNode)
     : base(worksheet, address, validationType, storageType, itemElementNode)
 {
     if (storageType == eDataValidationStorageType.X14)
     {
         Formula  = new ExcelDataValidationFormulaDecimal(NameSpaceManager, TopNode, _x14Formula1Path);
         Formula2 = new ExcelDataValidationFormulaDecimal(NameSpaceManager, TopNode, _x14Formula2Path);
     }
     else
     {
         Formula  = new ExcelDataValidationFormulaDecimal(NameSpaceManager, TopNode, _formula1Path);
         Formula2 = new ExcelDataValidationFormulaDecimal(NameSpaceManager, TopNode, _formula2Path);
     }
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="worksheet">worksheet that owns the validation</param>
 /// <param name="itemElementNode">Xml top node (dataValidations) when importing xml</param>
 /// <param name="validationType">Data validation type</param>
 /// <param name="address">address for data validation</param>
 /// <param name="namespaceManager">Xml Namespace manager</param>
 internal ExcelDataValidation(ExcelWorksheet worksheet, string address, ExcelDataValidationType validationType,
                              eDataValidationStorageType storageType, XmlNode itemElementNode, XmlNamespaceManager namespaceManager)
     : base(namespaceManager != null ? namespaceManager : worksheet.NameSpaceManager)
 {
     Require.Argument(address).IsNotNullOrEmpty("address");
     address = CheckAndFixRangeAddress(address);
     if (itemElementNode == null && storageType == eDataValidationStorageType.Normal)
     {
         //var xmlDoc = worksheet.WorksheetXml;
         TopNode = worksheet.WorksheetXml.SelectSingleNode("//d:dataValidations", worksheet.NameSpaceManager);
         // did not succeed using the XmlHelper methods here... so I'm creating the new node using XmlDocument...
         var nsUri = NameSpaceManager.LookupNamespace("d");
         //itemElementNode = TopNode.OwnerDocument.CreateElement(_itemElementNodeName, nsUri);
         itemElementNode = TopNode.OwnerDocument.CreateElement(_itemElementNodeName.Split(':')[1], nsUri);
         TopNode.AppendChild(itemElementNode);
     }
     _storageType   = storageType;
     TopNode        = itemElementNode;
     ValidationType = validationType;
     Address        = new ExcelAddress(address);
     Init();
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="worksheet">worksheet that owns the validation</param>
 /// <param name="itemElementNode">Xml top node (dataValidations)</param>
 /// <param name="validationType">Data validation type</param>
 /// <param name="address">address for data validation</param>
 internal ExcelDataValidation(ExcelWorksheet worksheet, string address, ExcelDataValidationType validationType,
                              eDataValidationStorageType storageType, XmlNode itemElementNode)
     : this(worksheet, address, validationType, storageType, itemElementNode, null)
 {
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="worksheet">Worksheet that owns the validation</param>
 /// <param name="itemElementNode">Xml top node (dataValidations)</param>
 /// <param name="validationType">Data validation type</param>
 /// <param name="address">address for data validation</param>
 /// <param name="namespaceManager">for test purposes</param>
 internal ExcelDataValidationWithFormula2(ExcelWorksheet worksheet, string address, ExcelDataValidationType validationType,
                                          eDataValidationStorageType storageType, XmlNode itemElementNode, XmlNamespaceManager namespaceManager)
     : base(worksheet, address, validationType, storageType, itemElementNode, namespaceManager)
 {
 }
예제 #7
0
 /// <summary>
 /// Constructor which is only used for unit tests
 /// </summary>
 /// <param name="worksheet"></param>
 /// <param name="address"></param>
 /// <param name="validationType"></param>
 /// <param name="itemElementNode"></param>
 /// <param name="namespaceManager"></param>
 internal ExcelDataValidationTime(ExcelWorksheet worksheet, string address, ExcelDataValidationType validationType,
                                  XmlNode itemElementNode, XmlNamespaceManager namespaceManager, eDataValidationStorageType storageType = eDataValidationStorageType.Normal)
     : base(worksheet, address, validationType, storageType, itemElementNode, namespaceManager)
 {
     Formula  = new ExcelDataValidationFormulaTime(NameSpaceManager, TopNode, _formula1Path);
     Formula2 = new ExcelDataValidationFormulaTime(NameSpaceManager, TopNode, _formula2Path);
 }