private void ReadWorkSheet_dataValidations_ItemDecima(DataValidationDecimal dvDecima, XElement node) { XElement formulaNode = node.Element(XName.Get("formula1", ExcelCommon.Schema_WorkBook_Main.NamespaceName)); if (formulaNode != null) { DataValidationFormulaDecimal formulaValue = new DataValidationFormulaDecimal(); ReadWorkSheet_dataValidations_ItemDecima_formula(formulaNode.Value, ref formulaValue); dvDecima.Formula = formulaValue; } formulaNode = node.Element(XName.Get("formula2", ExcelCommon.Schema_WorkBook_Main.NamespaceName)); if (formulaNode != null) { DataValidationFormulaDecimal formulaValue = new DataValidationFormulaDecimal(); ReadWorkSheet_dataValidations_ItemDecima_formula(formulaNode.Value, ref formulaValue); dvDecima.Formula2 = formulaValue; } }
private void WriteWorkSheet_DataValidations_formulas_decimal(DataValidationDecimal decimalItem, XElement dataValidationNode) { if (decimalItem.ValidationType.AllowOperator) { if (decimalItem.Operator != ExcelDataValidationOperator.between) { dataValidationNode.Add(new XAttribute(XName.Get("operator"), decimalItem.Operator.ToString())); } } dataValidationNode.Add(new XElement(XName.Get("formula1", ExcelCommon.Schema_WorkBook_Main.NamespaceName), decimalItem.Formula.GetValueAsString())); if (decimalItem.Operator == ExcelDataValidationOperator.between || decimalItem.Operator == ExcelDataValidationOperator.notBetween) { dataValidationNode.Add(new XElement(XName.Get("formula2", ExcelCommon.Schema_WorkBook_Main.NamespaceName), decimalItem.Formula2.GetValueAsString())); } }
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); } } }