|  | /******************************************************************************* | 
|  | * 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    2012-04-03 | 
|  | *******************************************************************************/ | 
|  | using System; | 
|  | using System.Collections.Generic; | 
|  | using System.Linq; | 
|  | using System.Text; | 
|  | using OfficeOpenXml.Utils; | 
|  | using OfficeOpenXml.ConditionalFormatting.Contracts; | 
|  |  | 
|  | namespace OfficeOpenXml.ConditionalFormatting | 
|  | { | 
|  | internal class RangeConditionalFormatting | 
|  | : IRangeConditionalFormatting | 
|  | { | 
|  | #region Public Properties | 
|  | public ExcelWorksheet _worksheet; | 
|  | public ExcelAddress _address; | 
|  | #endregion Public Properties | 
|  |  | 
|  | #region Constructors | 
|  | public RangeConditionalFormatting( | 
|  | ExcelWorksheet worksheet, | 
|  | ExcelAddress address) | 
|  | { | 
|  | Require.Argument(worksheet).IsNotNull("worksheet"); | 
|  | Require.Argument(address).IsNotNull("address"); | 
|  |  | 
|  | _worksheet = worksheet; | 
|  | _address = address; | 
|  | } | 
|  | #endregion Constructors | 
|  |  | 
|  | #region Conditional Formatting Rule Types | 
|  | /// <summary> | 
|  | /// Add AboveOrEqualAverage Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingAverageGroup AddAboveAverage() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddAboveAverage( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add AboveOrEqualAverage Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingAverageGroup AddAboveOrEqualAverage() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddAboveOrEqualAverage( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add BelowOrEqualAverage Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingAverageGroup AddBelowAverage() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddBelowAverage( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add BelowOrEqualAverage Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingAverageGroup AddBelowOrEqualAverage() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddBelowOrEqualAverage( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add AboveStdDev Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingStdDevGroup AddAboveStdDev() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddAboveStdDev( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add BelowStdDev Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingStdDevGroup AddBelowStdDev() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddBelowStdDev( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add Bottom Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingTopBottomGroup AddBottom() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddBottom( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add BottomPercent Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingTopBottomGroup AddBottomPercent() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddBottomPercent( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add Top Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingTopBottomGroup AddTop() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddTop( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add TopPercent Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingTopBottomGroup AddTopPercent() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddTopPercent( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add Last7Days Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingTimePeriodGroup AddLast7Days() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddLast7Days( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add LastMonth Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingTimePeriodGroup AddLastMonth() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddLastMonth( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add LastWeek Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingTimePeriodGroup AddLastWeek() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddLastWeek( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add NextMonth Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingTimePeriodGroup AddNextMonth() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddNextMonth( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add NextWeek Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingTimePeriodGroup AddNextWeek() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddNextWeek( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add ThisMonth Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingTimePeriodGroup AddThisMonth() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddThisMonth( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add ThisWeek Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingTimePeriodGroup AddThisWeek() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddThisWeek( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add Today Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingTimePeriodGroup AddToday() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddToday( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add Tomorrow Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingTimePeriodGroup AddTomorrow() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddTomorrow( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add Yesterday Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingTimePeriodGroup AddYesterday() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddYesterday( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add BeginsWith Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingBeginsWith AddBeginsWith() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddBeginsWith( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add Between Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingBetween AddBetween() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddBetween( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add ContainsBlanks Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingContainsBlanks AddContainsBlanks() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddContainsBlanks( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add ContainsErrors Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingContainsErrors AddContainsErrors() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddContainsErrors( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add ContainsText Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingContainsText AddContainsText() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddContainsText( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add DuplicateValues Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingDuplicateValues AddDuplicateValues() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddDuplicateValues( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add EndsWith Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingEndsWith AddEndsWith() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddEndsWith( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add Equal Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingEqual AddEqual() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddEqual( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add Expression Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingExpression AddExpression() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddExpression( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add GreaterThan Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingGreaterThan AddGreaterThan() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddGreaterThan( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add GreaterThanOrEqual Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingGreaterThanOrEqual AddGreaterThanOrEqual() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddGreaterThanOrEqual( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add LessThan Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingLessThan AddLessThan() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddLessThan( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add LessThanOrEqual Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingLessThanOrEqual AddLessThanOrEqual() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddLessThanOrEqual( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add NotBetween Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingNotBetween AddNotBetween() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddNotBetween( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add NotContainsBlanks Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingNotContainsBlanks AddNotContainsBlanks() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddNotContainsBlanks( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add NotContainsErrors Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingNotContainsErrors AddNotContainsErrors() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddNotContainsErrors( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add NotContainsText Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingNotContainsText AddNotContainsText() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddNotContainsText( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add NotEqual Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingNotEqual AddNotEqual() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddNotEqual( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add UniqueValues Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingUniqueValues AddUniqueValues() | 
|  | { | 
|  | return _worksheet.ConditionalFormatting.AddUniqueValues( | 
|  | _address); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add ThreeColorScale Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingThreeColorScale AddThreeColorScale() | 
|  | { | 
|  | return (IExcelConditionalFormattingThreeColorScale)(_worksheet.ConditionalFormatting.AddRule( | 
|  | eExcelConditionalFormattingRuleType.ThreeColorScale, | 
|  | _address)); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Add TwoColorScale Conditional Formatting | 
|  | /// </summary> | 
|  | ///  <returns></returns> | 
|  | public IExcelConditionalFormattingTwoColorScale AddTwoColorScale() | 
|  | { | 
|  | return (IExcelConditionalFormattingTwoColorScale)(_worksheet.ConditionalFormatting.AddRule( | 
|  | eExcelConditionalFormattingRuleType.TwoColorScale, | 
|  | _address)); | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Adds a ThreeIconSet rule | 
|  | /// </summary> | 
|  | /// <param name="IconSet"></param> | 
|  | /// <returns></returns> | 
|  | public IExcelConditionalFormattingThreeIconSet<eExcelconditionalFormatting3IconsSetType> AddThreeIconSet(eExcelconditionalFormatting3IconsSetType IconSet) | 
|  | { | 
|  | var rule = (IExcelConditionalFormattingThreeIconSet<eExcelconditionalFormatting3IconsSetType>)(_worksheet.ConditionalFormatting.AddRule( | 
|  | eExcelConditionalFormattingRuleType.ThreeIconSet, | 
|  | _address)); | 
|  | rule.IconSet = IconSet; | 
|  | return rule; | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Adds a FourIconSet rule | 
|  | /// </summary> | 
|  | /// <param name="IconSet"></param> | 
|  | /// <returns></returns> | 
|  | public IExcelConditionalFormattingFourIconSet<eExcelconditionalFormatting4IconsSetType> AddFourIconSet(eExcelconditionalFormatting4IconsSetType IconSet) | 
|  | { | 
|  | var rule = (IExcelConditionalFormattingFourIconSet<eExcelconditionalFormatting4IconsSetType>)(_worksheet.ConditionalFormatting.AddRule( | 
|  | eExcelConditionalFormattingRuleType.FourIconSet, | 
|  | _address)); | 
|  | rule.IconSet = IconSet; | 
|  | return rule; | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Adds a FiveIconSet rule | 
|  | /// </summary> | 
|  | /// <param name="IconSet"></param> | 
|  | /// <returns></returns> | 
|  | public IExcelConditionalFormattingFiveIconSet AddFiveIconSet(eExcelconditionalFormatting5IconsSetType IconSet) | 
|  | { | 
|  | var rule = (IExcelConditionalFormattingFiveIconSet)(_worksheet.ConditionalFormatting.AddRule( | 
|  | eExcelConditionalFormattingRuleType.FiveIconSet, | 
|  | _address)); | 
|  | rule.IconSet = IconSet; | 
|  | return rule; | 
|  | } | 
|  |  | 
|  | /// <summary> | 
|  | /// Adds a Databar rule | 
|  | /// </summary> | 
|  | /// <param name="Color">The color of the databar</param> | 
|  | /// <returns></returns> | 
|  | public IExcelConditionalFormattingDataBarGroup AddDatabar(System.Drawing.Color Color) | 
|  | { | 
|  | var rule = (IExcelConditionalFormattingDataBarGroup)(_worksheet.ConditionalFormatting.AddRule( | 
|  | eExcelConditionalFormattingRuleType.DataBar, | 
|  | _address)); | 
|  | rule.Color = Color; | 
|  | return rule; | 
|  | } | 
|  | #endregion Conditional Formatting Rule Types | 
|  | } | 
|  | } |