/******************************************************************************* * 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 { /// /// The conditional formatting constants /// 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; // §18.3.1.18 node // can appear more than once in a worksheet internal const string ConditionalFormatting = "d:" + Nodes.ConditionalFormatting; // §18.3.1.10 node // can appear more than once in a internal const string CfRule = "d:" + Nodes.CfRule; // §18.3.1.16 node internal const string ColorScale = "d:" + Nodes.ColorScale; // §18.3.1.11 node internal const string Cfvo = "d:" + Nodes.Cfvo; // §18.3.1.15 node internal const string Color = "d:" + Nodes.Color; // §18.3.1.28 node internal const string DataBar = "d:" + Nodes.DataBar; // §18.3.1.49 node internal const string IconSet = "d:" + Nodes.IconSet; // §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 } }