blob: 6bc7563b4f96180196036eaf7638001133e3840b [file] [log] [blame]
/*******************************************************************************
* 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.Xml;
using OfficeOpenXml.Utils;
namespace OfficeOpenXml.ConditionalFormatting;
/// <summary>
/// Factory class for ExcelConditionalFormatting.
/// </summary>
internal static class ExcelConditionalFormattingRuleFactory {
public static ExcelConditionalFormattingRule Create(
eExcelConditionalFormattingRuleType type,
ExcelAddress address,
int priority,
ExcelWorksheet worksheet,
XmlNode itemElementNode) {
Require.Argument(type);
Require.Argument(address).IsNotNull("address");
Require.Argument(priority).IsInRange(1, int.MaxValue, "priority");
Require.Argument(worksheet).IsNotNull("worksheet");
// According the conditional formatting rule type
switch (type) {
case eExcelConditionalFormattingRuleType.AboveAverage:
return new ExcelConditionalFormattingAboveAverage(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.AboveOrEqualAverage:
return new ExcelConditionalFormattingAboveOrEqualAverage(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.BelowAverage:
return new ExcelConditionalFormattingBelowAverage(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.BelowOrEqualAverage:
return new ExcelConditionalFormattingBelowOrEqualAverage(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.AboveStdDev:
return new ExcelConditionalFormattingAboveStdDev(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.BelowStdDev:
return new ExcelConditionalFormattingBelowStdDev(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.Bottom:
return new ExcelConditionalFormattingBottom(address, priority, worksheet, itemElementNode);
case eExcelConditionalFormattingRuleType.BottomPercent:
return new ExcelConditionalFormattingBottomPercent(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.Top:
return new ExcelConditionalFormattingTop(address, priority, worksheet, itemElementNode);
case eExcelConditionalFormattingRuleType.TopPercent:
return new ExcelConditionalFormattingTopPercent(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.Last7Days:
return new ExcelConditionalFormattingLast7Days(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.LastMonth:
return new ExcelConditionalFormattingLastMonth(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.LastWeek:
return new ExcelConditionalFormattingLastWeek(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.NextMonth:
return new ExcelConditionalFormattingNextMonth(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.NextWeek:
return new ExcelConditionalFormattingNextWeek(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.ThisMonth:
return new ExcelConditionalFormattingThisMonth(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.ThisWeek:
return new ExcelConditionalFormattingThisWeek(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.Today:
return new ExcelConditionalFormattingToday(address, priority, worksheet, itemElementNode);
case eExcelConditionalFormattingRuleType.Tomorrow:
return new ExcelConditionalFormattingTomorrow(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.Yesterday:
return new ExcelConditionalFormattingYesterday(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.BeginsWith:
return new ExcelConditionalFormattingBeginsWith(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.Between:
return new ExcelConditionalFormattingBetween(address, priority, worksheet, itemElementNode);
case eExcelConditionalFormattingRuleType.ContainsBlanks:
return new ExcelConditionalFormattingContainsBlanks(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.ContainsErrors:
return new ExcelConditionalFormattingContainsErrors(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.ContainsText:
return new ExcelConditionalFormattingContainsText(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.DuplicateValues:
return new ExcelConditionalFormattingDuplicateValues(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.EndsWith:
return new ExcelConditionalFormattingEndsWith(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.Equal:
return new ExcelConditionalFormattingEqual(address, priority, worksheet, itemElementNode);
case eExcelConditionalFormattingRuleType.Expression:
return new ExcelConditionalFormattingExpression(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.GreaterThan:
return new ExcelConditionalFormattingGreaterThan(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.GreaterThanOrEqual:
return new ExcelConditionalFormattingGreaterThanOrEqual(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.LessThan:
return new ExcelConditionalFormattingLessThan(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.LessThanOrEqual:
return new ExcelConditionalFormattingLessThanOrEqual(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.NotBetween:
return new ExcelConditionalFormattingNotBetween(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.NotContainsBlanks:
return new ExcelConditionalFormattingNotContainsBlanks(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.NotContainsErrors:
return new ExcelConditionalFormattingNotContainsErrors(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.NotContainsText:
return new ExcelConditionalFormattingNotContainsText(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.NotEqual:
return new ExcelConditionalFormattingNotEqual(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.UniqueValues:
return new ExcelConditionalFormattingUniqueValues(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.ThreeColorScale:
return new ExcelConditionalFormattingThreeColorScale(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.TwoColorScale:
return new ExcelConditionalFormattingTwoColorScale(
address,
priority,
worksheet,
itemElementNode);
case eExcelConditionalFormattingRuleType.ThreeIconSet:
return new ExcelConditionalFormattingThreeIconSet(
address,
priority,
worksheet,
itemElementNode,
null);
case eExcelConditionalFormattingRuleType.FourIconSet:
return new ExcelConditionalFormattingFourIconSet(
address,
priority,
worksheet,
itemElementNode,
null);
case eExcelConditionalFormattingRuleType.FiveIconSet:
return new ExcelConditionalFormattingFiveIconSet(
address,
priority,
worksheet,
itemElementNode,
null);
case eExcelConditionalFormattingRuleType.DataBar:
return new ExcelConditionalFormattingDataBar(
eExcelConditionalFormattingRuleType.DataBar,
address,
priority,
worksheet,
itemElementNode,
null);
//TODO: Add DataBar
}
throw new InvalidOperationException(
string.Format(
ExcelConditionalFormattingConstants.Errors._nonSupportedRuleType,
type.ToString()));
}
}