public ExcelDataValidationFormulaList(XmlNamespaceManager namespaceManager, XmlNode itemNode, string formulaPath) : base(namespaceManager, itemNode, formulaPath) { Require.Argument(formulaPath).IsNotNullOrEmpty("formulaPath"); _formulaPath = formulaPath; var values = new DataValidationList(); values.ListChanged += new EventHandler <EventArgs>(values_ListChanged); Values = values; SetInitialValues(); }
private void WriteWorkSheet_DataValidations_formulas_list(DataValidationList listItem, XElement dataValidationNode) { dataValidationNode.Add(new XElement(XName.Get("formula1", ExcelCommon.Schema_WorkBook_Main.NamespaceName), listItem.Formula.GetValueAsString())); }
private void ReadWorkSheet_dataValidations_ItemList(DataValidationList dvList, XElement node) { XElement formulaNode = node.Element(XName.Get("formula1", ExcelCommon.Schema_WorkBook_Main.NamespaceName)); SetListFormula(dvList, formulaNode); }
private void SetListFormula(DataValidationList dvList, XElement formulaNode) { if (formulaNode != null) { var @value = formulaNode.Value; if (!string.IsNullOrEmpty(@value)) { if (@value.StartsWith("\"") && @value.EndsWith("\"")) { @value = @value.TrimStart('"').TrimEnd('"'); var items = @value.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (var item in items) { dvList.Formula.Values.Add(item); } } else { dvList.Formula.Formula = @value; } } } }
private void ReadWorkSheet_dataValidations(WorkSheet target, XElement sheetNode) { target._Validations = new DataValidationCollection(target); foreach (XElement node in sheetNode.Elements(XName.Get("dataValidation", ExcelCommon.Schema_WorkBook_Main.NamespaceName))) { XAttribute dvXA = node.Attribute(XName.Get("type")); if (dvXA != null) { DataValidationType dvType = DataValidationType.GetBySchemaName(dvXA.Value); string address = node.Attribute(XName.Get("sqref")).Value; IDataValidation item = null; switch (dvType.Type) { case ExcelDataValidationType.TextLength: case ExcelDataValidationType.Whole: { DataValidationInt dvint = new DataValidationInt(address, dvType); ReadWorkSheet_dataValidations_Item(dvint, node); ReadWorkSheet_dataValidations_ItemInt(dvint, node); item = dvint; break; } case ExcelDataValidationType.Decimal: { DataValidationDecimal dvDecima = new DataValidationDecimal(address, dvType); ReadWorkSheet_dataValidations_Item(dvDecima, node); ReadWorkSheet_dataValidations_ItemDecima(dvDecima, node); item = dvDecima; break; } case ExcelDataValidationType.List: { DataValidationList dvList = new DataValidationList(address, dvType); ReadWorkSheet_dataValidations_Item(dvList, node); ReadWorkSheet_dataValidations_ItemList(dvList, node); item = dvList; break; } case ExcelDataValidationType.DateTime: { DataValidationDateTime dvDateTime = new DataValidationDateTime(address, dvType); ReadWorkSheet_dataValidations_Item(dvDateTime, node); ReadWorkSheet_dataValidations_ItemDateTime(dvDateTime, node); item = dvDateTime; break; } case ExcelDataValidationType.Time: { DataValidationTime dvTime = new DataValidationTime(address, dvType); ReadWorkSheet_dataValidations_Item(dvTime, node); ReadWorkSheet_dataValidations_ItemTime(dvTime, node); item = dvTime; break; } case ExcelDataValidationType.Custom: { DataValidationCustom dvCustom = new DataValidationCustom(address, dvType); ReadWorkSheet_dataValidations_Item(dvCustom, node); ReadWorkSheet_dataValidations_ItemCustom(dvCustom, node); item = dvCustom; break; } default: throw new InvalidOperationException("不存在验证: " + dvType.Type.ToString()); } target._Validations.Add(item); } } }
private void ReadWorkSheet_dataExtValidations(WorkSheet target, XElement sheetNode) { DataValidationList dvList = new DataValidationList(sheetNode.Element(XName.Get("sqref", ExcelCommon.Schema_Ext_Sqref)).Value, DataValidationType.List); ReadWorkSheet_dataValidations_Item(dvList, sheetNode); ReadWorkSheet_dataExtValidations_ItemList(dvList, sheetNode); if (target._Validations == null) { target._Validations = new DataValidationCollection(target); } target._Validations.Add(dvList); }