|  | /******************************************************************************* | 
|  | * You may amend and distribute as you like, but don't remove this header! | 
|  | * | 
|  | * EPPlus provides server-side generation of Excel 2007/2010 spreadsheets. | 
|  | * See http://www.codeplex.com/EPPlus for details. | 
|  | * | 
|  | * Copyright (C) 2011  Jan Källman | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  |  | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 
|  | * See the GNU Lesser General Public License for more details. | 
|  | * | 
|  | * The GNU Lesser General Public License can be viewed at http://www.opensource.org/licenses/lgpl-license.php | 
|  | * If you unfamiliar with this license or have questions about it, here is an http://www.gnu.org/licenses/gpl-faq.html | 
|  | * | 
|  | * All code and executables are provided "as is" with no warranty either express or implied. | 
|  | * The author accepts no liability for any damage or loss of business that this product may cause. | 
|  | * | 
|  | * Code change notes: | 
|  | * | 
|  | * Author          Change						                  Date | 
|  | * ****************************************************************************** | 
|  | * Eyal Seagull    Conditional Formatting Adaption    2012-04-03 | 
|  | *******************************************************************************/ | 
|  | using System; | 
|  | using System.Collections.Generic; | 
|  | using System.Linq; | 
|  | using System.Text; | 
|  | using System.Xml; | 
|  |  | 
|  | namespace OfficeOpenXml.ConditionalFormatting | 
|  | { | 
|  | /// <summary> | 
|  | /// The conditional formatting constants | 
|  | /// </summary> | 
|  | internal static class ExcelConditionalFormattingConstants | 
|  | { | 
|  | #region Errors | 
|  | internal class Errors | 
|  | { | 
|  | internal const string CommaSeparatedAddresses = @"Multiple addresses may not be commaseparated, use space instead"; | 
|  | internal const string InvalidCfruleObject = @"The supplied item must inherit OfficeOpenXml.ConditionalFormatting.ExcelConditionalFormattingRule"; | 
|  | internal const string InvalidConditionalFormattingObject = @"The supplied item must inherit OfficeOpenXml.ConditionalFormatting.ExcelConditionalFormatting"; | 
|  | internal const string InvalidPriority = @"Invalid priority number. Must be bigger than zero"; | 
|  | internal const string InvalidRemoveRuleOperation = @"Invalid remove rule operation"; | 
|  | internal const string MissingCfvoNode = @"Missing 'cfvo' node in Conditional Formatting"; | 
|  | internal const string MissingCfvoParentNode = @"Missing 'cfvo' parent node in Conditional Formatting"; | 
|  | internal const string MissingConditionalFormattingNode = @"Missing 'conditionalFormatting' node in Conditional Formatting"; | 
|  | internal const string MissingItemRuleList = @"Missing item with address '{0}' in Conditional Formatting Rule List"; | 
|  | internal const string MissingPriorityAttribute = @"Missing 'priority' attribute in Conditional Formatting Rule"; | 
|  | internal const string MissingRuleType = @"Missing eExcelConditionalFormattingRuleType Type in Conditional Formatting"; | 
|  | internal const string MissingSqrefAttribute = @"Missing 'sqref' attribute in Conditional Formatting"; | 
|  | internal const string MissingTypeAttribute = @"Missing 'type' attribute in Conditional Formatting Rule"; | 
|  | internal const string MissingWorksheetNode = @"Missing 'worksheet' node"; | 
|  | internal const string NonSupportedRuleType = @"Non supported conditionalFormattingType: {0}"; | 
|  | internal const string UnexistentCfvoTypeAttribute = @"Unexistent eExcelConditionalFormattingValueObjectType attribute in Conditional Formatting"; | 
|  | internal const string UnexistentOperatorTypeAttribute = @"Unexistent eExcelConditionalFormattingOperatorType attribute in Conditional Formatting"; | 
|  | internal const string UnexistentTimePeriodTypeAttribute = @"Unexistent eExcelConditionalFormattingTimePeriodType attribute in Conditional Formatting"; | 
|  | internal const string UnexpectedRuleTypeAttribute = @"Unexpected eExcelConditionalFormattingRuleType attribute in Conditional Formatting Rule"; | 
|  | internal const string UnexpectedRuleTypeName = @"Unexpected eExcelConditionalFormattingRuleType TypeName in Conditional Formatting Rule"; | 
|  | internal const string WrongNumberCfvoColorNodes = @"Wrong number of 'cfvo'/'color' nodes in Conditional Formatting Rule"; | 
|  | } | 
|  | #endregion Errors | 
|  |  | 
|  | #region Nodes | 
|  | internal class Nodes | 
|  | { | 
|  | internal const string Worksheet = "worksheet"; | 
|  | internal const string ConditionalFormatting = "conditionalFormatting"; | 
|  | internal const string CfRule = "cfRule"; | 
|  | internal const string ColorScale = "colorScale"; | 
|  | internal const string Cfvo = "cfvo"; | 
|  | internal const string Color = "color"; | 
|  | internal const string DataBar = "dataBar"; | 
|  | internal const string IconSet = "iconSet"; | 
|  | internal const string Formula = "formula"; | 
|  | } | 
|  | #endregion Nodes | 
|  |  | 
|  | #region Attributes | 
|  | internal class Attributes | 
|  | { | 
|  | internal const string AboveAverage = "aboveAverage"; | 
|  | internal const string Bottom = "bottom"; | 
|  | internal const string DxfId = "dxfId"; | 
|  | internal const string EqualAverage = "equalAverage"; | 
|  | internal const string IconSet = "iconSet"; | 
|  | internal const string Operator = "operator"; | 
|  | internal const string Percent = "percent"; | 
|  | internal const string Priority = "priority"; | 
|  | internal const string Rank = "rank"; | 
|  | internal const string Reverse = "reverse"; | 
|  | internal const string Rgb = "rgb"; | 
|  | internal const string ShowValue = "showValue"; | 
|  | internal const string Sqref = "sqref"; | 
|  | internal const string StdDev = "stdDev"; | 
|  | internal const string StopIfTrue = "stopIfTrue"; | 
|  | internal const string Text = "text"; | 
|  | internal const string Theme = "theme"; | 
|  | internal const string TimePeriod = "timePeriod"; | 
|  | internal const string Tint = "tint"; | 
|  | internal const string Type = "type"; | 
|  | internal const string Val = "val"; | 
|  | } | 
|  | #endregion Attributes | 
|  |  | 
|  | #region XML Paths | 
|  | internal class Paths | 
|  | { | 
|  | // Main node and attributes | 
|  | internal const string Worksheet = "d:" + Nodes.Worksheet; | 
|  |  | 
|  | // <conditionalFormatting> §18.3.1.18 node | 
|  | // can appear more than once in a worksheet | 
|  | internal const string ConditionalFormatting = "d:" + Nodes.ConditionalFormatting; | 
|  |  | 
|  | // <cfRule> §18.3.1.10 node | 
|  | // can appear more than once in a <conditionalFormatting> | 
|  | internal const string CfRule = "d:" + Nodes.CfRule; | 
|  |  | 
|  | // <colorScale> §18.3.1.16 node | 
|  | internal const string ColorScale = "d:" + Nodes.ColorScale; | 
|  |  | 
|  | // <cfvo> §18.3.1.11 node | 
|  | internal const string Cfvo = "d:" + Nodes.Cfvo; | 
|  |  | 
|  | // <color> §18.3.1.15 node | 
|  | internal const string Color = "d:" + Nodes.Color; | 
|  |  | 
|  | // <dataBar> §18.3.1.28 node | 
|  | internal const string DataBar = "d:" + Nodes.DataBar; | 
|  |  | 
|  | // <iconSet> §18.3.1.49 node | 
|  | internal const string IconSet = "d:" + Nodes.IconSet; | 
|  |  | 
|  | // <formula> §18.3.1.43 node | 
|  | internal const string Formula = "d:" + Nodes.Formula; | 
|  |  | 
|  | // Attributes (for all the nodes) | 
|  | internal const string AboveAverageAttribute = "@" + Attributes.AboveAverage; | 
|  | internal const string BottomAttribute = "@" + Attributes.Bottom; | 
|  | internal const string DxfIdAttribute = "@" + Attributes.DxfId; | 
|  | internal const string EqualAverageAttribute = "@" + Attributes.EqualAverage; | 
|  | internal const string IconSetAttribute = "@" + Attributes.IconSet; | 
|  | internal const string OperatorAttribute = "@" + Attributes.Operator; | 
|  | internal const string PercentAttribute = "@" + Attributes.Percent; | 
|  | internal const string PriorityAttribute = "@" + Attributes.Priority; | 
|  | internal const string RankAttribute = "@" + Attributes.Rank; | 
|  | internal const string ReverseAttribute = "@" + Attributes.Reverse; | 
|  | internal const string RgbAttribute = "@" + Attributes.Rgb; | 
|  | internal const string ShowValueAttribute = "@" + Attributes.ShowValue; | 
|  | internal const string SqrefAttribute = "@" + Attributes.Sqref; | 
|  | internal const string StdDevAttribute = "@" + Attributes.StdDev; | 
|  | internal const string StopIfTrueAttribute = "@" + Attributes.StopIfTrue; | 
|  | internal const string TextAttribute = "@" + Attributes.Text; | 
|  | internal const string ThemeAttribute = "@" + Attributes.Theme; | 
|  | internal const string TimePeriodAttribute = "@" + Attributes.TimePeriod; | 
|  | internal const string TintAttribute = "@" + Attributes.Tint; | 
|  | internal const string TypeAttribute = "@" + Attributes.Type; | 
|  | internal const string ValAttribute = "@" + Attributes.Val; | 
|  | } | 
|  | #endregion XML Paths | 
|  |  | 
|  | #region Rule Type ST_CfType §18.18.12 (with small EPPlus changes) | 
|  | internal class RuleType | 
|  | { | 
|  | internal const string AboveAverage = "aboveAverage"; | 
|  | internal const string BeginsWith = "beginsWith"; | 
|  | internal const string CellIs = "cellIs"; | 
|  | internal const string ColorScale = "colorScale"; | 
|  | internal const string ContainsBlanks = "containsBlanks"; | 
|  | internal const string ContainsErrors = "containsErrors"; | 
|  | internal const string ContainsText = "containsText"; | 
|  | internal const string DataBar = "dataBar"; | 
|  | internal const string DuplicateValues = "duplicateValues"; | 
|  | internal const string EndsWith = "endsWith"; | 
|  | internal const string Expression = "expression"; | 
|  | internal const string IconSet = "iconSet"; | 
|  | internal const string NotContainsBlanks = "notContainsBlanks"; | 
|  | internal const string NotContainsErrors = "notContainsErrors"; | 
|  | internal const string NotContainsText = "notContainsText"; | 
|  | internal const string TimePeriod = "timePeriod"; | 
|  | internal const string Top10 = "top10"; | 
|  | internal const string UniqueValues = "uniqueValues"; | 
|  |  | 
|  | // EPPlus Extended Types | 
|  | internal const string AboveOrEqualAverage = "aboveOrEqualAverage"; | 
|  | internal const string AboveStdDev = "aboveStdDev"; | 
|  | internal const string BelowAverage = "belowAverage"; | 
|  | internal const string BelowOrEqualAverage = "belowOrEqualAverage"; | 
|  | internal const string BelowStdDev = "belowStdDev"; | 
|  | internal const string Between = "between"; | 
|  | internal const string Bottom = "bottom"; | 
|  | internal const string BottomPercent = "bottomPercent"; | 
|  | internal const string Equal = "equal"; | 
|  | internal const string GreaterThan = "greaterThan"; | 
|  | internal const string GreaterThanOrEqual = "greaterThanOrEqual"; | 
|  | internal const string IconSet3 = "iconSet3"; | 
|  | internal const string IconSet4 = "iconSet4"; | 
|  | internal const string IconSet5 = "iconSet5"; | 
|  | internal const string Last7Days = "last7Days"; | 
|  | internal const string LastMonth = "lastMonth"; | 
|  | internal const string LastWeek = "lastWeek"; | 
|  | internal const string LessThan = "lessThan"; | 
|  | internal const string LessThanOrEqual = "lessThanOrEqual"; | 
|  | internal const string NextMonth = "nextMonth"; | 
|  | internal const string NextWeek = "nextWeek"; | 
|  | internal const string NotBetween = "notBetween"; | 
|  | internal const string NotEqual = "notEqual"; | 
|  | internal const string ThisMonth = "thisMonth"; | 
|  | internal const string ThisWeek = "thisWeek"; | 
|  | internal const string ThreeColorScale = "threeColorScale"; | 
|  | internal const string Today = "today"; | 
|  | internal const string Tomorrow = "tomorrow"; | 
|  | internal const string Top = "top"; | 
|  | internal const string TopPercent = "topPercent"; | 
|  | internal const string TwoColorScale = "twoColorScale"; | 
|  | internal const string Yesterday = "yesterday"; | 
|  | } | 
|  | #endregion Rule Type ST_CfType §18.18.12 (with small EPPlus changes) | 
|  |  | 
|  | #region CFVO Type ST_CfvoType §18.18.13 | 
|  | internal class CfvoType | 
|  | { | 
|  | internal const string Min = "min"; | 
|  | internal const string Max = "max"; | 
|  | internal const string Num = "num"; | 
|  | internal const string Formula = "formula"; | 
|  | internal const string Percent = "percent"; | 
|  | internal const string Percentile = "percentile"; | 
|  | } | 
|  | #endregion CFVO Type ST_CfvoType §18.18.13 | 
|  |  | 
|  | #region Operator Type ST_ConditionalFormattingOperator §18.18.15 | 
|  | internal class Operators | 
|  | { | 
|  | internal const string BeginsWith = "beginsWith"; | 
|  | internal const string Between = "between"; | 
|  | internal const string ContainsText = "containsText"; | 
|  | internal const string EndsWith = "endsWith"; | 
|  | internal const string Equal = "equal"; | 
|  | internal const string GreaterThan = "greaterThan"; | 
|  | internal const string GreaterThanOrEqual = "greaterThanOrEqual"; | 
|  | internal const string LessThan = "lessThan"; | 
|  | internal const string LessThanOrEqual = "lessThanOrEqual"; | 
|  | internal const string NotBetween = "notBetween"; | 
|  | internal const string NotContains = "notContains"; | 
|  | internal const string NotEqual = "notEqual"; | 
|  | } | 
|  | #endregion Operator Type ST_ConditionalFormattingOperator §18.18.15 | 
|  |  | 
|  | #region Time Period Type ST_TimePeriod §18.18.82 | 
|  | internal class TimePeriods | 
|  | { | 
|  | internal const string Last7Days = "last7Days"; | 
|  | internal const string LastMonth = "lastMonth"; | 
|  | internal const string LastWeek = "lastWeek"; | 
|  | internal const string NextMonth = "nextMonth"; | 
|  | internal const string NextWeek = "nextWeek"; | 
|  | internal const string ThisMonth = "thisMonth"; | 
|  | internal const string ThisWeek = "thisWeek"; | 
|  | internal const string Today = "today"; | 
|  | internal const string Tomorrow = "tomorrow"; | 
|  | internal const string Yesterday = "yesterday"; | 
|  | } | 
|  | #endregion Time Period Type ST_TimePeriod §18.18.82 | 
|  |  | 
|  | #region Colors | 
|  | internal class Colors | 
|  | { | 
|  | internal const string CfvoLowValue = @"#FFF8696B"; | 
|  | internal const string CfvoMiddleValue = @"#FFFFEB84"; | 
|  | internal const string CfvoHighValue = @"#FF63BE7B"; | 
|  | } | 
|  | #endregion Colors | 
|  | } | 
|  | } |