[NWD] Remove more dead code in EPPlus.
Change-Id: If3334f3fa0a5ae56e6c328cb4d34c4ecf1c5315d
Reviewed-on: https://gnocchi-internal-review.git.corp.google.com/c/third_party/epplus/+/207760
Reviewed-by: Hughes Hilton <hugheshilton@google.com>
diff --git a/EPPlus/CellStore.cs b/EPPlus/CellStore.cs
index 71aece7..a00f890 100644
--- a/EPPlus/CellStore.cs
+++ b/EPPlus/CellStore.cs
@@ -1184,25 +1184,9 @@
page.Index--;
page.Offset += _pageSize;
}
- //else if (page.Rows[0].Index >= PageSize) //Delete
- //{
- // page.Index++;
- // AddPageRowOffset(page, -PageSize);
- //}
- //else if (page.Rows[0].Index <= -PageSize) //Delete
- //{
- // page.Index--;
- // AddPageRowOffset(page, PageSize);
- //}
return page;
}
- private void AddPageRowOffset(PageIndex page, short offset) {
- for (int r = 0; r < page.RowCount; r++) {
- page.Rows[r].Index += offset;
- }
- }
-
private void AddPage(ColumnIndex column, int pos, short index) {
AddPage(column, pos);
column._pages[pos] = new() {
diff --git a/EPPlus/ConditionalFormatting/ExcelConditionalFormattingCollection.cs b/EPPlus/ConditionalFormatting/ExcelConditionalFormattingCollection.cs
index 3c19a93..8d0ecf1 100644
--- a/EPPlus/ConditionalFormatting/ExcelConditionalFormattingCollection.cs
+++ b/EPPlus/ConditionalFormatting/ExcelConditionalFormattingCollection.cs
@@ -67,15 +67,9 @@
public class ExcelConditionalFormattingCollection
: XmlHelper,
IEnumerable<IExcelConditionalFormattingRule> {
- /****************************************************************************************/
-
-
private readonly List<IExcelConditionalFormattingRule> _rules = new();
private readonly ExcelWorksheet _worksheet;
- /****************************************************************************************/
-
-
/// <summary>
/// Initialize the <see cref="ExcelConditionalFormattingCollection"/>
/// </summary>
@@ -159,12 +153,6 @@
}
}
- /****************************************************************************************/
-
-
- /// <summary>
- ///
- /// </summary>
private void EnsureRootElementExists() {
// Find the <worksheet> node
if (_worksheet.WorksheetXml.DocumentElement == null) {
@@ -173,15 +161,6 @@
}
/// <summary>
- /// GetRootNode
- /// </summary>
- /// <returns></returns>
- private XmlNode GetRootNode() {
- EnsureRootElementExists();
- return _worksheet.WorksheetXml.DocumentElement;
- }
-
- /// <summary>
/// Validates address - not empty (collisions are allowded)
/// </summary>
/// <param name="address"></param>
@@ -212,9 +191,6 @@
return lastPriority + 1;
}
- /****************************************************************************************/
-
-
/// <summary>
/// Number of validations
/// </summary>
@@ -322,9 +298,6 @@
return _rules.Find(x => x.Priority == priority);
}
- /****************************************************************************************/
-
-
/// <summary>
/// Add rule (internal)
/// </summary>
diff --git a/EPPlus/ConditionalFormatting/ExcelConditionalFormattingColorScaleValue.cs b/EPPlus/ConditionalFormatting/ExcelConditionalFormattingColorScaleValue.cs
index 1f1bda6..a8585f0 100644
--- a/EPPlus/ConditionalFormatting/ExcelConditionalFormattingColorScaleValue.cs
+++ b/EPPlus/ConditionalFormatting/ExcelConditionalFormattingColorScaleValue.cs
@@ -41,16 +41,10 @@
/// Describes the values of the interpolation points in a gradient scale.
/// </summary>
public class ExcelConditionalFormattingColorScaleValue : XmlHelper {
- /****************************************************************************************/
-
-
private eExcelConditionalFormattingValueObjectPosition _position;
private eExcelConditionalFormattingRuleType _ruleType;
private readonly ExcelWorksheet _worksheet;
- /****************************************************************************************/
-
-
/// <summary>
/// Initialize the cfvo (§18.3.1.11) node
/// </summary>
@@ -213,9 +207,6 @@
null,
namespaceManager) {}
- /****************************************************************************************/
-
-
/// <summary>
/// Get the node order (1, 2 ou 3) according to the Position (Low, Middle and High)
/// and the Rule Type (TwoColorScale ou ThreeColorScale).
@@ -288,9 +279,6 @@
TopNode = currentTopNode;
}
- /****************************************************************************************/
-
-
/// <summary>
///
/// </summary>
@@ -446,10 +434,8 @@
CreateNodeByOrdem(
eExcelConditionalFormattingValueObjectNodeType.Cfvo,
ExcelConditionalFormattingConstants.Paths._valAttribute,
- (value == null) ? string.Empty : value);
+ value ?? string.Empty);
}
}
}
-
- /****************************************************************************************/
}
diff --git a/EPPlus/ConditionalFormatting/ExcelConditionalFormattingHelper.cs b/EPPlus/ConditionalFormatting/ExcelConditionalFormattingHelper.cs
index 41fbe30..0ea9a45 100644
--- a/EPPlus/ConditionalFormatting/ExcelConditionalFormattingHelper.cs
+++ b/EPPlus/ConditionalFormatting/ExcelConditionalFormattingHelper.cs
@@ -85,7 +85,7 @@
public static string GetAttributeString(XmlNode node, string attribute) {
try {
var value = node.Attributes[attribute].Value;
- return (value == null) ? string.Empty : value;
+ return value ?? string.Empty;
} catch {
return string.Empty;
}
diff --git a/EPPlus/ConditionalFormatting/ExcelConditionalFormattingIconDatabarValue.cs b/EPPlus/ConditionalFormatting/ExcelConditionalFormattingIconDatabarValue.cs
index 2e080d2..bffef35 100644
--- a/EPPlus/ConditionalFormatting/ExcelConditionalFormattingIconDatabarValue.cs
+++ b/EPPlus/ConditionalFormatting/ExcelConditionalFormattingIconDatabarValue.cs
@@ -42,15 +42,9 @@
/// Describes the values of the interpolation points in a gradient scale.
/// </summary>
public class ExcelConditionalFormattingIconDataBarValue : XmlHelper {
- /****************************************************************************************/
-
-
private eExcelConditionalFormattingRuleType _ruleType;
private readonly ExcelWorksheet _worksheet;
- /****************************************************************************************/
-
-
/// <summary>
/// Initialize the cfvo (§18.3.1.11) node
/// </summary>
@@ -213,11 +207,6 @@
XmlNamespaceManager namespaceManager)
: this(type, 0, null, ruleType, address, priority, worksheet, null, namespaceManager) {}
- /****************************************************************************************/
-
- /****************************************************************************************/
-
-
/// <summary>
///
/// </summary>
@@ -296,6 +285,4 @@
}
}
}
-
- /****************************************************************************************/
}
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAboveAverage.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAboveAverage.cs
index 6e82c2f..cf90b06 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAboveAverage.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAboveAverage.cs
@@ -57,7 +57,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAboveOrEqualAverage.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAboveOrEqualAverage.cs
index 60a89d0..dcbf944 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAboveOrEqualAverage.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAboveOrEqualAverage.cs
@@ -58,7 +58,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAboveStdDev.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAboveStdDev.cs
index 0883462..bd905e1 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAboveStdDev.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAboveStdDev.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAverageGroup.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAverageGroup.cs
index cebdb51..34076ba 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAverageGroup.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAverageGroup.cs
@@ -62,7 +62,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {}
+ namespaceManager ?? worksheet.NameSpaceManager) {}
/// <summary>
///
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBeginsWith.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBeginsWith.cs
index 9dc918e..d8cdd26 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBeginsWith.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBeginsWith.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBelowAverage.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBelowAverage.cs
index be13fa3..ef68fc1 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBelowAverage.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBelowAverage.cs
@@ -57,7 +57,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBelowOrEqualAverage.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBelowOrEqualAverage.cs
index 39eb327..4d8cd67 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBelowOrEqualAverage.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBelowOrEqualAverage.cs
@@ -58,7 +58,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBelowStdDev.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBelowStdDev.cs
index b2419f6..8291319 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBelowStdDev.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBelowStdDev.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBetween.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBetween.cs
index b27a308..fb1bb73 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBetween.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBetween.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBottom.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBottom.cs
index 4b23f49..ae9e861 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBottom.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBottom.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBottomPercent.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBottomPercent.cs
index 494078d..719901f 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBottomPercent.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBottomPercent.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsBlanks.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsBlanks.cs
index 16ea6c2..d5eafe0 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsBlanks.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsBlanks.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsErrors.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsErrors.cs
index 5c743dc..f5d65f9 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsErrors.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsErrors.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsText.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsText.cs
index 88a4d43..ed433cc 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsText.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsText.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingDataBar.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingDataBar.cs
index ed32ace..2a80337 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingDataBar.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingDataBar.cs
@@ -64,7 +64,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
SchemaNodeOrder = new[] { "cfvo", "color" };
//Create the <dataBar> node inside the <cfRule> node
if (itemElementNode != null && itemElementNode.HasChildNodes) {
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingDuplicateValues.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingDuplicateValues.cs
index 1231fc9..ecba659 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingDuplicateValues.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingDuplicateValues.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {}
+ namespaceManager ?? worksheet.NameSpaceManager) {}
/// <summary>
///
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingEndsWith.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingEndsWith.cs
index d02ed50..39d2a2b 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingEndsWith.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingEndsWith.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingEqual.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingEqual.cs
index 8a6ed42..ddade06 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingEqual.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingEqual.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingExpression.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingExpression.cs
index 8ba9823..ce887c5 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingExpression.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingExpression.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingFiveIconSet.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingFiveIconSet.cs
index 8c557d7..e75f49a 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingFiveIconSet.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingFiveIconSet.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode != null && itemElementNode.HasChildNodes) {
XmlNode iconNode4 = TopNode.SelectSingleNode(
"d:iconSet/d:cfvo[position()=4]",
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingFourIconSet.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingFourIconSet.cs
index 14430b9..10bd1b3 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingFourIconSet.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingFourIconSet.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode != null && itemElementNode.HasChildNodes) {
XmlNode iconNode4 = TopNode.SelectSingleNode(
"d:iconSet/d:cfvo[position()=4]",
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingGreaterThan.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingGreaterThan.cs
index 2e3d9ee..9e57c1e 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingGreaterThan.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingGreaterThan.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingGreaterThanOrEqual.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingGreaterThanOrEqual.cs
index 6a19464..1a83939 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingGreaterThanOrEqual.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingGreaterThanOrEqual.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLast7Days.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLast7Days.cs
index e2593d3..100f6da 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLast7Days.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLast7Days.cs
@@ -57,7 +57,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLastMonth.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLastMonth.cs
index 1d31a44..3888e32 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLastMonth.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLastMonth.cs
@@ -57,7 +57,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLastWeek.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLastWeek.cs
index 05c6513..9edbe40 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLastWeek.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLastWeek.cs
@@ -57,7 +57,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLessThan.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLessThan.cs
index de178ec..5695da9 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLessThan.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLessThan.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLessThanOrEqual.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLessThanOrEqual.cs
index 7c43a2e..3e54630 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLessThanOrEqual.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLessThanOrEqual.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNextMonth.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNextMonth.cs
index 3d756f4..a7a23e6 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNextMonth.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNextMonth.cs
@@ -57,7 +57,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNextWeek.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNextWeek.cs
index 95726a1..1c01b87 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNextWeek.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNextWeek.cs
@@ -57,7 +57,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotBetween.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotBetween.cs
index 71c565c..afa0de5 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotBetween.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotBetween.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsBlanks.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsBlanks.cs
index b0e06b2..babf13b 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsBlanks.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsBlanks.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsErrors.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsErrors.cs
index 7d42bd3..e6fa828 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsErrors.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsErrors.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsText.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsText.cs
index 279d6b4..1b86511 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsText.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsText.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotEqual.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotEqual.cs
index e882682..8782151 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotEqual.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotEqual.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThisMonth.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThisMonth.cs
index 6104959..db86666 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThisMonth.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThisMonth.cs
@@ -57,7 +57,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThisWeek.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThisWeek.cs
index a42007d..1635e36 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThisWeek.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThisWeek.cs
@@ -57,7 +57,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThreeColorScale.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThreeColorScale.cs
index a63bf04..fa0574e 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThreeColorScale.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThreeColorScale.cs
@@ -61,7 +61,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
// Create the <colorScale> node inside the <cfRule> node
var colorScaleNode = CreateComplexNode(
Node,
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThreeIconSet.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThreeIconSet.cs
index cc0a2ad..2b8b27e 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThreeIconSet.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThreeIconSet.cs
@@ -49,7 +49,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {}
+ namespaceManager ?? worksheet.NameSpaceManager) {}
}
/// <summary>
@@ -80,7 +80,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode != null && itemElementNode.HasChildNodes) {
int pos = 1;
foreach (XmlNode node in itemElementNode.SelectNodes("d:iconSet/d:cfvo", NameSpaceManager)) {
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTimePeriodGroup.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTimePeriodGroup.cs
index f8ebade..52fe1ab 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTimePeriodGroup.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTimePeriodGroup.cs
@@ -62,7 +62,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {}
+ namespaceManager ?? worksheet.NameSpaceManager) {}
/// <summary>
///
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingToday.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingToday.cs
index 6b99262..b2d1755 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingToday.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingToday.cs
@@ -57,7 +57,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTomorrow.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTomorrow.cs
index 6b5aa92..fcfab71 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTomorrow.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTomorrow.cs
@@ -57,7 +57,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTop.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTop.cs
index 95697d0..5672d2d 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTop.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTop.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTopPercent.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTopPercent.cs
index 929369d..0d4a06c 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTopPercent.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTopPercent.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTwoColorScale.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTwoColorScale.cs
index 29a5a9e..69ee8b1 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTwoColorScale.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTwoColorScale.cs
@@ -71,7 +71,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
// Create the <colorScale> node inside the <cfRule> node
var colorScaleNode = CreateComplexNode(
Node,
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingUniqueValues.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingUniqueValues.cs
index ef4d72e..ff0ba0d 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingUniqueValues.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingUniqueValues.cs
@@ -60,7 +60,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {}
+ namespaceManager ?? worksheet.NameSpaceManager) {}
/// <summary>
///
diff --git a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingYesterday.cs b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingYesterday.cs
index 158948c..a5701ec 100644
--- a/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingYesterday.cs
+++ b/EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingYesterday.cs
@@ -57,7 +57,7 @@
priority,
worksheet,
itemElementNode,
- (namespaceManager == null) ? worksheet.NameSpaceManager : namespaceManager) {
+ namespaceManager ?? worksheet.NameSpaceManager) {
if (itemElementNode
== null) //Set default values and create attributes if needed
{
diff --git a/EPPlus/DataValidation/ExcelDataValidation.cs b/EPPlus/DataValidation/ExcelDataValidation.cs
index 0f74ed9..78b6259 100644
--- a/EPPlus/DataValidation/ExcelDataValidation.cs
+++ b/EPPlus/DataValidation/ExcelDataValidation.cs
@@ -93,7 +93,7 @@
ExcelDataValidationType validationType,
XmlNode itemElementNode,
XmlNamespaceManager namespaceManager)
- : base(namespaceManager != null ? namespaceManager : worksheet.NameSpaceManager) {
+ : base(namespaceManager ?? worksheet.NameSpaceManager) {
Require.Argument(address).IsNotNullOrEmpty("address");
address = CheckAndFixRangeAddress(address);
if (itemElementNode == null) {
diff --git a/EPPlus/DataValidation/ExcelDataValidationCollection.cs b/EPPlus/DataValidation/ExcelDataValidationCollection.cs
index 76c07a3..4518881 100644
--- a/EPPlus/DataValidation/ExcelDataValidationCollection.cs
+++ b/EPPlus/DataValidation/ExcelDataValidationCollection.cs
@@ -103,9 +103,6 @@
_validations.Add(ExcelDataValidationFactory.Create(type, worksheet, addr, node));
}
}
- if (_validations.Count > 0) {
- OnValidationCountChanged();
- }
}
private void EnsureRootElementExists() {
@@ -117,21 +114,6 @@
}
}
- private void OnValidationCountChanged() {
- //if (TopNode != null)
- //{
- // SetXmlNodeString("@count", _validations.Count.ToString());
- //}
- }
-
- private XmlNode GetRootNode() {
- EnsureRootElementExists();
- TopNode = _worksheet.WorksheetXml.SelectSingleNode(
- _dataValidationPath,
- _worksheet.NameSpaceManager);
- return TopNode;
- }
-
/// <summary>
/// Validates address - not empty, collisions
/// </summary>
@@ -184,7 +166,6 @@
EnsureRootElementExists();
var item = new ExcelDataValidationAny(_worksheet, address, ExcelDataValidationType.Any);
_validations.Add(item);
- OnValidationCountChanged();
return item;
}
@@ -198,7 +179,6 @@
EnsureRootElementExists();
var item = new ExcelDataValidationInt(_worksheet, address, ExcelDataValidationType.Whole);
_validations.Add(item);
- OnValidationCountChanged();
return item;
}
@@ -213,7 +193,6 @@
EnsureRootElementExists();
var item = new ExcelDataValidationDecimal(_worksheet, address, ExcelDataValidationType.Decimal);
_validations.Add(item);
- OnValidationCountChanged();
return item;
}
@@ -228,7 +207,6 @@
EnsureRootElementExists();
var item = new ExcelDataValidationList(_worksheet, address, ExcelDataValidationType.List);
_validations.Add(item);
- OnValidationCountChanged();
return item;
}
@@ -242,7 +220,6 @@
EnsureRootElementExists();
var item = new ExcelDataValidationInt(_worksheet, address, ExcelDataValidationType.TextLength);
_validations.Add(item);
- OnValidationCountChanged();
return item;
}
@@ -259,7 +236,6 @@
address,
ExcelDataValidationType.DateTime);
_validations.Add(item);
- OnValidationCountChanged();
return item;
}
@@ -268,7 +244,6 @@
EnsureRootElementExists();
var item = new ExcelDataValidationTime(_worksheet, address, ExcelDataValidationType.Time);
_validations.Add(item);
- OnValidationCountChanged();
return item;
}
@@ -282,7 +257,6 @@
EnsureRootElementExists();
var item = new ExcelDataValidationCustom(_worksheet, address, ExcelDataValidationType.Custom);
_validations.Add(item);
- OnValidationCountChanged();
return item;
}
@@ -293,17 +267,13 @@
/// <returns>True if remove succeeds, otherwise false</returns>
/// <exception cref="ArgumentNullException">if <paramref name="item"/> is null</exception>
public bool Remove(IExcelDataValidation item) {
- if (!(item is ExcelDataValidation)) {
+ if (!(item is ExcelDataValidation validation)) {
throw new InvalidCastException(
"The supplied item must inherit OfficeOpenXml.DataValidation.ExcelDataValidation");
}
Require.Argument(item).IsNotNull("item");
- TopNode.RemoveChild(((ExcelDataValidation)item).TopNode);
- var retVal = _validations.Remove(item);
- if (retVal) {
- OnValidationCountChanged();
- }
- return retVal;
+ TopNode.RemoveChild(validation.TopNode);
+ return _validations.Remove(validation);
}
/// <summary>
@@ -317,8 +287,8 @@
/// <param name="index"></param>
/// <returns></returns>
public IExcelDataValidation this[int index] {
- get { return _validations[index]; }
- set { _validations[index] = value; }
+ get => _validations[index];
+ set => _validations[index] = value;
}
/// <summary>
@@ -367,16 +337,15 @@
public void RemoveAll(Predicate<IExcelDataValidation> match) {
var matches = _validations.FindAll(match);
foreach (var m in matches) {
- if (!(m is ExcelDataValidation)) {
+ if (!(m is ExcelDataValidation validation)) {
throw new InvalidCastException(
"The supplied item must inherit OfficeOpenXml.DataValidation.ExcelDataValidation");
}
TopNode
.SelectSingleNode(_dataValidationPath.TrimStart('/'), NameSpaceManager)
- .RemoveChild(((ExcelDataValidation)m).TopNode);
+ .RemoveChild(validation.TopNode);
}
_validations.RemoveAll(match);
- OnValidationCountChanged();
}
IEnumerator<IExcelDataValidation> IEnumerable<IExcelDataValidation>.GetEnumerator() {
diff --git a/EPPlus/DataValidation/ExcelDataValidationType.cs b/EPPlus/DataValidation/ExcelDataValidationType.cs
index 50b8571..1c7465c 100644
--- a/EPPlus/DataValidation/ExcelDataValidationType.cs
+++ b/EPPlus/DataValidation/ExcelDataValidationType.cs
@@ -173,10 +173,10 @@
/// <param name="obj"></param>
/// <returns></returns>
public override bool Equals(object obj) {
- if (!(obj is ExcelDataValidationType)) {
+ if (!(obj is ExcelDataValidationType type)) {
return false;
}
- return ((ExcelDataValidationType)obj).Type == Type;
+ return type.Type == Type;
}
/// <summary>
diff --git a/EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaDateTime.cs b/EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaDateTime.cs
index 5543046..3dbc85d 100644
--- a/EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaDateTime.cs
+++ b/EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaDateTime.cs
@@ -47,8 +47,7 @@
: base(namespaceManager, topNode, formulaPath) {
var value = GetXmlNodeString(formulaPath);
if (!string.IsNullOrEmpty(value)) {
- double oADate = default(double);
- if (double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out oADate)) {
+ if (double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out var oADate)) {
Value = DateTime.FromOADate(oADate);
} else {
ExcelFormula = value;
diff --git a/EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaDecimal.cs b/EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaDecimal.cs
index 67b921d..995c459 100644
--- a/EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaDecimal.cs
+++ b/EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaDecimal.cs
@@ -49,8 +49,7 @@
: base(namespaceManager, topNode, formulaPath) {
var value = GetXmlNodeString(formulaPath);
if (!string.IsNullOrEmpty(value)) {
- double dValue = default(double);
- if (double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out dValue)) {
+ if (double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out var dValue)) {
Value = dValue;
} else {
ExcelFormula = value;
diff --git a/EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaInt.cs b/EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaInt.cs
index 70dc8cc..6bd31d2 100644
--- a/EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaInt.cs
+++ b/EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaInt.cs
@@ -45,8 +45,7 @@
: base(namespaceManager, topNode, formulaPath) {
var value = GetXmlNodeString(formulaPath);
if (!string.IsNullOrEmpty(value)) {
- int intValue = default(int);
- if (int.TryParse(value, out intValue)) {
+ if (int.TryParse(value, out var intValue)) {
Value = intValue;
} else {
ExcelFormula = value;
diff --git a/EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaTime.cs b/EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaTime.cs
index 38a8176..54d9844 100644
--- a/EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaTime.cs
+++ b/EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaTime.cs
@@ -47,8 +47,7 @@
: base(namespaceManager, topNode, formulaPath) {
var value = GetXmlNodeString(formulaPath);
if (!string.IsNullOrEmpty(value)) {
- decimal time = default(decimal);
- if (decimal.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out time)) {
+ if (decimal.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out var time)) {
Value = new(time);
} else {
Value = new();
diff --git a/EPPlus/Drawing/Vml/ExcelVmlDrawingComment.cs b/EPPlus/Drawing/Vml/ExcelVmlDrawingComment.cs
index 560529e..3392fc7 100644
--- a/EPPlus/Drawing/Vml/ExcelVmlDrawingComment.cs
+++ b/EPPlus/Drawing/Vml/ExcelVmlDrawingComment.cs
@@ -140,7 +140,7 @@
/// If the drawing object is visible.
/// </summary>
public bool Visible {
- get { return (TopNode.SelectSingleNode(_visiblePath, NameSpaceManager) != null); }
+ get => (TopNode.SelectSingleNode(_visiblePath, NameSpaceManager) != null);
set {
if (value) {
CreateNode(_visiblePath);
@@ -153,7 +153,6 @@
}
private const string _backgroundcolorPath = "@fillcolor";
- private const string _backgroundcolor2Path = "v:fill/@color2";
/// <summary>
/// Background color
@@ -167,12 +166,11 @@
if (col.StartsWith("#")) {
col = col.Substring(1, col.Length - 1);
}
- int res;
if (int.TryParse(
col,
NumberStyles.AllowHexSpecifier,
CultureInfo.InvariantCulture,
- out res)) {
+ out var res)) {
return Color.FromArgb(res);
}
return Color.Empty;
@@ -233,12 +231,11 @@
if (col.StartsWith("#")) {
col = col.Substring(1, col.Length - 1);
}
- int res;
if (int.TryParse(
col,
NumberStyles.AllowHexSpecifier,
CultureInfo.InvariantCulture,
- out res)) {
+ out var res)) {
return Color.FromArgb(res);
}
return Color.Empty;
@@ -264,13 +261,12 @@
wt = wt.Substring(0, wt.Length - 2);
}
- Single ret;
- if (Single.TryParse(wt, NumberStyles.Any, CultureInfo.InvariantCulture, out ret)) {
+ if (Single.TryParse(wt, NumberStyles.Any, CultureInfo.InvariantCulture, out var ret)) {
return ret;
}
return 0;
}
- set { SetXmlNodeString(_linewidthPath, value.ToString(CultureInfo.InvariantCulture) + "pt"); }
+ set => SetXmlNodeString(_linewidthPath, value.ToString(CultureInfo.InvariantCulture) + "pt");
}
///// <summary>
@@ -336,15 +332,13 @@
/// </summary>
public bool AutoFit {
get {
- string value;
- GetStyle(GetXmlNodeString(_textboxStylePath), "mso-fit-shape-to-text", out value);
+ GetStyle(GetXmlNodeString(_textboxStylePath), "mso-fit-shape-to-text", out var value);
return value == "t";
}
- set {
+ set =>
SetXmlNodeString(
_textboxStylePath,
SetStyle(GetXmlNodeString(_textboxStylePath), "mso-fit-shape-to-text", value ? "t" : ""));
- }
}
private const string _lockedPath = "x:ClientData/x:Locked";
@@ -353,8 +347,8 @@
/// If the object is locked when the sheet is protected
/// </summary>
public bool Locked {
- get { return GetXmlNodeBool(_lockedPath, false); }
- set { SetXmlNodeBool(_lockedPath, value, false); }
+ get => GetXmlNodeBool(_lockedPath, false);
+ set => SetXmlNodeBool(_lockedPath, value, false);
}
private const string _lockTextPath = "x:ClientData/x:LockText";
@@ -363,8 +357,8 @@
/// Specifies that the object's text is locked
/// </summary>
public bool LockText {
- get { return GetXmlNodeBool(_lockTextPath, false); }
- set { SetXmlNodeBool(_lockTextPath, value, false); }
+ get => GetXmlNodeBool(_lockTextPath, false);
+ set => SetXmlNodeBool(_lockTextPath, value, false);
}
private ExcelVmlDrawingPosition _from;
@@ -401,14 +395,12 @@
private const string _stylePath = "@style";
internal string Style {
- get { return GetXmlNodeString(_stylePath); }
- set { SetXmlNodeString(_stylePath, value); }
+ get => GetXmlNodeString(_stylePath);
+ set => SetXmlNodeString(_stylePath, value);
}
ulong IRangeId.RangeID {
- get {
- return ExcelCellBase.GetCellId(Range.Worksheet.SheetID, Range.Start.Row, Range.Start.Column);
- }
+ get => ExcelCellBase.GetCellId(Range.Worksheet.SheetID, Range.Start.Row, Range.Start.Column);
set {}
}
}
diff --git a/EPPlus/Drawing/Vml/ExcelVmlDrawingCommentCollection.cs b/EPPlus/Drawing/Vml/ExcelVmlDrawingCommentCollection.cs
index 6a908e3..deb294c 100644
--- a/EPPlus/Drawing/Vml/ExcelVmlDrawingCommentCollection.cs
+++ b/EPPlus/Drawing/Vml/ExcelVmlDrawingCommentCollection.cs
@@ -158,8 +158,7 @@
if (_nextID == 0) {
foreach (ExcelVmlDrawingComment draw in this) {
if (draw.Id.Length > 3 && draw.Id.StartsWith("vml")) {
- int id;
- if (int.TryParse(draw.Id.Substring(3, draw.Id.Length - 3), out id)) {
+ if (int.TryParse(draw.Id.Substring(3, draw.Id.Length - 3), out var id)) {
if (id > _nextID) {
_nextID = id;
}
@@ -177,9 +176,7 @@
return _drawings.ContainsKey(rangeId);
}
- internal int Count {
- get { return _drawings.Count; }
- }
+ internal int Count => _drawings.Count;
public IEnumerator GetEnumerator() {
return _drawings;
diff --git a/EPPlus/Drawing/Vml/ExcelVmlDrawingPosition.cs b/EPPlus/Drawing/Vml/ExcelVmlDrawingPosition.cs
index 3d02863..294f9b2 100644
--- a/EPPlus/Drawing/Vml/ExcelVmlDrawingPosition.cs
+++ b/EPPlus/Drawing/Vml/ExcelVmlDrawingPosition.cs
@@ -93,8 +93,7 @@
string anchor = GetXmlNodeString("x:Anchor");
string[] numbers = anchor.Split(',');
if (numbers.Length == 8) {
- int ret;
- if (int.TryParse(numbers[_startPos + pos], out ret)) {
+ if (int.TryParse(numbers[_startPos + pos], out var ret)) {
return ret;
}
}
diff --git a/EPPlus/EPPlusSDK.csproj b/EPPlus/EPPlusSDK.csproj
index 00f19ed..a26851d 100644
--- a/EPPlus/EPPlusSDK.csproj
+++ b/EPPlus/EPPlusSDK.csproj
@@ -4,17 +4,9 @@
<RootNamespace>OfficeOpenXml</RootNamespace>
<AssemblyName>EPPlus</AssemblyName>
<PackageId>Appsheet.EPPlus</PackageId>
- <Version>1.0.5</Version>
- <DefaultItemExcludes>$(DefaultItemExcludes);Properties/AssemblyInfo.cs;FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/**;FormulaParsing/LexicalAnalysis/TokenHandler.cs;FormulaParsing/Excel/Functions/Math/Rank.cs</DefaultItemExcludes>
- <DefineConstants>Core;STANDARD20</DefineConstants>
- <ImplicitUsings>disable</ImplicitUsings>
+ <Version>1.0.6</Version>
</PropertyGroup>
<ItemGroup>
- <PackageReference Include="Microsoft.CSharp" Version="4.7.0"/>
- <PackageReference Include="System.CodeDom" Version="5.0.0"/>
<PackageReference Include="System.Drawing.Common" Version="6.0.0"/>
- <PackageReference Include="System.Security.Cryptography.Pkcs" Version="5.0.1"/>
- <PackageReference Include="System.Security.Permissions" Version="5.0.0"/>
- <PackageReference Include="System.Text.Encoding.CodePages" Version="5.0.0"/>
</ItemGroup>
</Project>
diff --git a/EPPlus/ExcelAddress.cs b/EPPlus/ExcelAddress.cs
index 22fcf59..9a5f20d 100644
--- a/EPPlus/ExcelAddress.cs
+++ b/EPPlus/ExcelAddress.cs
@@ -410,16 +410,12 @@
/// <summary>
/// The address for the range
/// </summary>
- public virtual string Address {
- get { return _address; }
- }
+ public virtual string Address => _address;
/// <summary>
/// If the address is a defined name
/// </summary>
- public bool IsName {
- get { return _fromRow < 0; }
- }
+ public bool IsName => _fromRow < 0;
/// <summary>
/// Returns the address text
@@ -444,11 +440,7 @@
}
}
- internal string AddressSpaceSeparated {
- get {
- return _address.Replace(',', ' '); //Conditional formatting and a few other places use space as separator for mulit addresses.
- }
- }
+ internal string AddressSpaceSeparated => _address.Replace(',', ' '); //Conditional formatting and a few other places use space as separator for mulit addresses.
/// <summary>
/// Validate the address
@@ -460,15 +452,11 @@
}
}
- internal string WorkSheet {
- get { return _ws; }
- }
+ internal string WorkSheet => _ws;
protected internal List<ExcelAddress> _addresses;
- internal virtual List<ExcelAddress> Addresses {
- get { return _addresses; }
- }
+ internal virtual List<ExcelAddress> Addresses => _addresses;
private bool ExtractAddress(string fullAddress) {
var brackPos = new Stack<int>();
@@ -864,10 +852,8 @@
if (IsFormula(address)) {
return AddressType.Formula;
}
- string wb,
- ws,
- intAddress;
- if (SplitAddress(address, out wb, out ws, out intAddress)) {
+ string ws;
+ if (SplitAddress(address, out var wb, out ws, out var intAddress)) {
if (intAddress.Contains(
"[")) //Table reference
{
@@ -955,12 +941,10 @@
return false;
}
var cells = intAddress.Split(':');
- int fromRow,
- toRow,
- fromCol,
+ int toRow,
toCol;
- if (!GetRowCol(cells[0], out fromRow, out fromCol, false)) {
+ if (!GetRowCol(cells[0], out var fromRow, out var fromCol, false)) {
return false;
}
if (cells.Length > 1) {
@@ -1052,22 +1036,9 @@
return false;
}
- private static bool IsValidName(string address) {
- if (Regex.IsMatch(
- address,
- "[^0-9./*-+,½!\"@#£%&/{}()\\[\\]=?`^~':;<>|][^/*-+,½!\"@#£%&/{}()\\[\\]=?`^~':;<>|]*")) {
- return true;
- }
- return false;
- }
+ public int Rows => _toRow - _fromRow + 1;
- public int Rows {
- get { return _toRow - _fromRow + 1; }
- }
-
- public int Columns {
- get { return _toCol - _fromCol + 1; }
- }
+ public int Columns => _toCol - _fromCol + 1;
internal bool IsMultiCell() {
return (_fromRow < _fromCol || _fromCol < _toCol);
diff --git a/EPPlus/ExcelCellBase.cs b/EPPlus/ExcelCellBase.cs
index 36e1450..df48cb3 100644
--- a/EPPlus/ExcelCellBase.cs
+++ b/EPPlus/ExcelCellBase.cs
@@ -274,10 +274,8 @@
/// <param name="colIncr"></param>
/// <returns></returns>
private static string ToR1C1(string part, int row, int col, int rowIncr, int colIncr) {
- int addrRow,
- addrCol;
string ret = "R";
- if (GetRowCol(part, out addrRow, out addrCol, false)) {
+ if (GetRowCol(part, out var addrRow, out var addrCol, false)) {
if (addrRow == 0 || addrCol == 0) {
return part;
}
@@ -299,16 +297,13 @@
}
private static string ToR1C1_V1(string part, int row, int col, int rowIncr, int colIncr) {
- int addrRow,
- addrCol;
-
// Handle range expressions
if ((part.Length > 1) && (part.IndexOf(':', 1) > 0)) {
return RangeToR1C1_V1(part, row, col, rowIncr, colIncr);
}
string ret = "R";
- if (GetRowCol(part, out addrRow, out addrCol, false)) {
+ if (GetRowCol(part, out var addrRow, out var addrCol, false)) {
if (addrRow == 0 || addrCol == 0) {
return part;
}
@@ -352,13 +347,14 @@
int col,
int rowIncr,
int colIncr) {
- int addrRow,
- addrCol;
- bool fixedRow,
- fixedCol;
-
string result = "";
- if (GetRowCol_V1(part, out addrRow, out addrCol, false, out fixedRow, out fixedCol)) {
+ if (GetRowCol_V1(
+ part,
+ out var addrRow,
+ out var addrCol,
+ false,
+ out var fixedRow,
+ out var fixedCol)) {
if (addrRow > 0) {
result += "R";
if (fixedRow) {
@@ -409,8 +405,7 @@
}
int cStart = check.IndexOf("C");
- bool absoluteRow,
- absoluteCol;
+ bool absoluteRow;
if (cStart == -1) {
int rNum = GetRc(part, row, out absoluteRow);
if (rNum > int.MinValue) {
@@ -419,7 +414,10 @@
return part;
} else {
int rNum = GetRc(part.Substring(1, cStart - 1), row, out absoluteRow);
- int cNum = GetRc(part.Substring(cStart + 1, part.Length - cStart - 1), col, out absoluteCol);
+ int cNum = GetRc(
+ part.Substring(cStart + 1, part.Length - cStart - 1),
+ col,
+ out var absoluteCol);
if (rNum > int.MinValue && cNum > int.MinValue) {
return GetAddress(rNum, absoluteRow, cNum, absoluteCol);
}
@@ -585,8 +583,7 @@
}
// Return number value
- int result;
- return (int.TryParse(value.Substring(0, length), out result)) ? result : Int32.MinValue;
+ return (int.TryParse(value.Substring(0, length), out var result)) ? result : Int32.MinValue;
}
private static string RangeToA1_V1(string part, int row, int col, int rowIncr, int colIncr) {
@@ -603,98 +600,6 @@
return result;
}
- private static string RangeCellToA1_V1(string part, int row, int col, int rowIncr, int colIncr) {
- int addrRow,
- addrCol;
- bool fixedRow,
- fixedCol;
-
- string result = "";
- if (GetRowCol_V1(part, out addrRow, out addrCol, false, out fixedRow, out fixedCol)) {
- if (addrRow > 0) {
- result += "R";
- if (fixedRow) {
- // Absolute row
- result += addrRow.ToString();
- } else if (addrRow - row != 0) {
- // Relative row
- result += string.Format("[{0}]", addrRow - row);
- }
- }
-
- if (addrCol > 0) {
- result += "C";
- if (fixedCol) {
- // Absolute column
- result += addrCol;
- } else if (addrCol - col != 0) {
- // Relative column
- result += string.Format("[{0}]", addrCol - col);
- }
- }
- return result;
- }
- return part;
- }
-
- /// <summary>
- /// Adds or subtracts a row or column to an address
- /// </summary>
- /// <param name="address"></param>
- /// <param name="row"></param>
- /// <param name="col"></param>
- /// <param name="rowIncr"></param>
- /// <param name="colIncr"></param>
- /// <returns></returns>
- private static string AddToRowColumnTranslator(
- string address,
- int row,
- int col,
- int rowIncr,
- int colIncr) {
- int fromRow,
- fromCol;
- if (address == "#REF!") {
- return address;
- }
- if (GetRowCol(address, out fromRow, out fromCol, false)) {
- if (fromRow == 0 || fromCol == 0) {
- return address;
- }
- if (rowIncr != 0 && row != 0 && fromRow >= row && address.IndexOf('$', 1) == -1) {
- if (fromRow < row - rowIncr) {
- return "#REF!";
- }
-
- fromRow = fromRow + rowIncr;
- }
-
- if (colIncr != 0 && col != 0 && fromCol >= col && address.StartsWith("$") == false) {
- if (fromCol < col - colIncr) {
- return "#REF!";
- }
-
- fromCol = fromCol + colIncr;
- }
-
- address = GetAddress(fromRow, address.IndexOf('$', 1) > -1, fromCol, address.StartsWith("$"));
- }
- return address;
- }
-
- /// <summary>
- /// Returns with brackets if the value is negative
- /// </summary>
- /// <param name="v">The value</param>
- /// <returns></returns>
- private static string GetRcFmt(int v) {
- return (v < 0
- ? string.Format("[{0}]", v)
- : v > 0
- ? v.ToString()
- : "");
- }
-
/// <summary>
/// Get the offset value for RC format
/// </summary>
@@ -727,32 +632,6 @@
return int.MinValue;
}
- private static int GetRC_V1(string value, int offsetValue, out bool fixedAddr) {
- if ((value == "") || (value == "R") || (value == "C")) {
- // Relative address with no offset
- fixedAddr = false;
- return offsetValue;
- }
- int num;
- if (value[1] == '['
- && value[value.Length - 1]
- == ']') //Offset?
- {
- // Relative address
- fixedAddr = false;
- if (int.TryParse(value.Substring(2, value.Length - 3), out num)) {
- return (offsetValue + num);
- }
- return int.MinValue;
- }
- // Absolute address
- fixedAddr = true;
- if (int.TryParse(value.Substring(1, value.Length - 1), out num)) {
- return num;
- }
- return int.MinValue;
- }
-
/// <summary>
/// Returns the character representation of the numbered column
/// </summary>
@@ -1303,9 +1182,7 @@
public static bool IsValidCellAddress(string cellAddress) {
bool result = false;
try {
- int row,
- col;
- if (GetRowColFromAddress(cellAddress, out row, out col)) {
+ if (GetRowColFromAddress(cellAddress, out var row, out var col)) {
if (row > 0 && col > 0 && row <= ExcelPackage.MaxRows && col <= ExcelPackage.MaxColumns) {
result = true;
} else {
diff --git a/EPPlus/ExcelNamedRangeCollection.cs b/EPPlus/ExcelNamedRangeCollection.cs
index 748b7e7..3584a54 100644
--- a/EPPlus/ExcelNamedRangeCollection.cs
+++ b/EPPlus/ExcelNamedRangeCollection.cs
@@ -178,13 +178,9 @@
/// <remarks>
/// Throws a KeyNotFoundException if the key is not in the collection.
/// </remarks>
- public ExcelNamedRange this[string name] {
- get { return _list[_dic[name]]; }
- }
+ public ExcelNamedRange this[string name] => _list[_dic[name]];
- public ExcelNamedRange this[int index] {
- get { return _list[index]; }
- }
+ public ExcelNamedRange this[int index] => _list[index];
/// <summary>
/// Implement interface method IEnumerator<ExcelNamedRange> GetEnumerator()
diff --git a/EPPlus/ExcelProtectedRangeCollection.cs b/EPPlus/ExcelProtectedRangeCollection.cs
index 728a3e4..fdc2053 100644
--- a/EPPlus/ExcelProtectedRangeCollection.cs
+++ b/EPPlus/ExcelProtectedRangeCollection.cs
@@ -75,9 +75,7 @@
_baseList.RemoveAt(index);
}
- public ExcelProtectedRange this[int index] {
- get { return _baseList[index]; }
- }
+ public ExcelProtectedRange this[int index] => _baseList[index];
IEnumerator<ExcelProtectedRange> IEnumerable<ExcelProtectedRange>.GetEnumerator() {
return _baseList.GetEnumerator();
diff --git a/EPPlus/ExcelRangeBase.cs b/EPPlus/ExcelRangeBase.cs
index b94a638..b4e48a8 100644
--- a/EPPlus/ExcelRangeBase.cs
+++ b/EPPlus/ExcelRangeBase.cs
@@ -137,7 +137,7 @@
_worksheet = xlWorksheet;
_workbook = wb;
if (string.IsNullOrEmpty(_ws)) {
- _ws = (xlWorksheet == null ? null : xlWorksheet.Name);
+ _ws = xlWorksheet?.Name;
}
AddressChange += ExcelRangeBase_AddressChange;
SetDelegate();
@@ -237,11 +237,6 @@
_worksheet._styles.SetValue(row, col, (int)value);
}
- private void Set_StyleName(object value, int row, int col) {
- //_worksheet.Cell(row, col).SetNewStyleName(value.ToString(), _styleID);
- _worksheet._styles.SetValue(row, col, _styleID);
- }
-
private void Set_Value(object value, int row, int col) {
//ExcelCell c = _worksheet.Cell(row, col);
var sfi = _worksheet._formulas.GetValue(row, col);
@@ -257,7 +252,7 @@
private void Set_Formula(object value, int row, int col) {
//ExcelCell c = _worksheet.Cell(row, col);
var f = _worksheet._formulas.GetValue(row, col);
- if (f is int && (int)f >= 0) {
+ if (f is int i && i >= 0) {
SplitFormulas(_worksheet.Cells[row, col]);
}
@@ -321,13 +316,13 @@
private void Set_HyperLink(object value, int row, int col) {
//_worksheet.Cell(row, col).Hyperlink = value as Uri;
- if (value is Uri) {
- _worksheet._hyperLinks.SetValue(row, col, (Uri)value);
+ if (value is Uri uri) {
+ _worksheet._hyperLinks.SetValue(row, col, uri);
- if (value is ExcelHyperLink) {
- _worksheet._values.SetValue(row, col, ((ExcelHyperLink)value).Display);
+ if (uri is ExcelHyperLink link) {
+ _worksheet._values.SetValue(row, col, link.Display);
} else {
- _worksheet._values.SetValue(row, col, ((Uri)value).OriginalString);
+ _worksheet._values.SetValue(row, col, uri.OriginalString);
}
} else {
_worksheet._hyperLinks.SetValue(row, col, null);
@@ -629,18 +624,6 @@
}
}
- private bool IsInfinityValue(object value) {
- double? valueAsDouble = value as double?;
-
- if (valueAsDouble.HasValue
- && (double.IsNegativeInfinity(valueAsDouble.Value)
- || double.IsPositiveInfinity(valueAsDouble.Value))) {
- return true;
- }
-
- return false;
- }
-
private object GetValueArray() {
ExcelAddressBase addr;
if (_fromRow == 1
@@ -670,60 +653,11 @@
return v;
}
- private ExcelAddressBase GetAddressDim(ExcelRangeBase addr) {
- int fromRow,
- fromCol,
- toRow,
- toCol;
- var d = _worksheet.Dimension;
- fromRow = addr._fromRow < d._fromRow ? d._fromRow : addr._fromRow;
- fromCol = addr._fromCol < d._fromCol ? d._fromCol : addr._fromCol;
-
- toRow = addr._toRow > d._toRow ? d._toRow : addr._toRow;
- toCol = addr._toCol > d._toCol ? d._toCol : addr._toCol;
-
- if (addr._fromCol == fromRow && addr._toRow == toRow && addr._toCol == _toCol) {
- return addr;
- }
- if (_fromRow > _toRow || _fromCol > _toCol) {
- return null;
- }
- return new(fromRow, fromCol, toRow, toCol);
- }
-
- private object GetSingleValue() {
- if (IsRichText) {
- return RichText.Text;
- }
- return _worksheet._values.GetValue(_fromRow, _fromCol);
- }
-
/// <summary>
/// Returns the formatted value.
/// </summary>
public string Text => GetFormattedText(false);
- private void SetMinWidth(double minimumWidth, int fromCol, int toCol) {
- var iterator = new CellsStoreEnumerator<object>(_worksheet._values, 0, fromCol, 0, toCol);
- var prevCol = fromCol;
- foreach (ExcelColumn col in iterator) {
- col.Width = minimumWidth;
- if (_worksheet.DefaultColWidth > minimumWidth && col.ColumnMin > prevCol) {
- var newCol = _worksheet.Column(prevCol);
- newCol.ColumnMax = col.ColumnMin - 1;
- newCol.Width = minimumWidth;
- }
- prevCol = col.ColumnMax + 1;
- }
- if (_worksheet.DefaultColWidth > minimumWidth && prevCol < toCol) {
- var newCol = _worksheet.Column(prevCol);
- newCol.ColumnMax = toCol;
- newCol.Width = minimumWidth;
- }
- }
-
- internal string TextForWidth => GetFormattedText(true);
-
private string GetFormattedText(bool forWidthCalc) {
object v = Value;
if (v == null) {
@@ -775,20 +709,20 @@
var date = DateTime.FromOADate(d);
return date.ToString(format, nf.Culture);
}
- } else if (v is DateTime) {
+ } else if (v is DateTime time) {
if (nf.DataType == ExcelNumberFormatXml.eFormatType.DateTime) {
- return ((DateTime)v).ToString(format, nf.Culture);
+ return time.ToString(format, nf.Culture);
}
- double d = ((DateTime)v).ToOADate();
+ double d = time.ToOADate();
if (string.IsNullOrEmpty(nf.FractionFormat)) {
return d.ToString(format, nf.Culture);
}
return nf.FormatFraction(d);
- } else if (v is TimeSpan) {
+ } else if (v is TimeSpan span) {
if (nf.DataType == ExcelNumberFormatXml.eFormatType.DateTime) {
- return new DateTime(((TimeSpan)v).Ticks).ToString(format, nf.Culture);
+ return new DateTime(span.Ticks).ToString(format, nf.Culture);
}
- double d = (new DateTime(((TimeSpan)v).Ticks)).ToOADate();
+ double d = (new DateTime(span.Ticks)).ToOADate();
if (string.IsNullOrEmpty(nf.FractionFormat)) {
return d.ToString(format, nf.Culture);
}
@@ -1195,7 +1129,7 @@
for (int col = address._fromCol; col <= address._toCol; col++) {
for (int row = address._fromRow; row <= address._toRow; row++) {
var f = _worksheet._formulas.GetValue(row, col);
- if (f is int && (int)f >= 0) {
+ if (f is int i && i >= 0) {
SplitFormulas(address);
return;
}
@@ -1208,8 +1142,7 @@
for (int col = address._fromCol; col <= address._toCol; col++) {
for (int row = address._fromRow; row <= address._toRow; row++) {
var f = _worksheet._formulas.GetValue(row, col);
- if (f is int) {
- int id = (int)f;
+ if (f is int id) {
if (id >= 0 && !formulas.Contains(id)) {
if (_worksheet._sharedFormulas[id].IsArray
&& Collide(_worksheet.Cells[_worksheet._sharedFormulas[id].Address])
@@ -1652,12 +1585,12 @@
_worksheet.Cells[row, col++].Value = item;
} else {
foreach (var t in members) {
- if (t is PropertyInfo) {
- _worksheet.Cells[row, col++].Value = ((PropertyInfo)t).GetValue(item, null);
- } else if (t is FieldInfo) {
- _worksheet.Cells[row, col++].Value = ((FieldInfo)t).GetValue(item);
- } else if (t is MethodInfo) {
- _worksheet.Cells[row, col++].Value = ((MethodInfo)t).Invoke(item, null);
+ if (t is PropertyInfo info) {
+ _worksheet.Cells[row, col++].Value = info.GetValue(item, null);
+ } else if (t is FieldInfo fieldInfo) {
+ _worksheet.Cells[row, col++].Value = fieldInfo.GetValue(item);
+ } else if (t is MethodInfo methodInfo) {
+ _worksheet.Cells[row, col++].Value = methodInfo.Invoke(item, null);
}
}
}
@@ -2308,24 +2241,6 @@
}
}
- private void DeleteCheckMergedCells(ExcelAddressBase range) {
- var removeItems = new List<string>();
- foreach (var addr in Worksheet.MergedCells) {
- var addrCol = range.Collide(new ExcelAddress(range.WorkSheet, addr));
- if (addrCol != eAddressCollition.No) {
- if (addrCol == eAddressCollition.Inside) {
- removeItems.Add(addr);
- } else {
- throw (new InvalidOperationException(
- "Can't remove/overwrite a part of cells that are merged"));
- }
- }
- }
- foreach (var item in removeItems) {
- Worksheet.MergedCells.Remove(item);
- }
- }
-
public void Dispose() {}
//int _index;
diff --git a/EPPlus/ExcelRow.cs b/EPPlus/ExcelRow.cs
index 3dfd422..bb94e2b 100644
--- a/EPPlus/ExcelRow.cs
+++ b/EPPlus/ExcelRow.cs
@@ -87,9 +87,7 @@
/// <summary>
/// Provides access to the node representing the row.
/// </summary>
- internal XmlNode Node {
- get { return (_rowElement); }
- }
+ internal XmlNode Node => (_rowElement);
/// <summary>
/// Allows the row to be hidden in the worksheet
@@ -153,7 +151,7 @@
/// Sets the style for the entire column using a style name.
/// </summary>
public string StyleName {
- get { return _styleName; }
+ get => _styleName;
set {
StyleID = _worksheet.Workbook.Styles.GetStyleIdFromName(value);
_styleName = value;
@@ -164,8 +162,8 @@
/// Sets the style for the entire row using the style ID.
/// </summary>
public int StyleID {
- get { return _worksheet._styles.GetValue(Row, 0); }
- set { _worksheet._styles.SetValue(Row, 0, value); }
+ get => _worksheet._styles.GetValue(Row, 0);
+ set => _worksheet._styles.SetValue(Row, 0, value);
}
/// <summary>
@@ -237,14 +235,8 @@
/// The Style applied to the whole row. Only effekt cells with no individual style set.
/// Use ExcelRange object if you want to set specific styles.
/// </summary>
- public ExcelStyle Style {
- get {
- return _worksheet.Workbook.Styles.GetStyleObject(
- StyleID,
- _worksheet.PositionID,
- Row + ":" + Row);
- }
- }
+ public ExcelStyle Style =>
+ _worksheet.Workbook.Styles.GetStyleObject(StyleID, _worksheet.PositionID, Row + ":" + Row);
/// <summary>
/// Adds a manual page break after the row.
@@ -264,8 +256,8 @@
}
public bool Merged {
- get { return _worksheet.MergedCells[Row, 0] != null; }
- set { _worksheet.MergedCells.Add(new(Row, 1, Row, ExcelPackage.MaxColumns), true); }
+ get => _worksheet.MergedCells[Row, 0] != null;
+ set => _worksheet.MergedCells.Add(new(Row, 1, Row, ExcelPackage.MaxColumns), true);
}
internal static ulong GetRowId(int sheetId, int row) {
@@ -274,8 +266,8 @@
[Obsolete]
ulong IRangeId.RangeID {
- get { return RowID; }
- set { Row = ((int)(value >> 29)); }
+ get => RowID;
+ set => Row = ((int)(value >> 29));
}
/// <summary>
diff --git a/EPPlus/ExcelStyleCollection.cs b/EPPlus/ExcelStyleCollection.cs
index 2e2d203..b544547 100644
--- a/EPPlus/ExcelStyleCollection.cs
+++ b/EPPlus/ExcelStyleCollection.cs
@@ -69,9 +69,7 @@
public T this[int positionId] => _list[positionId];
- public int Count {
- get { return _list.Count; }
- }
+ public int Count => _list.Count;
//internal int Add(T item)
//{
diff --git a/EPPlus/ExcelStyles.cs b/EPPlus/ExcelStyles.cs
index 8c786e0..9f1b283 100644
--- a/EPPlus/ExcelStyles.cs
+++ b/EPPlus/ExcelStyles.cs
@@ -750,14 +750,6 @@
//throw(new Exception("Named style does not exist"));
}
- private int GetXmlNodeInt(XmlNode node) {
- int i;
- if (int.TryParse(GetXmlNode(node), out i)) {
- return i;
- }
- return 0;
- }
-
private string GetXmlNode(XmlNode node) {
if (node == null) {
return "";
diff --git a/EPPlus/ExcelWorkbook.cs b/EPPlus/ExcelWorkbook.cs
index 3bc05dd..3331644 100644
--- a/EPPlus/ExcelWorkbook.cs
+++ b/EPPlus/ExcelWorkbook.cs
@@ -174,9 +174,8 @@
foreach (XmlElement elem in nl) {
string fullAddress = elem.InnerText;
- int localSheetId;
ExcelWorksheet nameWorksheet;
- if (!int.TryParse(elem.GetAttribute("localSheetId"), out localSheetId)) {
+ if (!int.TryParse(elem.GetAttribute("localSheetId"), out var localSheetId)) {
localSheetId = -1;
nameWorksheet = null;
} else {
@@ -191,8 +190,7 @@
int end = fullAddress.IndexOf("]", start);
if (start >= 0 && end >= 0) {
string externalIndex = fullAddress.Substring(start + 1, end - start - 1);
- int index;
- if (int.TryParse(externalIndex, out index)) {
+ if (int.TryParse(externalIndex, out var index)) {
if (index > 0 && index <= _externalReferences.Count) {
fullAddress =
fullAddress.Substring(0, start)
@@ -214,7 +212,6 @@
.AddressType
.ExternalAddress) //A value or a formula
{
- double value;
range = new(this, nameWorksheet, elem.GetAttribute("name"), true);
if (nameWorksheet == null) {
namedRange = _names.Add(elem.GetAttribute("name"), range);
@@ -230,7 +227,7 @@
fullAddress,
NumberStyles.Any,
CultureInfo.InvariantCulture,
- out value)) {
+ out var value)) {
namedRange.NameValue = value;
} else {
//if (addressType == ExcelAddressBase.AddressType.ExternalAddress || addressType == ExcelAddressBase.AddressType.ExternalName)
@@ -378,8 +375,8 @@
private const string _codeModuleNamePath = "d:workbookPr/@codeName";
internal string CodeModuleName {
- get { return GetXmlNodeString(_codeModuleNamePath); }
- set { SetXmlNodeString(_codeModuleNamePath, value); }
+ get => GetXmlNodeString(_codeModuleNamePath);
+ set => SetXmlNodeString(_codeModuleNamePath, value);
}
internal void CodeNameChange(string value) {
@@ -395,7 +392,7 @@
/// This option was included in Microsoft Excel for Windows to make it compatible with Excel for the Macintosh, which defaults to January 2, 1904.
/// </summary>
public bool Date1904 {
- get { return GetXmlNodeBool(_date1904Path, false); }
+ get => GetXmlNodeBool(_date1904Path, false);
set {
if (Date1904 != value) {
// Like Excel when the option it's changed update it all cells with Date format
@@ -445,7 +442,6 @@
StreamWriter stream = new StreamWriter(
partWorkbook.GetStream(FileMode.Create, FileAccess.Write));
_workbookXml.Save(stream);
- //stream.Close();
}
}
@@ -502,7 +498,7 @@
}
return (_stylesXml);
}
- set { _stylesXml = value; }
+ set => _stylesXml = value;
}
/// <summary>
@@ -570,8 +566,8 @@
/// <remarks>This property is always true for both new workbooks and loaded templates(on load). If this is not the wanted behavior set this property to false.</remarks>
/// </summary>
public bool FullCalcOnLoad {
- get { return GetXmlNodeBool(_fullCalcOnLoadPath); }
- set { SetXmlNodeBool(_fullCalcOnLoadPath, value); }
+ get => GetXmlNodeBool(_fullCalcOnLoadPath);
+ set => SetXmlNodeBool(_fullCalcOnLoadPath, value);
}
/// <summary>
@@ -762,9 +758,8 @@
elem.InnerText = Convert
.ToDouble(name.NameValue, CultureInfo.InvariantCulture)
.ToString("R15", CultureInfo.InvariantCulture);
- } else if (name.NameValue is DateTime) {
- elem.InnerText =
- ((DateTime)name.NameValue).ToOADate().ToString(CultureInfo.InvariantCulture);
+ } else if (name.NameValue is DateTime time) {
+ elem.InnerText = time.ToOADate().ToString(CultureInfo.InvariantCulture);
} else {
elem.InnerText = "\"" + name.NameValue + "\"";
}
diff --git a/EPPlus/ExcelWorksheet.cs b/EPPlus/ExcelWorksheet.cs
index 85a6ccd..c561c33 100644
--- a/EPPlus/ExcelWorksheet.cs
+++ b/EPPlus/ExcelWorksheet.cs
@@ -697,7 +697,6 @@
}
}
- private const string _tabColorPath = "d:sheetPr/d:tabColor/@rgb";
private const string _codeModuleNamePath = "d:sheetPr/@codeName";
internal string CodeModuleName {
@@ -785,8 +784,7 @@
LoadColPageBreakes(xr);
//...then the rest of the Xml is extracted and loaded into the WorksheetXml document.
stream.Seek(0, SeekOrigin.Begin);
- Encoding encoding;
- xml = GetWorkSheetXml(stream, start, end, out encoding);
+ xml = GetWorkSheetXml(stream, start, end, out var encoding);
//first char is invalid sometimes??
if (xml[0] != '<') {
@@ -824,8 +822,7 @@
while (xr.Read()) {
if (xr.LocalName == "brk") {
if (xr.NodeType == XmlNodeType.Element) {
- int id;
- if (int.TryParse(xr.GetAttribute("id"), out id)) {
+ if (int.TryParse(xr.GetAttribute("id"), out var id)) {
Row(id).PageBreak = true;
}
}
@@ -842,8 +839,7 @@
while (xr.Read()) {
if (xr.LocalName == "brk") {
if (xr.NodeType == XmlNodeType.Element) {
- int id;
- if (int.TryParse(xr.GetAttribute("id"), out id)) {
+ if (int.TryParse(xr.GetAttribute("id"), out var id)) {
Column(id).PageBreak = true;
}
}
@@ -1014,9 +1010,8 @@
xr.GetAttribute("hidden") != null && xr.GetAttribute("hidden") == "1" ? true : false;
_values.SetValue(0, min, col);
- int style;
if (!(xr.GetAttribute("style") == null
- || !int.TryParse(xr.GetAttribute("style"), out style))) {
+ || !int.TryParse(xr.GetAttribute("style"), out var style))) {
_styles.SetValue(0, min, style);
}
}
@@ -1025,23 +1020,6 @@
}
/// <summary>
- /// Read until the node is found. If not found the xmlreader is reseted.
- /// </summary>
- /// <param name="xr">The reader</param>
- /// <param name="nodeText">Text to search for</param>
- /// <param name="altNode">Alternative text to search for</param>
- /// <returns></returns>
- private static bool ReadXmlReaderUntil(XmlTextReader xr, string nodeText, string altNode) {
- do {
- if (xr.LocalName == nodeText || xr.LocalName == altNode) {
- return true;
- }
- } while (xr.Read());
- xr.Close();
- return false;
- }
-
- /// <summary>
/// Load Hyperlinks
/// </summary>
/// <param name="xr">The reader</param>
@@ -1051,16 +1029,12 @@
}
while (xr.Read()) {
if (xr.LocalName == "hyperlink") {
- int fromRow,
- fromCol,
- toRow,
- toCol;
ExcelCellBase.GetRowColFromAddress(
xr.GetAttribute("ref"),
- out fromRow,
- out fromCol,
- out toRow,
- out toCol);
+ out var fromRow,
+ out var fromCol,
+ out int toRow,
+ out var toCol);
ExcelHyperLink hl = null;
if (xr.GetAttribute("id", ExcelPackage._schemaRelationships) != null) {
var rId = xr.GetAttribute("id", ExcelPackage._schemaRelationships);
@@ -1429,8 +1403,7 @@
&& nf
<= 47)) // Duration
{
- double res;
- if (double.TryParse(v, NumberStyles.Any, CultureInfo.InvariantCulture, out res)) {
+ if (double.TryParse(v, NumberStyles.Any, CultureInfo.InvariantCulture, out var res)) {
if (Workbook.Date1904) {
res += ExcelWorkbook._date1904Offset;
}
@@ -1451,8 +1424,7 @@
|| (nf
== 22)) // DateTime
{
- double res;
- if (double.TryParse(v, NumberStyles.Any, CultureInfo.InvariantCulture, out res)) {
+ if (double.TryParse(v, NumberStyles.Any, CultureInfo.InvariantCulture, out var res)) {
if (Workbook.Date1904) {
res += ExcelWorkbook._date1904Offset;
}
@@ -1469,8 +1441,7 @@
_values.SetValue(row, col, v);
}
} else {
- double d;
- if (double.TryParse(v, NumberStyles.Any, CultureInfo.InvariantCulture, out d)) {
+ if (double.TryParse(v, NumberStyles.Any, CultureInfo.InvariantCulture, out var d)) {
_values.SetValue(row, col, d);
} else {
// Cope with Google Sheets export of cells having a formula.
@@ -1727,12 +1698,15 @@
/// <param name="selectSheet">Make the sheet active</param>
public void Select(string address, bool selectSheet) {
CheckSheetType();
- int fromCol,
- fromRow,
- toCol,
+ int toCol,
toRow;
//Get rows and columns and validate as well
- ExcelCellBase.GetRowColFromAddress(address, out fromRow, out fromCol, out toRow, out toCol);
+ ExcelCellBase.GetRowColFromAddress(
+ address,
+ out var fromRow,
+ out var fromCol,
+ out toRow,
+ out toCol);
if (selectSheet) {
View.TabSelected = true;
@@ -1937,8 +1911,8 @@
var csec = new CellsStoreEnumerator<object>(_values, 0, 1, 0, ExcelPackage.MaxColumns);
var lst = new List<ExcelColumn>();
foreach (var col in csec) {
- if (col is ExcelColumn) {
- lst.Add((ExcelColumn)col);
+ if (col is ExcelColumn column) {
+ lst.Add(column);
}
}
@@ -2081,246 +2055,6 @@
}
}
- private void FixSharedFormulasRows(int position, int rows) {
- List<Formulas> added = new List<Formulas>();
- List<Formulas> deleted = new List<Formulas>();
-
- foreach (int id in _sharedFormulas.Keys) {
- var f = _sharedFormulas[id];
- int fromCol,
- fromRow,
- toCol,
- toRow;
-
- ExcelCellBase.GetRowColFromAddress(f.Address, out fromRow, out fromCol, out toRow, out toCol);
- if (position >= fromRow
- && position + (Math.Abs(rows))
- <= toRow) //Insert/delete is whithin the share formula address
- {
- if (rows
- > 0) //Insert
- {
- f.Address =
- ExcelCellBase.GetAddress(fromRow, fromCol)
- + ":"
- + ExcelCellBase.GetAddress(position - 1, toCol);
- if (toRow != fromRow) {
- Formulas newF = new Formulas(SourceCodeTokenizer.Default);
- newF.StartCol = f.StartCol;
- newF.StartRow = position + rows;
- newF.Address =
- ExcelCellBase.GetAddress(position + rows, fromCol)
- + ":"
- + ExcelCellBase.GetAddress(toRow + rows, toCol);
- newF.Formula = ExcelCellBase.TranslateFromR1C1(
- ExcelCellBase.TranslateToR1C1(f.Formula, f.StartRow, f.StartCol),
- position,
- f.StartCol);
- added.Add(newF);
- }
- } else {
- if (fromRow - rows < toRow) {
- f.Address = ExcelCellBase.GetAddress(fromRow, fromCol, toRow + rows, toCol);
- } else {
- f.Address =
- ExcelCellBase.GetAddress(fromRow, fromCol)
- + ":"
- + ExcelCellBase.GetAddress(toRow + rows, toCol);
- }
- }
- } else if (position <= toRow) {
- if (rows
- > 0) //Insert before shift down
- {
- f.StartRow += rows;
- //f.Formula = ExcelCell.UpdateFormulaReferences(f.Formula, rows, 0, position, 0); //Recalc the cells positions
- f.Address =
- ExcelCellBase.GetAddress(fromRow + rows, fromCol)
- + ":"
- + ExcelCellBase.GetAddress(toRow + rows, toCol);
- } else {
- //Cells[f.Address].SetSharedFormulaID(int.MinValue);
- if (position <= fromRow
- && position + Math.Abs(rows)
- > toRow) //Delete the formula
- {
- deleted.Add(f);
- } else {
- toRow = toRow + rows < position - 1 ? position - 1 : toRow + rows;
- if (position <= fromRow) {
- fromRow = fromRow + rows < position ? position : fromRow + rows;
- }
-
- f.Address = ExcelCellBase.GetAddress(fromRow, fromCol, toRow, toCol);
- Cells[f.Address].SetSharedFormulaId(f.Index);
- //f.StartRow = fromRow;
-
- //f.Formula = ExcelCell.UpdateFormulaReferences(f.Formula, rows, 0, position, 0);
- }
- }
- }
- }
-
- AddFormulas(added, position, rows);
-
- //Remove formulas
- foreach (Formulas f in deleted) {
- _sharedFormulas.Remove(f.Index);
- }
-
- //Fix Formulas
- added = new();
- foreach (int id in _sharedFormulas.Keys) {
- var f = _sharedFormulas[id];
- UpdateSharedFormulaRow(ref f, position, rows, ref added);
- }
- AddFormulas(added, position, rows);
- }
-
- private void AddFormulas(List<Formulas> added, int position, int rows) {
- //Add new formulas
- foreach (Formulas f in added) {
- f.Index = GetMaxShareFunctionIndex(false);
- _sharedFormulas.Add(f.Index, f);
- Cells[f.Address].SetSharedFormulaId(f.Index);
- }
- }
-
- private void UpdateSharedFormulaRow(
- ref Formulas formula,
- int startRow,
- int rows,
- ref List<Formulas> newFormulas) {
- int fromRow,
- fromCol,
- toRow,
- toCol;
- int newFormulasCount = newFormulas.Count;
- ExcelCellBase.GetRowColFromAddress(
- formula.Address,
- out fromRow,
- out fromCol,
- out toRow,
- out toCol);
- //int refSplits = Regex.Split(formula.Formula, "#REF!").GetUpperBound(0);
- string formualR1C1;
- if (rows > 0 || fromRow <= startRow) {
- formualR1C1 = ExcelCellBase.TranslateToR1C1(
- formula.Formula,
- formula.StartRow,
- formula.StartCol);
- formula.Formula = ExcelCellBase.TranslateFromR1C1(formualR1C1, fromRow, formula.StartCol);
- } else {
- formualR1C1 = ExcelCellBase.TranslateToR1C1(
- formula.Formula,
- formula.StartRow - rows,
- formula.StartCol);
- formula.Formula = ExcelCellBase.TranslateFromR1C1(
- formualR1C1,
- formula.StartRow,
- formula.StartCol);
- }
- //bool isRef = false;
- //Formulas restFormula=formula;
- string prevFormualR1C1 = formualR1C1;
- for (int row = fromRow; row <= toRow; row++) {
- for (int col = fromCol; col <= toCol; col++) {
- string newFormula;
- string currentFormulaR1C1;
- if (rows > 0 || row < startRow) {
- newFormula = ExcelCellBase.UpdateFormulaReferences(
- ExcelCellBase.TranslateFromR1C1(formualR1C1, row, col),
- rows,
- 0,
- startRow,
- 0);
- currentFormulaR1C1 = ExcelCellBase.TranslateToR1C1(newFormula, row, col);
- } else {
- newFormula = ExcelCellBase.UpdateFormulaReferences(
- ExcelCellBase.TranslateFromR1C1(formualR1C1, row - rows, col),
- rows,
- 0,
- startRow,
- 0);
- currentFormulaR1C1 = ExcelCellBase.TranslateToR1C1(newFormula, row, col);
- }
- if (currentFormulaR1C1
- != prevFormualR1C1) //newFormula.Contains("#REF!"))
- {
- //if (refSplits == 0 || Regex.Split(newFormula, "#REF!").GetUpperBound(0) != refSplits)
- //{
- //isRef = true;
- if (row == fromRow && col == fromCol) {
- formula.Formula = newFormula;
- } else {
- if (newFormulas.Count == newFormulasCount) {
- formula.Address = ExcelCellBase.GetAddress(
- formula.StartRow,
- formula.StartCol,
- row - 1,
- col);
- } else {
- newFormulas[newFormulas.Count - 1].Address = ExcelCellBase.GetAddress(
- newFormulas[newFormulas.Count - 1].StartRow,
- newFormulas[newFormulas.Count - 1].StartCol,
- row - 1,
- col);
- }
- var refFormula = new Formulas(SourceCodeTokenizer.Default);
- refFormula.Formula = newFormula;
- refFormula.StartRow = row;
- refFormula.StartCol = col;
- newFormulas.Add(refFormula);
-
- //restFormula = null;
- prevFormualR1C1 = currentFormulaR1C1;
- }
- }
- // }
- // else
- // {
- // isRef = false;
- // }
- //}
- //else
- //{
- // isRef = false;
- //}
- //if (restFormula==null)
- //{
- //if (newFormulas.Count == newFormulasCount)
- //{
- // formula.Address = ExcelCellBase.GetAddress(formula.StartRow, formula.StartCol, row - 1, col);
- //}
- //else
- //{
- // newFormulas[newFormulas.Count - 1].Address = ExcelCellBase.GetAddress(newFormulas[newFormulas.Count - 1].StartRow, newFormulas[0].StartCol, row - 1, col);
- //}
-
- //restFormula = new Formulas();
- //restFormula.Formula = newFormula;
- //restFormula.StartRow = row;
- //restFormula.StartCol = col;
- //newFormulas.Add(restFormula);
- //}
- }
- }
- if (rows < 0 && formula.StartRow > startRow) {
- if (formula.StartRow + rows < startRow) {
- formula.StartRow = startRow;
- } else {
- formula.StartRow += rows;
- }
- }
- if (newFormulas.Count > newFormulasCount) {
- newFormulas[newFormulas.Count - 1].Address = ExcelCellBase.GetAddress(
- newFormulas[newFormulas.Count - 1].StartRow,
- newFormulas[newFormulas.Count - 1].StartCol,
- toRow,
- toCol);
- }
- }
-
/// <summary>
/// Delete the specified row from the worksheet.
/// </summary>
@@ -2409,11 +2143,10 @@
0,
ExcelPackage.MaxColumns);
foreach (var column in csec) {
- if (column is ExcelColumn) {
- var c = (ExcelColumn)column;
- if (c._columnMin >= columnFrom) {
- c._columnMin -= columns;
- c._columnMax -= columns;
+ if (column is ExcelColumn excelColumn) {
+ if (excelColumn._columnMin >= columnFrom) {
+ excelColumn._columnMin -= columns;
+ excelColumn._columnMax -= columns;
}
}
}
@@ -2480,19 +2213,11 @@
delSf.Add(sf.Index);
} else {
sf.Address = a.Address;
- //sf.Formula = ExcelCellBase.UpdateFormulaReferences(sf.Formula, 0, -columns, 0, columnFrom);
if (sf.StartCol > columnFrom) {
var c = Math.Min(sf.StartCol - columnFrom, columns);
sf.Formula = ExcelCellBase.UpdateFormulaReferences(sf.Formula, 0, -c, 0, 1);
sf.StartCol -= c;
}
-
- //sf.Address = a.Address;
- //sf.Formula = ExcelCellBase.UpdateFormulaReferences(sf.Formula, 0,-columns,0, columnFrom);
- //if (sf.StartCol >= columnFrom)
- //{
- // sf.StartCol -= sf.StartCol;
- //}
}
}
foreach (var ix in delSf) {
@@ -2535,10 +2260,8 @@
/// <returns>The value</returns>
public object GetValue(int row, int column) {
CheckSheetType();
- //ulong cellID = ExcelCellBase.GetCellID(SheetID, Row, Column);
var v = _values.GetValue(row, column);
if (v != null) {
- //var cell = ((ExcelCell)_cells[cellID]);
if (_flags.GetFlagValue(row, column, CellFlags.RichText)) {
return Cells[row, column].RichText.Text;
}
@@ -2587,8 +2310,7 @@
return ((T)(object)(new DateTime(((TimeSpan)v).Ticks)));
}
if (fromType == typeof(string)) {
- DateTime dt;
- if (DateTime.TryParse(v.ToString(), out dt)) {
+ if (DateTime.TryParse(v.ToString(), out var dt)) {
return (T)(object)(dt);
}
return default(T);
@@ -2605,8 +2327,7 @@
return ((T)(object)(new TimeSpan(((DateTime)v).Ticks)));
}
if (fromType == typeof(string)) {
- TimeSpan ts;
- if (TimeSpan.TryParse(v.ToString(), out ts)) {
+ if (TimeSpan.TryParse(v.ToString(), out var ts)) {
return (T)(object)(ts);
}
return default(T);
@@ -2666,9 +2387,7 @@
/// <param name="value">The value</param>
public void SetValue(string address, object value) {
CheckSheetType();
- int row,
- col;
- ExcelCellBase.GetRowCol(address, out row, out col, true);
+ ExcelCellBase.GetRowCol(address, out var row, out var col, true);
if (row < 1 || col < 1 || row > ExcelPackage.MaxRows && col > ExcelPackage.MaxColumns) {
throw new ArgumentOutOfRangeException("Address is invalid or out of range");
}
@@ -2739,18 +2458,13 @@
GetBlockPos(xml, "cols", ref colStart, ref colEnd);
streamWriter.Write(xml.Substring(0, colStart));
- var colBreaks = new List<int>();
- //if (_columns.Count > 0)
- //{
UpdateColumnData(streamWriter);
- //}
int cellStart = colEnd,
cellEnd = colEnd;
GetBlockPos(xml, "sheetData", ref cellStart, ref cellEnd);
streamWriter.Write(xml.Substring(colEnd, cellStart - colEnd));
- var rowBreaks = new List<int>();
UpdateRowCellData(streamWriter);
int mergeStart = cellEnd,
@@ -2768,28 +2482,19 @@
hyperEnd = mergeEnd;
GetBlockPos(xml, "hyperlinks", ref hyperStart, ref hyperEnd);
streamWriter.Write(xml.Substring(mergeEnd, hyperStart - mergeEnd));
- //if (_hyperLinkCells.Count > 0)
- //{
UpdateHyperLinks(streamWriter);
- // }
int rowBreakStart = hyperEnd,
rowBreakEnd = hyperEnd;
GetBlockPos(xml, "rowBreaks", ref rowBreakStart, ref rowBreakEnd);
streamWriter.Write(xml.Substring(hyperEnd, rowBreakStart - hyperEnd));
- //if (rowBreaks.Count > 0)
- //{
UpdateRowBreaks(streamWriter);
- //}
int colBreakStart = rowBreakEnd,
colBreakEnd = rowBreakEnd;
GetBlockPos(xml, "colBreaks", ref colBreakStart, ref colBreakEnd);
streamWriter.Write(xml.Substring(rowBreakEnd, colBreakStart - rowBreakEnd));
- //if (colBreaks.Count > 0)
- //{
UpdateColBreaks(streamWriter);
- //}
streamWriter.Write(xml.Substring(colBreakEnd, xml.Length - colBreakEnd));
}
}
@@ -3114,7 +2819,6 @@
StringBuilder breaks = new StringBuilder();
int count = 0;
var cse = new CellsStoreEnumerator<object>(_values, 0, 0, 0, ExcelPackage.MaxColumns);
- //foreach (ExcelColumn col in _columns)
while (cse.Next()) {
var col = cse.Value as ExcelColumn;
if (col != null && col.PageBreak) {
@@ -3148,21 +2852,7 @@
/// Inserts the cols collection into the XML document
/// </summary>
private void UpdateColumnData(StreamWriter sw) {
- //ExcelColumn prevCol = null; //commented out 11/1-12 JK
- //foreach (ExcelColumn col in _columns)
- //{
- // if (prevCol != null)
- // {
- // if(prevCol.ColumnMax != col.ColumnMin-1)
- // {
- // prevCol._columnMax=col.ColumnMin-1;
- // }
- // }
- // prevCol = col;
- //}
var cse = new CellsStoreEnumerator<object>(_values, 0, 1, 0, ExcelPackage.MaxColumns);
- //sw.Write("<cols>");
- //foreach (ExcelColumn col in _columns)
bool first = true;
while (cse.Next()) {
if (first) {
@@ -3203,11 +2893,6 @@
sw.Write(" style=\"{0}\"", styleId);
}
sw.Write(" />");
-
- //if (col.PageBreak)
- //{
- // colBreaks.Add(col.ColumnMin);
- //}
}
if (!first) {
sw.Write("</cols>");
@@ -3258,8 +2943,7 @@
}
object v = cse.Value;
object formula = _formulas.GetValue(cse.Row, cse.Column);
- if (formula is int) {
- int sfId = (int)formula;
+ if (formula is int sfId) {
var f = _sharedFormulas[sfId];
if (f.Address.IndexOf(':') > 0) {
if (f.StartCol == cse.Column && f.StartRow == cse.Row) {
@@ -3366,14 +3050,8 @@
}
}
}
- ////Update hyperlinks.
- //if (cell.Hyperlink != null)
- //{
- // _hyperLinkCells.Add(cell.CellID);
- //}
} else //ExcelRow
{
- //int newRow=((ExcelRow)cse.Value).Row;
WriteRow(cache, cellXfs, row, cse.Row);
row = cse.Row;
}
@@ -3392,8 +3070,6 @@
}
private object GetFormulaValue(object v) {
- //if (_workbook._isCalculated)
- //{
if (v != null && v.ToString() != "") {
return "<v>" + SecurityElement.Escape(GetValueForXml(v)) + "</v>"; //Fixes issue 15071
}
@@ -3404,7 +3080,7 @@
if (v is bool) {
return " t=\"b\"";
}
- if ((v is double && double.IsInfinity((double)v)) || v is ExcelErrorValue) {
+ if ((v is double d && double.IsInfinity(d)) || v is ExcelErrorValue) {
return " t=\"e\"";
}
if (allowStr
@@ -3422,21 +3098,21 @@
private string GetValueForXml(object v) {
string s;
try {
- if (v is DateTime) {
- double sdv = ((DateTime)v).ToOADate();
+ if (v is DateTime time) {
+ double sdv = time.ToOADate();
if (Workbook.Date1904) {
sdv -= ExcelWorkbook._date1904Offset;
}
s = sdv.ToString(CultureInfo.InvariantCulture);
- } else if (v is TimeSpan) {
- s = new DateTime(((TimeSpan)v).Ticks).ToOADate().ToString(CultureInfo.InvariantCulture);
+ } else if (v is TimeSpan span) {
+ s = new DateTime(span.Ticks).ToOADate().ToString(CultureInfo.InvariantCulture);
;
} else if (v.GetType().IsPrimitive || v is double || v is decimal) {
- if (v is double && double.IsNaN((double)v)) {
+ if (v is double d && double.IsNaN(d)) {
s = "";
- } else if (v is double && double.IsInfinity((double)v)) {
+ } else if (v is double d1 && double.IsInfinity(d1)) {
s = "#NUM!";
} else {
s = Convert
@@ -3494,48 +3170,6 @@
cache.Append(">");
}
- private void WriteRow(
- StreamWriter sw,
- ExcelStyleCollection<ExcelXfs> cellXfs,
- int prevRow,
- int row) {
- if (prevRow != -1) {
- sw.Write("</row>");
- }
- //ulong rowID = ExcelRow.GetRowID(SheetID, row);
- sw.Write("<row r=\"{0}\" ", row);
- RowInternal currRow = _values.GetValue(row, 0) as RowInternal;
- if (currRow != null) {
- if (currRow.Hidden) {
- sw.Write("ht=\"0\" hidden=\"1\" ");
- } else if (currRow.Height != DefaultRowHeight) {
- sw.Write(string.Format(CultureInfo.InvariantCulture, "ht=\"{0}\" ", currRow.Height));
- if (currRow.CustomHeight) {
- sw.Write("customHeight=\"1\" ");
- }
- }
-
- if (currRow.OutlineLevel > 0) {
- sw.Write("outlineLevel =\"{0}\" ", currRow.OutlineLevel);
- if (currRow.Collapsed) {
- if (currRow.Hidden) {
- sw.Write(" collapsed=\"1\" ");
- } else {
- sw.Write(" collapsed=\"1\" hidden=\"1\" "); //Always hidden
- }
- }
- }
- if (currRow.Phonetic) {
- sw.Write("ph=\"1\" ");
- }
- }
- var s = _styles.GetValue(row, 0);
- if (s > 0) {
- sw.Write("s=\"{0}\" customFormat=\"1\"", cellXfs[s].newID);
- }
- sw.Write(">");
- }
-
/// <summary>
/// Update xml with hyperlinks
/// </summary>
@@ -3553,26 +3187,24 @@
//int row, col;
var uri = _hyperLinks.GetValue(cse.Row, cse.Column);
//ExcelCell cell = _cells[cellId] as ExcelCell;
- if (uri is ExcelHyperLink
- && !string.IsNullOrEmpty((uri as ExcelHyperLink).ReferenceAddress)) {
- ExcelHyperLink hl = uri as ExcelHyperLink;
+ if (uri is ExcelHyperLink link && !string.IsNullOrEmpty(link.ReferenceAddress)) {
sw.Write(
"<hyperlink ref=\"{0}\" location=\"{1}\" {2}{3}/>",
- Cells[cse.Row, cse.Column, cse.Row + hl.RowSpann, cse.Column + hl.ColSpann].Address,
+ Cells[cse.Row, cse.Column, cse.Row + link.RowSpann, cse.Column + link.ColSpann].Address,
ExcelCellBase.GetFullAddress(
SecurityElement.Escape(Name),
- SecurityElement.Escape(hl.ReferenceAddress)),
- string.IsNullOrEmpty(hl.Display)
+ SecurityElement.Escape(link.ReferenceAddress)),
+ string.IsNullOrEmpty(link.Display)
? ""
- : "display=\"" + SecurityElement.Escape(hl.Display) + "\" ",
- string.IsNullOrEmpty(hl.ToolTip)
+ : "display=\"" + SecurityElement.Escape(link.Display) + "\" ",
+ string.IsNullOrEmpty(link.ToolTip)
? ""
- : "tooltip=\"" + SecurityElement.Escape(hl.ToolTip) + "\" ");
+ : "tooltip=\"" + SecurityElement.Escape(link.ToolTip) + "\" ");
} else if (uri != null) {
string id;
Uri hyp;
- if (uri is ExcelHyperLink) {
- hyp = ((ExcelHyperLink)uri).OriginalUri;
+ if (uri is ExcelHyperLink hyperLink) {
+ hyp = hyperLink.OriginalUri;
} else {
hyp = uri;
}
@@ -3583,8 +3215,7 @@
hyp,
TargetMode.External,
ExcelPackage._schemaHyperlink);
- if (uri is ExcelHyperLink) {
- ExcelHyperLink hl = uri as ExcelHyperLink;
+ if (uri is ExcelHyperLink hl) {
sw.Write(
"<hyperlink ref=\"{0}\" {2}{3}r:id=\"{1}\" />",
ExcelCellBase.GetAddress(cse.Row, cse.Column),
@@ -3637,11 +3268,7 @@
public ExcelAddressBase Dimension {
get {
CheckSheetType();
- int fromRow,
- fromCol,
- toRow,
- toCol;
- if (_values.GetDimension(out fromRow, out fromCol, out toRow, out toCol)) {
+ if (_values.GetDimension(out var fromRow, out var fromCol, out var toRow, out var toCol)) {
var addr = new ExcelAddressBase(fromRow, fromCol, toRow, toCol);
addr._ws = Name;
return addr;
@@ -3800,9 +3427,9 @@
var cse = new CellsStoreEnumerator<object>(_values);
var offset = Workbook.Date1904 ? -ExcelWorkbook._date1904Offset : ExcelWorkbook._date1904Offset;
while (cse.MoveNext()) {
- if (cse.Value is DateTime) {
+ if (cse.Value is DateTime time) {
try {
- double sdv = ((DateTime)cse.Value).ToOADate();
+ double sdv = time.ToOADate();
sdv += offset;
cse.Value = DateTime.FromOADate(sdv);
@@ -3813,8 +3440,8 @@
public string GetFormula(int row, int col) {
var v = _formulas.GetValue(row, col);
- if (v is int) {
- return _sharedFormulas[(int)v].GetFormula(row, col, Name);
+ if (v is int i) {
+ return _sharedFormulas[i].GetFormula(row, col, Name);
}
if (v != null) {
return v.ToString();
@@ -3824,8 +3451,8 @@
public string GetFormulaR1C1(int row, int col) {
var v = _formulas.GetValue(row, col);
- if (v is int) {
- var sf = _sharedFormulas[(int)v];
+ if (v is int i) {
+ var sf = _sharedFormulas[i];
return ExcelCellBase.TranslateToR1C1(
Formulas.RemoveDummyFunction(sf.Formula),
sf.StartRow,
@@ -3839,8 +3466,8 @@
public string GetFormulaR1C1_V1(int row, int col) {
var v = _formulas.GetValue(row, col);
- if (v is int) {
- var sf = _sharedFormulas[(int)v];
+ if (v is int i) {
+ var sf = _sharedFormulas[i];
return ExcelCellBase.TranslateToR1C1_V1(
Formulas.RemoveDummyFunction(sf.Formula),
sf.StartRow,
@@ -3857,8 +3484,8 @@
public string GetArrayFormulaAddress(int row, int col) {
var v = _formulas.GetValue(row, col);
- if ((v is int) && (_sharedFormulas[(int)v].IsArray)) {
- return _sharedFormulas[(int)v].Address;
+ if ((v is int i) && (_sharedFormulas[i].IsArray)) {
+ return _sharedFormulas[i].Address;
}
return "";
}
diff --git a/EPPlus/ExcelWorksheetView.cs b/EPPlus/ExcelWorksheetView.cs
index 03303b8..bd132e5 100644
--- a/EPPlus/ExcelWorksheetView.cs
+++ b/EPPlus/ExcelWorksheetView.cs
@@ -66,14 +66,17 @@
return address;
}
set {
- int fromCol,
- fromRow,
- toCol,
+ int toCol,
toRow;
if (_selectionNode == null) {
CreateSelectionElement();
}
- ExcelCellBase.GetRowColFromAddress(value, out fromRow, out fromCol, out toRow, out toCol);
+ ExcelCellBase.GetRowColFromAddress(
+ value,
+ out var fromRow,
+ out var fromCol,
+ out toRow,
+ out toCol);
SetXmlNodeString(_activeCellPath, value);
if (((XmlElement)TopNode).GetAttribute("sqref") == "") {
SelectedRange = ExcelCellBase.GetAddress(fromRow, fromCol);
@@ -102,14 +105,17 @@
return address;
}
set {
- int fromCol,
- fromRow,
- toCol,
+ int toCol,
toRow;
if (_selectionNode == null) {
CreateSelectionElement();
}
- ExcelCellBase.GetRowColFromAddress(value, out fromRow, out fromCol, out toRow, out toCol);
+ ExcelCellBase.GetRowColFromAddress(
+ value,
+ out var fromRow,
+ out var fromCol,
+ out toRow,
+ out toCol);
SetXmlNodeString(_selectionRangePath, value);
if (((XmlElement)TopNode).GetAttribute("activeCell") == "") {
ActiveCell = ExcelCellBase.GetAddress(fromRow, fromCol);
@@ -152,44 +158,27 @@
/// </summary>
protected internal XmlElement SheetViewElement => (XmlElement)TopNode;
- private XmlElement _selectionNode;
-
- private XmlElement SelectionNode {
- get {
- _selectionNode =
- SheetViewElement.SelectSingleNode("//d:selection", _worksheet.NameSpaceManager)
- as XmlElement;
- if (_selectionNode == null) {
- _selectionNode = _worksheet.WorksheetXml.CreateElement(
- "selection",
- ExcelPackage._schemaMain);
- SheetViewElement.AppendChild(_selectionNode);
- }
- return _selectionNode;
- }
- }
-
/// <summary>
/// The active cell.
/// </summary>
public string ActiveCell {
- get { return Panes[Panes.GetUpperBound(0)].ActiveCell; }
- set { Panes[Panes.GetUpperBound(0)].ActiveCell = value; }
+ get => Panes[Panes.GetUpperBound(0)].ActiveCell;
+ set => Panes[Panes.GetUpperBound(0)].ActiveCell = value;
}
/// <summary>
/// Selected Cells in the worksheet.Used in combination with ActiveCell
/// </summary>
public string SelectedRange {
- get { return Panes[Panes.GetUpperBound(0)].SelectedRange; }
- set { Panes[Panes.GetUpperBound(0)].SelectedRange = value; }
+ get => Panes[Panes.GetUpperBound(0)].SelectedRange;
+ set => Panes[Panes.GetUpperBound(0)].SelectedRange = value;
}
/// <summary>
/// Indicates if the worksheet is selected within the workbook
/// </summary>
public bool TabSelected {
- get { return GetXmlNodeBool("@tabSelected"); }
+ get => GetXmlNodeBool("@tabSelected");
set {
if (value) {
// // ensure no other worksheet has its tabSelected attribute set to 1
@@ -215,7 +204,7 @@
/// Sets the view mode of the worksheet to pagelayout
/// </summary>
public bool PageLayoutView {
- get { return GetXmlNodeString("@view") == "pageLayout"; }
+ get => GetXmlNodeString("@view") == "pageLayout";
set {
if (value) {
SetXmlNodeString("@view", "pageLayout");
@@ -229,7 +218,7 @@
/// Sets the view mode of the worksheet to pagebreak
/// </summary>
public bool PageBreakView {
- get { return GetXmlNodeString("@view") == "pageBreakPreview"; }
+ get => GetXmlNodeString("@view") == "pageBreakPreview";
set {
if (value) {
SetXmlNodeString("@view", "pageBreakPreview");
@@ -243,23 +232,23 @@
/// Show gridlines in the worksheet
/// </summary>
public bool ShowGridLines {
- get { return GetXmlNodeBool("@showGridLines"); }
- set { SetXmlNodeString("@showGridLines", value ? "1" : "0"); }
+ get => GetXmlNodeBool("@showGridLines");
+ set => SetXmlNodeString("@showGridLines", value ? "1" : "0");
}
/// <summary>
/// Show the Column/Row headers (containg column letters and row numbers)
/// </summary>
public bool ShowHeaders {
- get { return GetXmlNodeBool("@showRowColHeaders"); }
- set { SetXmlNodeString("@showRowColHeaders", value ? "1" : "0"); }
+ get => GetXmlNodeBool("@showRowColHeaders");
+ set => SetXmlNodeString("@showRowColHeaders", value ? "1" : "0");
}
/// <summary>
/// Window zoom magnification for current view representing percent values.
/// </summary>
public int ZoomScale {
- get { return GetXmlNodeInt("@zoomScale"); }
+ get => GetXmlNodeInt("@zoomScale");
set {
if (value < 10 || value > 400) {
throw new ArgumentOutOfRangeException("Zoome scale out of range (10-400)");
@@ -272,13 +261,13 @@
/// Flag indicating whether the sheet is in 'right to left' display mode. When in this mode,Column A is on the far right, Column B ;is one column left of Column A, and so on. Also,information in cells is displayed in the Right to Left format.
/// </summary>
public bool RightToLeft {
- get { return GetXmlNodeBool("@rightToLeft"); }
- set { SetXmlNodeString("@rightToLeft", value ? "1" : "0"); }
+ get => GetXmlNodeBool("@rightToLeft");
+ set => SetXmlNodeString("@rightToLeft", value ? "1" : "0");
}
internal bool WindowProtection {
- get { return GetXmlNodeBool("@windowProtection", false); }
- set { SetXmlNodeBool("@windowProtection", value, false); }
+ get => GetXmlNodeBool("@windowProtection", false);
+ set => SetXmlNodeBool("@windowProtection", value, false);
}
/// <summary>
diff --git a/EPPlus/ExcelWorksheets.cs b/EPPlus/ExcelWorksheets.cs
index dd56dab..1ed69a2 100644
--- a/EPPlus/ExcelWorksheets.cs
+++ b/EPPlus/ExcelWorksheets.cs
@@ -338,9 +338,7 @@
/// </summary>
/// <param name="name">The name of the worksheet</param>
/// <returns></returns>
- public ExcelWorksheet this[string name] {
- get { return GetByName(name); }
- }
+ public ExcelWorksheet this[string name] => GetByName(name);
internal ExcelWorksheet GetBySheetId(int localSheetId) {
foreach (ExcelWorksheet ws in this) {
diff --git a/EPPlus/FormulaParsing/CalculateExtentions.cs b/EPPlus/FormulaParsing/CalculateExtentions.cs
index 9cb1c28..8d8792b 100644
--- a/EPPlus/FormulaParsing/CalculateExtentions.cs
+++ b/EPPlus/FormulaParsing/CalculateExtentions.cs
@@ -75,36 +75,6 @@
CalcChain(worksheet.Workbook, parser, dc);
}
- // I added this method in December 2019 to analyze why formula calculation was taking
- // so long during a 'Regenerate' of a Microsoft Excel table.
- private static void DisplayCalcChain(ExcelWorksheet worksheet, DependencyChain dc) {
- // Open Output file
- string outputFolderName = @"C:\\EPPlus";
- Directory.CreateDirectory(outputFolderName);
- DateTime invocationDateTime = DateTime.Now;
- string outputFileName = Path.Combine(
- outputFolderName,
- $"CalcChain_{worksheet.Name}_{invocationDateTime.ToString("yyyyMMdd_HHmmss_fff")}.txt");
- FileStream fileStream = new FileStream(outputFileName, FileMode.CreateNew);
- StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.UTF8, 65536);
-
- // Display CalcChain
- foreach (int index in dc.CalcOrder) {
- FormulaCell formulaCell = dc.list[index];
- string calcChainValue = "";
- calcChainValue += $"Index {index}, ";
- calcChainValue += $"Worksheet '{formulaCell.ws.Name}', ";
- calcChainValue += $"Row {formulaCell.Row}, ";
- calcChainValue += $"Col {formulaCell.Column}, ";
- calcChainValue += $" Formula '{formulaCell.Formula}'";
- streamWriter.WriteLine(calcChainValue);
- }
-
- // Close Output file
- streamWriter.Flush();
- streamWriter.Close();
- }
-
public static void Calculate(this ExcelRangeBase range) {
Calculate(range, new());
}
diff --git a/EPPlus/FormulaParsing/DependencyChain/DependenyChainFactory.cs b/EPPlus/FormulaParsing/DependencyChain/DependenyChainFactory.cs
index 009a8e5..f198123 100644
--- a/EPPlus/FormulaParsing/DependencyChain/DependenyChainFactory.cs
+++ b/EPPlus/FormulaParsing/DependencyChain/DependenyChainFactory.cs
@@ -101,16 +101,16 @@
ExcelNamedRange name,
ExcelCalculationOption options) {
var ws = name.Worksheet;
- var id = ExcelCellBase.GetCellId(ws == null ? 0 : ws.SheetID, name.Index, 0);
+ var id = ExcelCellBase.GetCellId(ws?.SheetID ?? 0, name.Index, 0);
if (!depChain.index.ContainsKey(id)) {
var f = new FormulaCell {
- SheetID = ws == null ? 0 : ws.SheetID,
+ SheetID = ws?.SheetID ?? 0,
Row = name.Index,
Column = 0,
Formula = name.NameFormula,
};
if (!string.IsNullOrEmpty(f.Formula)) {
- f.Tokens = lexer.Tokenize(f.Formula, (ws == null ? null : ws.Name)).ToList();
+ f.Tokens = lexer.Tokenize(f.Formula, ws?.Name).ToList();
if (ws == null) {
name._workbook._formulaTokens.SetValue(name.Index, 0, f.Tokens);
} else {
@@ -164,8 +164,8 @@
Row = fs.Row,
Column = fs.Column,
};
- if (fs.Value is int) {
- f.Formula = ws._sharedFormulas[(int)fs.Value].GetFormula(fs.Row, fs.Column, ws.Name);
+ if (fs.Value is int value) {
+ f.Formula = ws._sharedFormulas[value].GetFormula(fs.Row, fs.Column, ws.Name);
} else {
f.Formula = fs.Value.ToString();
}
@@ -237,15 +237,13 @@
}
}
} else if (t.TokenType == TokenType.NameValue) {
- string adrWb,
- adrWs,
- adrName;
+ string adrWb;
ExcelNamedRange name;
ExcelAddressBase.SplitAddress(
t.Value,
out adrWb,
- out adrWs,
- out adrName,
+ out var adrWs,
+ out var adrName,
f.ws == null ? "" : f.ws.Name);
if (!string.IsNullOrEmpty(adrWs)) {
if (f.ws == null) {
diff --git a/EPPlus/FormulaParsing/EpplusExcelDataProvider.cs b/EPPlus/FormulaParsing/EpplusExcelDataProvider.cs
index 0783dcc..8dfe6d1 100644
--- a/EPPlus/FormulaParsing/EpplusExcelDataProvider.cs
+++ b/EPPlus/FormulaParsing/EpplusExcelDataProvider.cs
@@ -68,15 +68,11 @@
public ICellInfo Current => _cell;
- public ExcelWorksheet Worksheet {
- get { return _ws; }
- }
+ public ExcelWorksheet Worksheet => _ws;
public void Dispose() {}
- object IEnumerator.Current {
- get { return this; }
- }
+ object IEnumerator.Current => this;
public bool MoveNext() {
_cellCount++;
@@ -101,9 +97,7 @@
return this;
}
- public ExcelAddressBase Address {
- get { return _address; }
- }
+ public ExcelAddressBase Address => _address;
public object GetValue(int row, int col) {
return _ws.GetValue(row, col);
diff --git a/EPPlus/FormulaParsing/Excel/Functions/ArgumentCollectionUtil.cs b/EPPlus/FormulaParsing/Excel/Functions/ArgumentCollectionUtil.cs
index 3abd514..9f04f77 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/ArgumentCollectionUtil.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/ArgumentCollectionUtil.cs
@@ -72,8 +72,8 @@
double result,
Func<FunctionArgument, double, double> action) {
foreach (var item in collection) {
- if (item.Value is IEnumerable<FunctionArgument>) {
- result = CalculateCollection((IEnumerable<FunctionArgument>)item.Value, result, action);
+ if (item.Value is IEnumerable<FunctionArgument> value) {
+ result = CalculateCollection(value, result, action);
} else {
result = action(item, result);
}
diff --git a/EPPlus/FormulaParsing/Excel/Functions/BoolArgumentParser.cs b/EPPlus/FormulaParsing/Excel/Functions/BoolArgumentParser.cs
index f492580..3f24d9c 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/BoolArgumentParser.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/BoolArgumentParser.cs
@@ -31,21 +31,20 @@
public class BoolArgumentParser : ArgumentParser {
public override object Parse(object obj) {
- if (obj is ExcelDataProvider.IRangeInfo) {
- var r = ((ExcelDataProvider.IRangeInfo)obj).FirstOrDefault();
- obj = (r == null ? null : r.Value);
+ if (obj is ExcelDataProvider.IRangeInfo info) {
+ var r = info.FirstOrDefault();
+ obj = r?.Value;
}
if (obj == null) {
return false;
}
- if (obj is bool) {
- return (bool)obj;
+ if (obj is bool b) {
+ return b;
}
if (obj.IsNumeric()) {
return Convert.ToBoolean(obj);
}
- bool result;
- if (bool.TryParse(obj.ToString(), out result)) {
+ if (bool.TryParse(obj.ToString(), out var result)) {
return result;
}
return result;
diff --git a/EPPlus/FormulaParsing/Excel/Functions/CollectionFlattener.cs b/EPPlus/FormulaParsing/Excel/Functions/CollectionFlattener.cs
index 04eeab3..dfcf5d9 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/CollectionFlattener.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/CollectionFlattener.cs
@@ -42,8 +42,8 @@
List<T> argList,
Action<FunctionArgument, IList<T>> convertFunc) {
foreach (var arg in arguments) {
- if (arg.Value is IEnumerable<FunctionArgument>) {
- FuncArgsToFlatEnumerable((IEnumerable<FunctionArgument>)arg.Value, argList, convertFunc);
+ if (arg.Value is IEnumerable<FunctionArgument> value) {
+ FuncArgsToFlatEnumerable(value, argList, convertFunc);
} else {
convertFunc(arg, argList);
}
diff --git a/EPPlus/FormulaParsing/Excel/Functions/DateTime/DateValue.cs b/EPPlus/FormulaParsing/Excel/Functions/DateTime/DateValue.cs
index 0b5f372..a474018 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/DateTime/DateValue.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/DateTime/DateValue.cs
@@ -17,8 +17,7 @@
}
internal CompileResult Execute(string dateString) {
- System.DateTime result;
- System.DateTime.TryParse(dateString, out result);
+ System.DateTime.TryParse(dateString, out var result);
return result != System.DateTime.MinValue
? CreateResult(result.ToOADate(), DataType.Date)
: CreateResult(ExcelErrorValue.Create(eErrorType.Value), DataType.ExcelError);
diff --git a/EPPlus/FormulaParsing/Excel/Functions/DateTime/Days360.cs b/EPPlus/FormulaParsing/Excel/Functions/DateTime/Days360.cs
index 20810ef..797053e 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/DateTime/Days360.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/DateTime/Days360.cs
@@ -68,10 +68,4 @@
- (startYear * 12 * 30 + startMonth * 30 + startDay);
return CreateResult(result, DataType.Integer);
}
-
- private int GetNumWholeMonths(System.DateTime dt1, System.DateTime dt2) {
- var startDate = new System.DateTime(dt1.Year, dt1.Month, 1).AddMonths(1);
- var endDate = new System.DateTime(dt2.Year, dt2.Month, 1);
- return ((endDate.Year - startDate.Year) * 12) + (endDate.Month - startDate.Month);
- }
}
diff --git a/EPPlus/FormulaParsing/Excel/Functions/DateTime/TimeStringParser.cs b/EPPlus/FormulaParsing/Excel/Functions/DateTime/TimeStringParser.cs
index 4a76f6f..533528d 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/DateTime/TimeStringParser.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/DateTime/TimeStringParser.cs
@@ -64,8 +64,7 @@
if (Regex.IsMatch(input, _regEx12)) {
return Parse12HourTimeString(input);
}
- System.DateTime dateTime;
- if (System.DateTime.TryParse(input, out dateTime)) {
+ if (System.DateTime.TryParse(input, out var dateTime)) {
return GetSerialNumber(dateTime.Hour, dateTime.Minute, dateTime.Second);
}
return -1;
@@ -74,10 +73,7 @@
private double Parse12HourTimeString(string input) {
string dayPart = string.Empty;
dayPart = input.Substring(input.Length - 2, 2);
- int hour;
- int minute;
- int second;
- GetValuesFromString(input, out hour, out minute, out second);
+ GetValuesFromString(input, out var hour, out var minute, out var second);
if (dayPart == "PM") {
hour += 12;
}
@@ -86,10 +82,7 @@
}
private double Parse24HourTimeString(string input) {
- int hour;
- int minute;
- int second;
- GetValuesFromString(input, out hour, out minute, out second);
+ GetValuesFromString(input, out var hour, out var minute, out var second);
ValidateValues(hour, minute, second);
return GetSerialNumber(hour, minute, second);
}
diff --git a/EPPlus/FormulaParsing/Excel/Functions/DateTime/TimeValue.cs b/EPPlus/FormulaParsing/Excel/Functions/DateTime/TimeValue.cs
index ac259b8..c2de2e0 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/DateTime/TimeValue.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/DateTime/TimeValue.cs
@@ -17,8 +17,7 @@
}
internal CompileResult Execute(string dateString) {
- System.DateTime result;
- System.DateTime.TryParse(dateString, out result);
+ System.DateTime.TryParse(dateString, out var result);
return result != System.DateTime.MinValue
? CreateResult(GetTimeValue(result), DataType.Date)
: CreateResult(ExcelErrorValue.Create(eErrorType.Value), DataType.ExcelError);
diff --git a/EPPlus/FormulaParsing/Excel/Functions/DoubleArgumentParser.cs b/EPPlus/FormulaParsing/Excel/Functions/DoubleArgumentParser.cs
index d987c85..ed0cec4 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/DoubleArgumentParser.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/DoubleArgumentParser.cs
@@ -27,22 +27,22 @@
using System.Linq;
using OfficeOpenXml.FormulaParsing.Exceptions;
using OfficeOpenXml.FormulaParsing.Utilities;
-using util = OfficeOpenXml.Utils;
+using ConvertUtil = OfficeOpenXml.Utils.ConvertUtil;
namespace OfficeOpenXml.FormulaParsing.Excel.Functions;
public class DoubleArgumentParser : ArgumentParser {
public override object Parse(object obj) {
Require.That(obj).Named("argument").IsNotNull();
- if (obj is ExcelDataProvider.IRangeInfo) {
- var r = ((ExcelDataProvider.IRangeInfo)obj).FirstOrDefault();
- return r == null ? 0 : r.ValueDouble;
+ if (obj is ExcelDataProvider.IRangeInfo info) {
+ var r = info.FirstOrDefault();
+ return r?.ValueDouble ?? 0;
}
if (obj is double) {
return obj;
}
if (obj.IsNumeric()) {
- return util.ConvertUtil.GetValueDouble(obj);
+ return ConvertUtil.GetValueDouble(obj);
}
var str = obj != null ? obj.ToString() : string.Empty;
try {
diff --git a/EPPlus/FormulaParsing/Excel/Functions/DoubleEnumerableArgConverter.cs b/EPPlus/FormulaParsing/Excel/Functions/DoubleEnumerableArgConverter.cs
index 2ff7a2c..1895872 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/DoubleEnumerableArgConverter.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/DoubleEnumerableArgConverter.cs
@@ -68,8 +68,8 @@
(arg, argList) => {
//var cellInfo = arg.Value as EpplusExcelDataProvider.CellInfo;
//var value = cellInfo != null ? cellInfo.Value : arg.Value;
- if (arg.Value is ExcelDataProvider.IRangeInfo) {
- foreach (var cell in (ExcelDataProvider.IRangeInfo)arg.Value) {
+ if (arg.Value is ExcelDataProvider.IRangeInfo info) {
+ foreach (var cell in info) {
argList.Add(cell.ValueDoubleLogical);
}
} else {
diff --git a/EPPlus/FormulaParsing/Excel/Functions/ExcelFunction.cs b/EPPlus/FormulaParsing/Excel/Functions/ExcelFunction.cs
index ad03cae..a1ae44c 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/ExcelFunction.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/ExcelFunction.cs
@@ -86,7 +86,7 @@
var r = arg.ValueAsRangeInfo;
return r.GetValue(r.Address._fromRow, r.Address._fromCol);
}
- return arg == null ? null : arg.Value;
+ return arg?.Value;
}
/// <summary>
diff --git a/EPPlus/FormulaParsing/Excel/Functions/FunctionArgument.cs b/EPPlus/FormulaParsing/Excel/Functions/FunctionArgument.cs
index 7dec4b3..baa9da7 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/FunctionArgument.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/FunctionArgument.cs
@@ -44,7 +44,7 @@
public object Value { get; private set; }
- public Type Type => Value != null ? Value.GetType() : null;
+ public Type Type => Value?.GetType();
public bool IsExcelRange => Value != null && Value is ExcelDataProvider.IRangeInfo;
@@ -56,8 +56,8 @@
public object ValueFirst {
get {
- if (Value is ExcelDataProvider.INameInfo) {
- Value = ((ExcelDataProvider.INameInfo)Value).Value;
+ if (Value is ExcelDataProvider.INameInfo info) {
+ Value = info.Value;
}
var v = Value as ExcelDataProvider.IRangeInfo;
if (v == null) {
diff --git a/EPPlus/FormulaParsing/Excel/Functions/Information/ErrorType.cs b/EPPlus/FormulaParsing/Excel/Functions/Information/ErrorType.cs
index 9c565cc..f68f0f9 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/Information/ErrorType.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/Information/ErrorType.cs
@@ -41,7 +41,6 @@
return CreateResult(ExcelErrorValue.Create(eErrorType.Na), DataType.ExcelError);
}
var errorType = error.ValueAsExcelErrorValue;
- int retValue;
switch (errorType.Type) {
case eErrorType.Null:
return CreateResult(1, DataType.Integer);
diff --git a/EPPlus/FormulaParsing/Excel/Functions/Information/IsBlank.cs b/EPPlus/FormulaParsing/Excel/Functions/Information/IsBlank.cs
index e231841..8923a4c 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/Information/IsBlank.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/Information/IsBlank.cs
@@ -38,9 +38,8 @@
}
var result = true;
foreach (var arg in arguments) {
- if (arg.Value is ExcelDataProvider.IRangeInfo) {
- var r = (ExcelDataProvider.IRangeInfo)arg.Value;
- if (r.GetValue(r.Address._fromRow, r.Address._fromCol) != null) {
+ if (arg.Value is ExcelDataProvider.IRangeInfo info) {
+ if (info.GetValue(info.Address._fromRow, info.Address._fromCol) != null) {
result = false;
}
} else {
diff --git a/EPPlus/FormulaParsing/Excel/Functions/Information/IsErr.cs b/EPPlus/FormulaParsing/Excel/Functions/Information/IsErr.cs
index ef90818..d857231 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/Information/IsErr.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/Information/IsErr.cs
@@ -11,14 +11,13 @@
var result = isError.Execute(arguments, context);
if ((bool)result.Result) {
var arg = GetFirstValue(arguments);
- if (arg is ExcelDataProvider.IRangeInfo) {
- var r = (ExcelDataProvider.IRangeInfo)arg;
- var e = r.GetValue(r.Address._fromRow, r.Address._fromCol) as ExcelErrorValue;
+ if (arg is ExcelDataProvider.IRangeInfo info) {
+ var e = info.GetValue(info.Address._fromRow, info.Address._fromCol) as ExcelErrorValue;
if (e != null && e.Type == eErrorType.Na) {
return CreateResult(false, DataType.Boolean);
}
} else {
- if (arg is ExcelErrorValue && ((ExcelErrorValue)arg).Type == eErrorType.Na) {
+ if (arg is ExcelErrorValue value && value.Type == eErrorType.Na) {
return CreateResult(false, DataType.Boolean);
}
}
diff --git a/EPPlus/FormulaParsing/Excel/Functions/Information/IsError.cs b/EPPlus/FormulaParsing/Excel/Functions/Information/IsError.cs
index d9802cf..11aaf0b 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/Information/IsError.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/Information/IsError.cs
@@ -37,10 +37,9 @@
return CreateResult(false, DataType.Boolean);
}
foreach (var argument in arguments) {
- if (argument.Value is ExcelDataProvider.IRangeInfo) {
- var r = (ExcelDataProvider.IRangeInfo)argument.Value;
+ if (argument.Value is ExcelDataProvider.IRangeInfo info) {
if (ExcelErrorValue.Values.IsErrorValue(
- r.GetValue(r.Address._fromRow, r.Address._fromCol))) {
+ info.GetValue(info.Address._fromRow, info.Address._fromCol))) {
return CreateResult(true, DataType.Boolean);
}
} else {
diff --git a/EPPlus/FormulaParsing/Excel/Functions/Information/IsNa.cs b/EPPlus/FormulaParsing/Excel/Functions/Information/IsNa.cs
index 82adcfe..641ea01 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/Information/IsNa.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/Information/IsNa.cs
@@ -39,7 +39,7 @@
var v = GetFirstValue(arguments);
- if (v is ExcelErrorValue && ((ExcelErrorValue)v).Type == eErrorType.Na) {
+ if (v is ExcelErrorValue value && value.Type == eErrorType.Na) {
return CreateResult(true, DataType.Boolean);
}
return CreateResult(false, DataType.Boolean);
diff --git a/EPPlus/FormulaParsing/Excel/Functions/Information/N.cs b/EPPlus/FormulaParsing/Excel/Functions/Information/N.cs
index 18d6665..cf3d171 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/Information/N.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/Information/N.cs
@@ -12,8 +12,8 @@
ValidateArguments(arguments, 1);
var arg = GetFirstValue(arguments);
- if (arg is bool) {
- var val = (bool)arg ? 1d : 0d;
+ if (arg is bool b) {
+ var val = b ? 1d : 0d;
return CreateResult(val, DataType.Decimal);
}
if (IsNumeric(arg)) {
diff --git a/EPPlus/FormulaParsing/Excel/Functions/IntArgumentParser.cs b/EPPlus/FormulaParsing/Excel/Functions/IntArgumentParser.cs
index b510d93..40a5d21 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/IntArgumentParser.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/IntArgumentParser.cs
@@ -33,9 +33,8 @@
public class IntArgumentParser : ArgumentParser {
public override object Parse(object obj) {
Require.That(obj).Named("argument").IsNotNull();
- int result;
- if (obj is ExcelDataProvider.IRangeInfo) {
- var r = ((ExcelDataProvider.IRangeInfo)obj).FirstOrDefault();
+ if (obj is ExcelDataProvider.IRangeInfo info) {
+ var r = info.FirstOrDefault();
return r == null ? 0 : Convert.ToInt32(r.ValueDouble);
}
var objType = obj.GetType();
@@ -45,7 +44,7 @@
if (objType == typeof(double) || objType == typeof(decimal)) {
return Convert.ToInt32(obj);
}
- if (!int.TryParse(obj.ToString(), out result)) {
+ if (!int.TryParse(obj.ToString(), out var result)) {
throw new ExcelErrorValueException(ExcelErrorValue.Create(eErrorType.Value));
}
return result;
diff --git a/EPPlus/FormulaParsing/Excel/Functions/Math/Average.cs b/EPPlus/FormulaParsing/Excel/Functions/Math/Average.cs
index 159d9de..b154d24 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/Math/Average.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/Math/Average.cs
@@ -52,8 +52,8 @@
if (ShouldIgnore(arg)) {
return;
}
- if (arg.Value is IEnumerable<FunctionArgument>) {
- foreach (var item in (IEnumerable<FunctionArgument>)arg.Value) {
+ if (arg.Value is IEnumerable<FunctionArgument> value) {
+ foreach (var item in value) {
Calculate(item, context, ref retVal, ref nValues, true);
}
} else if (arg.IsExcelRange) {
diff --git a/EPPlus/FormulaParsing/Excel/Functions/Math/AverageA.cs b/EPPlus/FormulaParsing/Excel/Functions/Math/AverageA.cs
index 00f575f..5cbcdb0 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/Math/AverageA.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/Math/AverageA.cs
@@ -52,8 +52,8 @@
if (ShouldIgnore(arg)) {
return;
}
- if (arg.Value is IEnumerable<FunctionArgument>) {
- foreach (var item in (IEnumerable<FunctionArgument>)arg.Value) {
+ if (arg.Value is IEnumerable<FunctionArgument> value) {
+ foreach (var item in value) {
Calculate(item, context, ref retVal, ref nValues, true);
}
} else if (arg.IsExcelRange) {
@@ -65,9 +65,9 @@
if (IsNumeric(c.Value)) {
nValues++;
retVal += c.ValueDouble;
- } else if (c.Value is bool) {
+ } else if (c.Value is bool cValue) {
nValues++;
- retVal += (bool)c.Value ? 1 : 0;
+ retVal += cValue ? 1 : 0;
} else if (c.Value is string) {
nValues++;
}
diff --git a/EPPlus/FormulaParsing/Excel/Functions/Math/AverageIf.cs b/EPPlus/FormulaParsing/Excel/Functions/Math/AverageIf.cs
index 3b83858..0423f98 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/Math/AverageIf.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/Math/AverageIf.cs
@@ -125,24 +125,4 @@
}
return Divide(retVal, nMatches);
}
-
- private double Calculate(FunctionArgument arg, string expression) {
- var retVal = 0d;
- if (ShouldIgnore(arg) || !_numericExpressionEvaluator.Evaluate(arg.Value, expression)) {
- return retVal;
- }
- if (IsNumeric(arg.Value)) {
- retVal += ConvertUtil.GetValueDouble(arg.Value);
- }
- //else if (arg.Value is System.DateTime)
- //{
- // retVal += Convert.ToDateTime(arg.Value).ToOADate();
- //}
- else if (arg.Value is IEnumerable<FunctionArgument>) {
- foreach (var item in (IEnumerable<FunctionArgument>)arg.Value) {
- retVal += Calculate(item, expression);
- }
- }
- return retVal;
- }
}
diff --git a/EPPlus/FormulaParsing/Excel/Functions/Math/CountA.cs b/EPPlus/FormulaParsing/Excel/Functions/Math/CountA.cs
index 3e7fd3c..a9e3b52 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/Math/CountA.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/Math/CountA.cs
@@ -51,8 +51,8 @@
nItems++;
}
}
- } else if (item.Value is IEnumerable<FunctionArgument>) {
- Calculate((IEnumerable<FunctionArgument>)item.Value, context, ref nItems);
+ } else if (item.Value is IEnumerable<FunctionArgument> value) {
+ Calculate(value, context, ref nItems);
} else {
_CheckForAndHandleExcelError(item, context);
if (!ShouldIgnore(item) && ShouldCount(item.Value)) {
diff --git a/EPPlus/FormulaParsing/Excel/Functions/Math/CountIf.cs b/EPPlus/FormulaParsing/Excel/Functions/Math/CountIf.cs
index e5e7f14..277058c 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/Math/CountIf.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/Math/CountIf.cs
@@ -50,8 +50,8 @@
result++;
}
}
- } else if (range.Value is IEnumerable<FunctionArgument>) {
- foreach (var arg in (IEnumerable<FunctionArgument>)range.Value) {
+ } else if (range.Value is IEnumerable<FunctionArgument> value) {
+ foreach (var arg in value) {
if (Evaluate(arg.Value, criteria)) {
result++;
}
diff --git a/EPPlus/FormulaParsing/Excel/Functions/Math/Rank.cs b/EPPlus/FormulaParsing/Excel/Functions/Math/Rank.cs
deleted file mode 100644
index ae71b2c..0000000
--- a/EPPlus/FormulaParsing/Excel/Functions/Math/Rank.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using OfficeOpenXml.FormulaParsing.ExpressionGraph;
-
-namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math {
- public class Rank : ExcelFunction {
- bool _isAvg;
-
- public Rank(bool isAvg = false) {
- _isAvg = isAvg;
- }
-
- public override CompileResult Execute(
- IEnumerable<FunctionArgument> arguments,
- ParsingContext context) {
- ValidateArguments(arguments, 2);
- var number = ArgToDecimal(arguments, 0);
- var refer = arguments.ElementAt(1);
- bool asc = false;
- if (arguments.Count() > 2) {
- asc = base.ArgToBool(arguments, 2);
- }
- var l = new List<double>();
-
- foreach (var c in refer.ValueAsRangeInfo) {
- var v = Utils.ConvertUtil.GetValueDouble(c.Value, false, true);
- if (!double.IsNaN(v)) {
- l.Add(v);
- }
- }
- l.Sort();
- double ix;
- if (asc) {
- ix = l.IndexOf(number) + 1;
- if (_isAvg) {
- int st = Convert.ToInt32(ix);
- while (l.Count > st && l[st] == number) {
- st++;
- }
- if (st > ix) {
- ix = ix + ((st - ix) / 2D);
- }
- }
- } else {
- ix = l.LastIndexOf(number);
- if (_isAvg) {
- int st = Convert.ToInt32(ix) - 1;
- while (0 <= st && l[st] == number) {
- st--;
- }
- if (st + 1 < ix) {
- ix = ix - ((ix - st - 1) / 2D);
- }
- }
- ix = l.Count - ix;
- }
- if (ix <= 0 || ix > l.Count) {
- return new CompileResult(ExcelErrorValue.Create(eErrorType.NA), DataType.ExcelError);
- } else {
- return CreateResult(ix, DataType.Decimal);
- }
- }
- }
-}
diff --git a/EPPlus/FormulaParsing/Excel/Functions/Math/Sum.cs b/EPPlus/FormulaParsing/Excel/Functions/Math/Sum.cs
index 5d3550e..b9b6850 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/Math/Sum.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/Math/Sum.cs
@@ -47,12 +47,12 @@
if (ShouldIgnore(arg)) {
return retVal;
}
- if (arg.Value is IEnumerable<FunctionArgument>) {
- foreach (var item in (IEnumerable<FunctionArgument>)arg.Value) {
+ if (arg.Value is IEnumerable<FunctionArgument> value) {
+ foreach (var item in value) {
retVal += Calculate(item, context);
}
- } else if (arg.Value is ExcelDataProvider.IRangeInfo) {
- foreach (var c in (ExcelDataProvider.IRangeInfo)arg.Value) {
+ } else if (arg.Value is ExcelDataProvider.IRangeInfo info) {
+ foreach (var c in info) {
if (ShouldIgnore(c, context) == false) {
CheckForAndHandleExcelError(c);
retVal += c.ValueDouble;
diff --git a/EPPlus/FormulaParsing/Excel/Functions/Math/SumIf.cs b/EPPlus/FormulaParsing/Excel/Functions/Math/SumIf.cs
index 1750c4e..232d460 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/Math/SumIf.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/Math/SumIf.cs
@@ -71,23 +71,6 @@
}
private double CalculateWithSumRange(
- IEnumerable<FunctionArgument> range,
- string criteria,
- IEnumerable<FunctionArgument> sumRange,
- ParsingContext context) {
- var retVal = 0d;
- var flattenedRange = ArgsToDoubleEnumerable(range, context);
- var flattenedSumRange = ArgsToDoubleEnumerable(sumRange, context);
- for (var x = 0; x < flattenedRange.Count(); x++) {
- var candidate = flattenedSumRange.ElementAt(x);
- if (_evaluator.Evaluate(flattenedRange.ElementAt(x), criteria)) {
- retVal += candidate;
- }
- }
- return retVal;
- }
-
- private double CalculateWithSumRange(
ExcelDataProvider.IRangeInfo range,
string criteria,
ExcelDataProvider.IRangeInfo sumRange,
@@ -100,8 +83,8 @@
if (sumRange.Address._fromRow + or <= sumRange.Address._toRow
&& sumRange.Address._fromCol + oc <= sumRange.Address._toCol) {
var v = sumRange.GetOffset(or, oc);
- if (v is ExcelErrorValue) {
- throw (new ExcelErrorValueException((ExcelErrorValue)v));
+ if (v is ExcelErrorValue value) {
+ throw (new ExcelErrorValueException(value));
}
retVal += Util.ConvertUtil.GetValueDouble(v, true);
}
diff --git a/EPPlus/FormulaParsing/Excel/Functions/Math/SumProduct.cs b/EPPlus/FormulaParsing/Excel/Functions/Math/SumProduct.cs
index 6985eb7..0ee2d19 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/Math/SumProduct.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/Math/SumProduct.cs
@@ -41,8 +41,8 @@
foreach (var arg in arguments) {
results.Add(new());
var currentResult = results.Last();
- if (arg.Value is IEnumerable<FunctionArgument>) {
- foreach (var val in (IEnumerable<FunctionArgument>)arg.Value) {
+ if (arg.Value is IEnumerable<FunctionArgument> value) {
+ foreach (var val in value) {
AddValue(val.Value, currentResult);
}
} else if (arg.Value is FunctionArgument) {
@@ -77,8 +77,8 @@
private void AddValue(object convertVal, List<double> currentResult) {
if (IsNumeric(convertVal)) {
currentResult.Add(Convert.ToDouble(convertVal));
- } else if (convertVal is ExcelErrorValue) {
- throw (new ExcelErrorValueException((ExcelErrorValue)convertVal));
+ } else if (convertVal is ExcelErrorValue val) {
+ throw (new ExcelErrorValueException(val));
} else {
currentResult.Add(0d);
}
diff --git a/EPPlus/FormulaParsing/Excel/Functions/Math/Sumsq.cs b/EPPlus/FormulaParsing/Excel/Functions/Math/Sumsq.cs
index 9bb56d3..cb18398 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/Math/Sumsq.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/Math/Sumsq.cs
@@ -22,8 +22,8 @@
if (ShouldIgnore(arg)) {
return retVal;
}
- if (arg.Value is IEnumerable<FunctionArgument>) {
- foreach (var item in (IEnumerable<FunctionArgument>)arg.Value) {
+ if (arg.Value is IEnumerable<FunctionArgument> arguments) {
+ foreach (var item in arguments) {
retVal += Calculate(item, context, true);
}
} else {
diff --git a/EPPlus/FormulaParsing/Excel/Functions/ObjectEnumerableArgConverter.cs b/EPPlus/FormulaParsing/Excel/Functions/ObjectEnumerableArgConverter.cs
index 71c5252..6e56c59 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/ObjectEnumerableArgConverter.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/ObjectEnumerableArgConverter.cs
@@ -35,8 +35,8 @@
return base.FuncArgsToFlatEnumerable(
arguments,
(arg, argList) => {
- if (arg.Value is ExcelDataProvider.IRangeInfo) {
- foreach (var cell in (ExcelDataProvider.IRangeInfo)arg.Value) {
+ if (arg.Value is ExcelDataProvider.IRangeInfo info) {
+ foreach (var cell in info) {
if (!CellStateHelper.ShouldIgnore(ignoreHidden, cell, context)) {
argList.Add(cell.Value);
}
diff --git a/EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Address.cs b/EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Address.cs
index 3d75525..b0ce169 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Address.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Address.cs
@@ -48,7 +48,7 @@
}
if (arguments.Count() > 3) {
var fourthArg = arguments.ElementAt(3).Value;
- if (fourthArg is bool && !(bool)fourthArg) {
+ if (fourthArg is bool arg && !arg) {
throw new InvalidOperationException("Excelformulaparser does not support the R1C1 format!");
}
}
diff --git a/EPPlus/FormulaParsing/Excel/Functions/Text/Value.cs b/EPPlus/FormulaParsing/Excel/Functions/Text/Value.cs
index 3ad4fc8..2a05519 100644
--- a/EPPlus/FormulaParsing/Excel/Functions/Text/Value.cs
+++ b/EPPlus/FormulaParsing/Excel/Functions/Text/Value.cs
@@ -16,10 +16,6 @@
.NumberFormat
.NumberDecimalSeparator;
private readonly string _timeSeparator = CultureInfo.CurrentCulture.DateTimeFormat.TimeSeparator;
- private readonly string _shortTimePattern = CultureInfo
- .CurrentCulture
- .DateTimeFormat
- .ShortTimePattern;
private readonly DateValue _dateValueFunc = new();
private readonly TimeValue _timeValueFunc = new();
diff --git a/EPPlus/FormulaParsing/Excel/Operators/Operator.cs b/EPPlus/FormulaParsing/Excel/Operators/Operator.cs
index 9134b3c..e6d25e2 100644
--- a/EPPlus/FormulaParsing/Excel/Operators/Operator.cs
+++ b/EPPlus/FormulaParsing/Excel/Operators/Operator.cs
@@ -39,14 +39,10 @@
private const int _precedencePercent = 2;
private const int _precedenceExp = 4;
private const int _precedenceMultiplyDevide = 6;
- private const int _precedenceIntegerDivision = 8;
- private const int _precedenceModulus = 10;
private const int _precedenceAddSubtract = 12;
private const int _precedenceConcat = 15;
private const int _precedenceComparison = 25;
- private Operator() {}
-
private Operator(
Operators @operator,
int precedence,
@@ -62,9 +58,7 @@
int IOperator.Precedence => _precedence;
- Operators IOperator.Operator {
- get { return _operator; }
- }
+ Operators IOperator.Operator => _operator;
public CompileResult Apply(CompileResult left, CompileResult right) {
if (left.Result is ExcelErrorValue) {
@@ -93,8 +87,7 @@
(l, r) => {
l = l == null || l.Result == null ? new(0, DataType.Integer) : l;
r = r == null || r.Result == null ? new(0, DataType.Integer) : r;
- ExcelErrorValue errorVal;
- if (EitherIsError(l, r, out errorVal)) {
+ if (EitherIsError(l, r, out var errorVal)) {
return new(errorVal);
}
if (l.DataType == DataType.Integer && r.DataType == DataType.Integer) {
@@ -352,8 +345,7 @@
CompileResult l,
CompileResult r,
Func<int, bool> comparison) {
- ExcelErrorValue errorVal;
- if (EitherIsError(l, r, out errorVal)) {
+ if (EitherIsError(l, r, out var errorVal)) {
return new(errorVal);
}
object left,
diff --git a/EPPlus/FormulaParsing/ExcelCell.cs b/EPPlus/FormulaParsing/ExcelCell.cs
deleted file mode 100644
index aedd49c..0000000
--- a/EPPlus/FormulaParsing/ExcelCell.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-namespace OfficeOpenXml.FormulaParsing;
-
-public class ExcelCell {
- public ExcelCell(object val, string formula, int colIndex, int rowIndex) {
- Value = val;
- Formula = formula;
- ColIndex = colIndex;
- RowIndex = rowIndex;
- }
-
- public int ColIndex { get; private set; }
-
- public int RowIndex { get; private set; }
-
- public object Value { get; private set; }
-
- public string Formula { get; private set; }
-}
diff --git a/EPPlus/FormulaParsing/ExcelUtilities/ExpressionEvaluator.cs b/EPPlus/FormulaParsing/ExcelUtilities/ExpressionEvaluator.cs
index 53cf288..df05bb4 100644
--- a/EPPlus/FormulaParsing/ExcelUtilities/ExpressionEvaluator.cs
+++ b/EPPlus/FormulaParsing/ExcelUtilities/ExpressionEvaluator.cs
@@ -77,8 +77,8 @@
d = Convert.ToDouble(op);
return true;
}
- if (op is DateTime) {
- d = ((DateTime)op).ToOADate();
+ if (op is DateTime time) {
+ d = time.ToOADate();
return true;
}
if (op != null) {
@@ -96,8 +96,7 @@
}
var operatorCandidate = GetNonAlphanumericStartChars(expression);
if (!string.IsNullOrEmpty(operatorCandidate) && operatorCandidate != "-") {
- IOperator op;
- if (OperatorsDict.Instance.TryGetValue(operatorCandidate, out op)) {
+ if (OperatorsDict.Instance.TryGetValue(operatorCandidate, out var op)) {
var right = expression.Replace(operatorCandidate, string.Empty);
if (left == null && right == string.Empty) {
return op.Operator == Operators.Equals;
@@ -105,12 +104,9 @@
if (left == null ^ right == string.Empty) {
return op.Operator == Operators.NotEqualTo;
}
- double leftNum,
- rightNum;
- DateTime date;
- bool leftIsNumeric = TryConvertToDouble(left, out leftNum);
- bool rightIsNumeric = double.TryParse(right, out rightNum);
- bool rightIsDate = DateTime.TryParse(right, out date);
+ bool leftIsNumeric = TryConvertToDouble(left, out var leftNum);
+ bool rightIsNumeric = double.TryParse(right, out var rightNum);
+ bool rightIsDate = DateTime.TryParse(right, out var date);
if (leftIsNumeric && rightIsNumeric) {
return EvaluateOperator(leftNum, rightNum, op);
}
diff --git a/EPPlus/FormulaParsing/ExcelUtilities/NumericExpressionEvaluator.cs b/EPPlus/FormulaParsing/ExcelUtilities/NumericExpressionEvaluator.cs
index 6e326a7..174d595 100644
--- a/EPPlus/FormulaParsing/ExcelUtilities/NumericExpressionEvaluator.cs
+++ b/EPPlus/FormulaParsing/ExcelUtilities/NumericExpressionEvaluator.cs
@@ -67,8 +67,7 @@
return Convert.ToDouble(op);
}
if (op != null) {
- double output;
- if (double.TryParse(op.ToString(), out output)) {
+ if (double.TryParse(op.ToString(), out var output)) {
return output;
}
}
@@ -79,11 +78,9 @@
var operatorCandidate = GetNonNumericStartChars(expression);
var leftNum = OperandAsDouble(left);
if (!string.IsNullOrEmpty(operatorCandidate) && leftNum != null) {
- IOperator op;
- if (OperatorsDict.Instance.TryGetValue(operatorCandidate, out op)) {
+ if (OperatorsDict.Instance.TryGetValue(operatorCandidate, out var op)) {
var numericCandidate = expression.Replace(operatorCandidate, string.Empty);
- double d;
- if (double.TryParse(numericCandidate, out d)) {
+ if (double.TryParse(numericCandidate, out var d)) {
var leftResult = _compileResultFactory.Create(leftNum);
var rightResult = _compileResultFactory.Create(d);
var result = op.Apply(leftResult, rightResult);
diff --git a/EPPlus/FormulaParsing/ExcelUtilities/RangeAddressFactory.cs b/EPPlus/FormulaParsing/ExcelUtilities/RangeAddressFactory.cs
index a2ae075..2ff911b 100644
--- a/EPPlus/FormulaParsing/ExcelUtilities/RangeAddressFactory.cs
+++ b/EPPlus/FormulaParsing/ExcelUtilities/RangeAddressFactory.cs
@@ -35,7 +35,6 @@
public class RangeAddressFactory {
private readonly ExcelDataProvider _excelDataProvider;
- private readonly AddressTranslator _addressTranslator;
private readonly IndexToAddressTranslator _indexToAddressTranslator;
public RangeAddressFactory(ExcelDataProvider excelDataProvider)
@@ -52,7 +51,6 @@
Require.That(addressTranslator).Named("addressTranslator").IsNotNull();
Require.That(indexToAddressTranslator).Named("indexToAddressTranslator").IsNotNull();
_excelDataProvider = excelDataProvider;
- _addressTranslator = addressTranslator;
_indexToAddressTranslator = indexToAddressTranslator;
}
@@ -91,15 +89,6 @@
ToRow = (dim != null && adr._toRow > dim.Row) ? dim.Row : adr._toRow,
ToCol = adr._toCol,
};
-
- //if (addressInfo.IsMultipleCells)
- //{
- // HandleMultipleCellAddress(rangeAddress, addressInfo);
- //}
- //else
- //{
- // HandleSingleCellAddress(rangeAddress, addressInfo);
- //}
return rangeAddress;
}
@@ -115,42 +104,6 @@
ToRow = adr._toRow,
ToCol = adr._toCol,
};
-
- //if (addressInfo.IsMultipleCells)
- //{
- // HandleMultipleCellAddress(rangeAddress, addressInfo);
- //}
- //else
- //{
- // HandleSingleCellAddress(rangeAddress, addressInfo);
- //}
return rangeAddress;
}
-
- private void HandleSingleCellAddress(RangeAddress rangeAddress, ExcelAddressInfo addressInfo) {
- int col,
- row;
- _addressTranslator.ToColAndRow(addressInfo.StartCell, out col, out row);
- rangeAddress.FromCol = col;
- rangeAddress.ToCol = col;
- rangeAddress.FromRow = row;
- rangeAddress.ToRow = row;
- }
-
- private void HandleMultipleCellAddress(RangeAddress rangeAddress, ExcelAddressInfo addressInfo) {
- int fromCol,
- fromRow;
- _addressTranslator.ToColAndRow(addressInfo.StartCell, out fromCol, out fromRow);
- int toCol,
- toRow;
- _addressTranslator.ToColAndRow(
- addressInfo.EndCell,
- out toCol,
- out toRow,
- AddressTranslator.RangeCalculationBehaviour.LastPart);
- rangeAddress.FromCol = fromCol;
- rangeAddress.ToCol = toCol;
- rangeAddress.FromRow = fromRow;
- rangeAddress.ToRow = toRow;
- }
}
diff --git a/EPPlus/FormulaParsing/ExcelUtilities/ValueMatcher.cs b/EPPlus/FormulaParsing/ExcelUtilities/ValueMatcher.cs
index aeb4a47..0fb50ba 100644
--- a/EPPlus/FormulaParsing/ExcelUtilities/ValueMatcher.cs
+++ b/EPPlus/FormulaParsing/ExcelUtilities/ValueMatcher.cs
@@ -63,15 +63,13 @@
}
private static object CheckGetRange(object v) {
- if (v is ExcelDataProvider.IRangeInfo) {
- var r = ((ExcelDataProvider.IRangeInfo)v);
- if (r.GetNCells() > 1) {
+ if (v is ExcelDataProvider.IRangeInfo info) {
+ if (info.GetNCells() > 1) {
v = ExcelErrorValue.Create(eErrorType.Na);
}
- v = r.GetOffset(0, 0);
- } else if (v is ExcelDataProvider.INameInfo) {
- var n = ((ExcelDataProvider.INameInfo)v);
- v = CheckGetRange(n);
+ v = info.GetOffset(0, 0);
+ } else if (v is ExcelDataProvider.INameInfo nameInfo) {
+ v = CheckGetRange(nameInfo);
}
return v;
}
@@ -81,16 +79,14 @@
}
protected virtual int CompareStringToObject(string o1, object o2) {
- double d1;
- if (double.TryParse(o1, out d1)) {
+ if (double.TryParse(o1, out var d1)) {
return d1.CompareTo(Convert.ToDouble(o2));
}
return IncompatibleOperands;
}
protected virtual int CompareObjectToString(object o1, string o2) {
- double d2;
- if (double.TryParse(o2, out d2)) {
+ if (double.TryParse(o2, out var d2)) {
return Convert.ToDouble(o1).CompareTo(d2);
}
return IncompatibleOperands;
diff --git a/EPPlus/FormulaParsing/ExcelValues.cs b/EPPlus/FormulaParsing/ExcelValues.cs
index e4d860b..c15c606 100644
--- a/EPPlus/FormulaParsing/ExcelValues.cs
+++ b/EPPlus/FormulaParsing/ExcelValues.cs
@@ -198,9 +198,9 @@
}
public override bool Equals(object obj) {
- if (!(obj is ExcelErrorValue)) {
+ if (!(obj is ExcelErrorValue value)) {
return false;
}
- return ((ExcelErrorValue)obj).ToString() == ToString();
+ return value.ToString() == ToString();
}
}
diff --git a/EPPlus/FormulaParsing/Exceptions/ExcelErrorCodes.cs b/EPPlus/FormulaParsing/Exceptions/ExcelErrorCodes.cs
index f182e8a..9dc8ea4 100644
--- a/EPPlus/FormulaParsing/Exceptions/ExcelErrorCodes.cs
+++ b/EPPlus/FormulaParsing/Exceptions/ExcelErrorCodes.cs
@@ -46,8 +46,8 @@
}
public override bool Equals(object obj) {
- if (obj is ExcelErrorCodes) {
- return ((ExcelErrorCodes)obj).Code.Equals(Code);
+ if (obj is ExcelErrorCodes codes) {
+ return codes.Code.Equals(Code);
}
return false;
}
diff --git a/EPPlus/FormulaParsing/ExpressionGraph/CompileResult.cs b/EPPlus/FormulaParsing/ExpressionGraph/CompileResult.cs
index 9535d05..2545f6a 100644
--- a/EPPlus/FormulaParsing/ExpressionGraph/CompileResult.cs
+++ b/EPPlus/FormulaParsing/ExpressionGraph/CompileResult.cs
@@ -74,11 +74,11 @@
if (IsNumeric) {
return Result == null ? 0 : Convert.ToDouble(Result);
}
- if (Result is DateTime) {
- return ((DateTime)Result).ToOADate();
+ if (Result is DateTime time) {
+ return time.ToOADate();
}
- if (Result is TimeSpan) {
- return new DateTime(((TimeSpan)Result).Ticks).ToOADate();
+ if (Result is TimeSpan span) {
+ return new DateTime(span.Ticks).ToOADate();
}
if (IsNumericString) {
try {
@@ -87,8 +87,8 @@
return 0;
}
}
- if (Result is ExcelDataProvider.IRangeInfo) {
- var c = ((ExcelDataProvider.IRangeInfo)Result).FirstOrDefault();
+ if (Result is ExcelDataProvider.IRangeInfo info) {
+ var c = info.FirstOrDefault();
if (c == null) {
return 0;
}
@@ -100,15 +100,12 @@
public DataType DataType { get; private set; }
- public bool IsNumeric {
- get {
- return DataType == DataType.Decimal
- || DataType == DataType.Integer
- || DataType == DataType.Empty
- || DataType == DataType.Boolean
- || DataType == DataType.Date;
- }
- }
+ public bool IsNumeric =>
+ DataType == DataType.Decimal
+ || DataType == DataType.Integer
+ || DataType == DataType.Empty
+ || DataType == DataType.Boolean
+ || DataType == DataType.Date;
public bool IsNumericString {
get { return DataType == DataType.String && ConvertUtil.IsNumericString(Result); }
diff --git a/EPPlus/FormulaParsing/ExpressionGraph/CompileResultFactory.cs b/EPPlus/FormulaParsing/ExpressionGraph/CompileResultFactory.cs
index af6f09f..4434031 100644
--- a/EPPlus/FormulaParsing/ExpressionGraph/CompileResultFactory.cs
+++ b/EPPlus/FormulaParsing/ExpressionGraph/CompileResultFactory.cs
@@ -35,11 +35,11 @@
public class CompileResultFactory {
public virtual CompileResult Create(object obj) {
- if ((obj is ExcelDataProvider.INameInfo)) {
- obj = ((ExcelDataProvider.INameInfo)obj).Value;
+ if ((obj is ExcelDataProvider.INameInfo info)) {
+ obj = info.Value;
}
- if (obj is ExcelDataProvider.IRangeInfo) {
- obj = ((ExcelDataProvider.IRangeInfo)obj).GetOffset(0, 0);
+ if (obj is ExcelDataProvider.IRangeInfo rangeInfo) {
+ obj = rangeInfo.GetOffset(0, 0);
}
if (obj == null) {
return new(null, DataType.Empty);
diff --git a/EPPlus/FormulaParsing/ExpressionGraph/DecimalExpression.cs b/EPPlus/FormulaParsing/ExpressionGraph/DecimalExpression.cs
index 9c32645..9d82c5a 100644
--- a/EPPlus/FormulaParsing/ExpressionGraph/DecimalExpression.cs
+++ b/EPPlus/FormulaParsing/ExpressionGraph/DecimalExpression.cs
@@ -51,9 +51,7 @@
}
public override CompileResult Compile() {
- double result = _compiledValue.HasValue
- ? _compiledValue.Value
- : double.Parse(ExpressionString, CultureInfo.InvariantCulture);
+ double result = _compiledValue ?? double.Parse(ExpressionString, CultureInfo.InvariantCulture);
result = _negate ? result * -1 : result;
return new(result, DataType.Decimal);
}
diff --git a/EPPlus/FormulaParsing/ExpressionGraph/ExcelAddressExpression.cs b/EPPlus/FormulaParsing/ExpressionGraph/ExcelAddressExpression.cs
index 4f68d2c..8e409b7 100644
--- a/EPPlus/FormulaParsing/ExpressionGraph/ExcelAddressExpression.cs
+++ b/EPPlus/FormulaParsing/ExpressionGraph/ExcelAddressExpression.cs
@@ -107,7 +107,5 @@
return compileResult;
}
- public bool IsNegated {
- get { return _negate; }
- }
+ public bool IsNegated => _negate;
}
diff --git a/EPPlus/FormulaParsing/ExpressionGraph/ExpressionGraphBuilder.cs b/EPPlus/FormulaParsing/ExpressionGraph/ExpressionGraphBuilder.cs
index de2f384..156b425 100644
--- a/EPPlus/FormulaParsing/ExpressionGraph/ExpressionGraphBuilder.cs
+++ b/EPPlus/FormulaParsing/ExpressionGraph/ExpressionGraphBuilder.cs
@@ -65,9 +65,8 @@
private void BuildUp(Token[] tokens, Expression parent) {
while (_tokenIndex < tokens.Length) {
var token = tokens[_tokenIndex];
- IOperator op = null;
if (token.TokenType == TokenType.Operator
- && OperatorsDict.Instance.TryGetValue(token.Value, out op)) {
+ && OperatorsDict.Instance.TryGetValue(token.Value, out var op)) {
SetOperatorOnExpression(parent, op);
} else if (token.TokenType == TokenType.Function) {
BuildFunctionExpression(tokens, parent, token.Value);
diff --git a/EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/ErrorHandlingFunctionCompiler.cs b/EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/ErrorHandlingFunctionCompiler.cs
index 303821a..f93b6ce 100644
--- a/EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/ErrorHandlingFunctionCompiler.cs
+++ b/EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/ErrorHandlingFunctionCompiler.cs
@@ -45,7 +45,7 @@
foreach (var child in children) {
try {
var arg = child.Compile();
- BuildFunctionArguments(arg != null ? arg.Result : null, args);
+ BuildFunctionArguments(arg?.Result, args);
} catch (ExcelErrorValueException efe) {
return ((ErrorHandlingFunction)Function).HandleError(efe.ErrorValue.ToString());
} catch // (Exception e)
diff --git a/EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/FunctionCompiler.cs b/EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/FunctionCompiler.cs
index cb164b0..8be6020 100644
--- a/EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/FunctionCompiler.cs
+++ b/EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/FunctionCompiler.cs
@@ -44,9 +44,8 @@
}
protected void BuildFunctionArguments(object result, List<FunctionArgument> args) {
- if (result is IEnumerable<object> && !(result is ExcelDataProvider.IRangeInfo)) {
+ if (result is IEnumerable<object> objects && !(objects is ExcelDataProvider.IRangeInfo)) {
var argList = new List<FunctionArgument>();
- var objects = result as IEnumerable<object>;
foreach (var arg in objects) {
BuildFunctionArguments(arg, argList);
}
diff --git a/EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/IfFunctionCompiler.cs b/EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/IfFunctionCompiler.cs
index 0818ce5..15d262b 100644
--- a/EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/IfFunctionCompiler.cs
+++ b/EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/IfFunctionCompiler.cs
@@ -66,20 +66,19 @@
var v = firstChild.Compile().Result;
/**** Handle names and ranges ****/
- if (v is ExcelDataProvider.INameInfo) {
- v = ((ExcelDataProvider.INameInfo)v).Value;
+ if (v is ExcelDataProvider.INameInfo info) {
+ v = info.Value;
}
- if (v is ExcelDataProvider.IRangeInfo) {
- var r = ((ExcelDataProvider.IRangeInfo)v);
- if (r.GetNCells() > 1) {
+ if (v is ExcelDataProvider.IRangeInfo rangeInfo) {
+ if (rangeInfo.GetNCells() > 1) {
throw (new ArgumentException("Logical can't be more than one cell"));
}
- v = r.GetOffset(0, 0);
+ v = rangeInfo.GetOffset(0, 0);
}
bool boolVal;
- if (v is bool) {
- boolVal = (bool)v;
+ if (v is bool b) {
+ boolVal = b;
} else {
if (ConvertUtil.IsNumeric(v)) {
boolVal = ConvertUtil.GetValueDouble(v) != 0;
diff --git a/EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/LookupFunctionCompiler.cs b/EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/LookupFunctionCompiler.cs
index a350504..de672c1 100644
--- a/EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/LookupFunctionCompiler.cs
+++ b/EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/LookupFunctionCompiler.cs
@@ -49,7 +49,7 @@
firstChild = false;
}
var arg = child.Compile();
- BuildFunctionArguments(arg != null ? arg.Result : null, args);
+ BuildFunctionArguments(arg?.Result, args);
}
return Function.Execute(args, context);
}
diff --git a/EPPlus/FormulaParsing/ExpressionGraph/IntegerExpression.cs b/EPPlus/FormulaParsing/ExpressionGraph/IntegerExpression.cs
index 973b523..f24afa0 100644
--- a/EPPlus/FormulaParsing/ExpressionGraph/IntegerExpression.cs
+++ b/EPPlus/FormulaParsing/ExpressionGraph/IntegerExpression.cs
@@ -52,9 +52,7 @@
}
public override CompileResult Compile() {
- double result = _compiledValue.HasValue
- ? _compiledValue.Value
- : double.Parse(ExpressionString, CultureInfo.InvariantCulture);
+ double result = _compiledValue ?? double.Parse(ExpressionString, CultureInfo.InvariantCulture);
result = _negate ? result * -1 : result;
return new(result, DataType.Integer);
}
diff --git a/EPPlus/FormulaParsing/ExpressionGraph/NamedValueExpression.cs b/EPPlus/FormulaParsing/ExpressionGraph/NamedValueExpression.cs
index 080f8a0..cdf7582 100644
--- a/EPPlus/FormulaParsing/ExpressionGraph/NamedValueExpression.cs
+++ b/EPPlus/FormulaParsing/ExpressionGraph/NamedValueExpression.cs
@@ -53,10 +53,9 @@
if (name.Value == null) {
return null;
}
- if (name.Value is ExcelDataProvider.IRangeInfo) {
- var range = (ExcelDataProvider.IRangeInfo)name.Value;
+ if (name.Value is ExcelDataProvider.IRangeInfo range) {
if (range.IsMulti) {
- return new(name.Value, DataType.Enumerable);
+ return new(range, DataType.Enumerable);
}
if (range.IsEmpty) {
return null;
diff --git a/EPPlus/FormulaParsing/FormulaParser.cs b/EPPlus/FormulaParsing/FormulaParser.cs
index faa0536..06bd4a6 100644
--- a/EPPlus/FormulaParsing/FormulaParser.cs
+++ b/EPPlus/FormulaParsing/FormulaParser.cs
@@ -80,9 +80,8 @@
public ILexer Lexer => _lexer;
- public IEnumerable<string> FunctionNames {
- get { return _parsingContext.Configuration.FunctionRepository.FunctionNames; }
- }
+ public IEnumerable<string> FunctionNames =>
+ _parsingContext.Configuration.FunctionRepository.FunctionNames;
internal virtual object Parse(string formula, RangeAddress rangeAddress) {
using (var scope = _parsingContext.Scopes.NewScope(rangeAddress)) {
diff --git a/EPPlus/FormulaParsing/LexicalAnalysis/SourceCodeTokenizer.cs b/EPPlus/FormulaParsing/LexicalAnalysis/SourceCodeTokenizer.cs
index 01e9bf9..51f6f4b 100644
--- a/EPPlus/FormulaParsing/LexicalAnalysis/SourceCodeTokenizer.cs
+++ b/EPPlus/FormulaParsing/LexicalAnalysis/SourceCodeTokenizer.cs
@@ -71,8 +71,7 @@
bool isSingleQuoteString = false;
for (int i = 0; i < context.FormulaChars.Length; i++) {
var c = context.FormulaChars[i];
- Token tokenSeparator;
- if (CharIsTokenSeparator(c, out tokenSeparator)) {
+ if (CharIsTokenSeparator(c, out var tokenSeparator)) {
if (context.IsInString) {
if (IsDoubleQuote(tokenSeparator, i, context)) {
i++;
diff --git a/EPPlus/FormulaParsing/LexicalAnalysis/TokenFactory.cs b/EPPlus/FormulaParsing/LexicalAnalysis/TokenFactory.cs
index 96c87a3..6ba0d9b 100644
--- a/EPPlus/FormulaParsing/LexicalAnalysis/TokenFactory.cs
+++ b/EPPlus/FormulaParsing/LexicalAnalysis/TokenFactory.cs
@@ -64,8 +64,7 @@
}
public Token Create(IEnumerable<Token> tokens, string token, string worksheet) {
- Token tokenSeparator = null;
- if (_tokenSeparatorProvider.Tokens.TryGetValue(token, out tokenSeparator)) {
+ if (_tokenSeparatorProvider.Tokens.TryGetValue(token, out var tokenSeparator)) {
return tokenSeparator;
}
var tokenList = (IList<Token>)tokens;
diff --git a/EPPlus/FormulaParsing/LexicalAnalysis/TokenHandler.cs b/EPPlus/FormulaParsing/LexicalAnalysis/TokenHandler.cs
deleted file mode 100644
index 8c2a271..0000000
--- a/EPPlus/FormulaParsing/LexicalAnalysis/TokenHandler.cs
+++ /dev/null
@@ -1,132 +0,0 @@
-/*******************************************************************************
- * 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
- * ******************************************************************************
- * Mats Alm Added 2015-12-28
- *******************************************************************************/
-using System.Text.RegularExpressions;
-using OfficeOpenXml.FormulaParsing.LexicalAnalysis.TokenSeparatorHandlers;
-
-namespace OfficeOpenXml.FormulaParsing.LexicalAnalysis {
- public class TokenHandler : ITokenIndexProvider {
- public TokenHandler(
- TokenizerContext context,
- ITokenFactory tokenFactory,
- ITokenSeparatorProvider tokenProvider) {
- _context = context;
- _tokenFactory = tokenFactory;
- _tokenProvider = tokenProvider;
- }
-
- private readonly TokenizerContext _context;
- private readonly ITokenSeparatorProvider _tokenProvider;
- private readonly ITokenFactory _tokenFactory;
- private int _tokenIndex = -1;
-
- public string Worksheet { get; set; }
-
- public bool HasMore() {
- return _tokenIndex < (_context.FormulaChars.Length - 1);
- }
-
- public void Next() {
- _tokenIndex++;
- Handle();
- }
-
- private void Handle() {
- var c = _context.FormulaChars[_tokenIndex];
- Token tokenSeparator;
- if (CharIsTokenSeparator(c, out tokenSeparator)) {
- if (TokenSeparatorHandler.Handle(c, tokenSeparator, _context, this)) {
- return;
- }
-
- if (_context.CurrentTokenHasValue) {
- if (Regex.IsMatch(_context.CurrentToken, "^\"*$")) {
- _context.AddToken(_tokenFactory.Create(_context.CurrentToken, TokenType.StringContent));
- } else {
- _context.AddToken(CreateToken(_context, Worksheet));
- }
-
- //If the a next token is an opening parantheses and the previous token is interpeted as an address or name, then the currenct token is a function
- if (tokenSeparator.TokenType == TokenType.OpeningParenthesis
- && (_context.LastToken.TokenType == TokenType.ExcelAddress
- || _context.LastToken.TokenType == TokenType.NameValue)) {
- _context.LastToken.TokenType = TokenType.Function;
- }
- }
- if (tokenSeparator.Value == "-") {
- if (TokenIsNegator(_context)) {
- _context.AddToken(new Token("-", TokenType.Negator));
- return;
- }
- }
- _context.AddToken(tokenSeparator);
- _context.NewToken();
- return;
- }
- _context.AppendToCurrentToken(c);
- }
-
- private bool CharIsTokenSeparator(char c, out Token token) {
- var result = _tokenProvider.Tokens.ContainsKey(c.ToString());
- token = result ? token = _tokenProvider.Tokens[c.ToString()] : null;
- return result;
- }
-
- private static bool TokenIsNegator(TokenizerContext context) {
- return TokenIsNegator(context.LastToken);
- }
-
- private static bool TokenIsNegator(Token t) {
- return t == null
- || t.TokenType == TokenType.Operator
- || t.TokenType == TokenType.OpeningParenthesis
- || t.TokenType == TokenType.Comma
- || t.TokenType == TokenType.SemiColon
- || t.TokenType == TokenType.OpeningEnumerable;
- }
-
- private Token CreateToken(TokenizerContext context, string worksheet) {
- if (context.CurrentToken == "-") {
- if (context.LastToken == null && context.LastToken.TokenType == TokenType.Operator) {
- return new Token("-", TokenType.Negator);
- }
- }
- return _tokenFactory.Create(context.Result, context.CurrentToken, worksheet);
- }
-
- int ITokenIndexProvider.Index {
- get { return _tokenIndex; }
- }
-
- void ITokenIndexProvider.MoveIndexPointerForward() {
- _tokenIndex++;
- }
- }
-}
diff --git a/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/BracketHandler.cs b/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/BracketHandler.cs
deleted file mode 100644
index ea4236a..0000000
--- a/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/BracketHandler.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * 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
- * ******************************************************************************
- * Mats Alm Added 2015-12-28
- *******************************************************************************/
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace OfficeOpenXml.FormulaParsing.LexicalAnalysis.TokenSeparatorHandlers {
- public class BracketHandler : SeparatorHandler {
- public override bool Handle(
- char c,
- Token tokenSeparator,
- TokenizerContext context,
- ITokenIndexProvider tokenIndexProvider) {
- if (tokenSeparator.TokenType == TokenType.OpeningBracket) {
- context.AppendToCurrentToken(c);
- context.BracketCount++;
- return true;
- }
- if (tokenSeparator.TokenType == TokenType.ClosingBracket) {
- context.AppendToCurrentToken(c);
- context.BracketCount--;
- return true;
- }
- if (context.BracketCount > 0) {
- context.AppendToCurrentToken(c);
- return true;
- }
- return false;
- }
- }
-}
diff --git a/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/MultipleCharSeparatorHandler.cs b/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/MultipleCharSeparatorHandler.cs
deleted file mode 100644
index dc02369..0000000
--- a/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/MultipleCharSeparatorHandler.cs
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * 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
- * ******************************************************************************
- * Mats Alm Added 2015-12-28
- *******************************************************************************/
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Linq;
-using System.Text;
-
-namespace OfficeOpenXml.FormulaParsing.LexicalAnalysis.TokenSeparatorHandlers {
- public class MultipleCharSeparatorHandler : SeparatorHandler {
- ITokenSeparatorProvider _tokenSeparatorProvider;
-
- public MultipleCharSeparatorHandler()
- : this(new TokenSeparatorProvider()) {}
-
- public MultipleCharSeparatorHandler(ITokenSeparatorProvider tokenSeparatorProvider) {
- _tokenSeparatorProvider = tokenSeparatorProvider;
- }
-
- public override bool Handle(
- char c,
- Token tokenSeparator,
- TokenizerContext context,
- ITokenIndexProvider tokenIndexProvider) {
- // two operators in sequence could be "<=" or ">="
- if (IsPartOfMultipleCharSeparator(context, c)) {
- var sOp = context.LastToken.Value + c.ToString(CultureInfo.InvariantCulture);
- var op = _tokenSeparatorProvider.Tokens[sOp];
- context.ReplaceLastToken(op);
- context.NewToken();
- return true;
- }
- return false;
- }
-
- private bool IsPartOfMultipleCharSeparator(TokenizerContext context, char c) {
- var lastToken = context.LastToken != null ? context.LastToken.Value : string.Empty;
- return _tokenSeparatorProvider.IsOperator(lastToken)
- && _tokenSeparatorProvider.IsPossibleLastPartOfMultipleCharOperator(
- c.ToString(CultureInfo.InvariantCulture))
- && !context.CurrentTokenHasValue;
- }
- }
-}
diff --git a/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/SeparatorHandler.cs b/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/SeparatorHandler.cs
deleted file mode 100644
index 702a12d..0000000
--- a/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/SeparatorHandler.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * 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
- * ******************************************************************************
- * Mats Alm Added 2015-12-28
- *******************************************************************************/
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace OfficeOpenXml.FormulaParsing.LexicalAnalysis.TokenSeparatorHandlers {
- public abstract class SeparatorHandler {
- protected bool IsDoubleQuote(
- Token tokenSeparator,
- int formulaCharIndex,
- TokenizerContext context) {
- return tokenSeparator.TokenType == TokenType.String
- && formulaCharIndex + 1 < context.FormulaChars.Length
- && context.FormulaChars[formulaCharIndex + 1] == '\"';
- }
-
- public abstract bool Handle(
- char c,
- Token tokenSeparator,
- TokenizerContext context,
- ITokenIndexProvider tokenIndexProvider);
- }
-}
diff --git a/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/SheetnameHandler.cs b/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/SheetnameHandler.cs
deleted file mode 100644
index f435fb3..0000000
--- a/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/SheetnameHandler.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * 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
- * ******************************************************************************
- * Mats Alm Added 2015-12-28
- *******************************************************************************/
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace OfficeOpenXml.FormulaParsing.LexicalAnalysis.TokenSeparatorHandlers {
- public class SheetnameHandler : SeparatorHandler {
- public override bool Handle(
- char c,
- Token tokenSeparator,
- TokenizerContext context,
- ITokenIndexProvider tokenIndexProvider) {
- if (context.IsInSheetName) {
- if (IsDoubleQuote(tokenSeparator, tokenIndexProvider.Index, context)) {
- tokenIndexProvider.MoveIndexPointerForward();
- context.AppendToCurrentToken(c);
- return true;
- }
- if (tokenSeparator.TokenType != TokenType.WorksheetName) {
- context.AppendToCurrentToken(c);
- return true;
- }
- }
-
- if (tokenSeparator.TokenType == TokenType.WorksheetName) {
- if (context.LastToken != null && context.LastToken.TokenType == TokenType.WorksheetName) {
- context.AddToken(
- !context.CurrentTokenHasValue
- ? new Token(string.Empty, TokenType.WorksheetNameContent)
- : new Token(context.CurrentToken, TokenType.WorksheetNameContent));
- }
- context.AddToken(new Token("'", TokenType.WorksheetName));
- context.ToggleIsInSheetName();
- context.NewToken();
- return true;
- }
- return false;
- }
- }
-}
diff --git a/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/StringHandler.cs b/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/StringHandler.cs
deleted file mode 100644
index 2ef629c..0000000
--- a/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/StringHandler.cs
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * 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
- * ******************************************************************************
- * Mats Alm Added 2015-12-28
- *******************************************************************************/
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace OfficeOpenXml.FormulaParsing.LexicalAnalysis.TokenSeparatorHandlers {
- public class StringHandler : SeparatorHandler {
- public override bool Handle(
- char c,
- Token tokenSeparator,
- TokenizerContext context,
- ITokenIndexProvider tokenIndexProvider) {
- if (context.IsInString) {
- if (IsDoubleQuote(tokenSeparator, tokenIndexProvider.Index, context)) {
- tokenIndexProvider.MoveIndexPointerForward();
- context.AppendToCurrentToken(c);
- return true;
- }
- if (tokenSeparator.TokenType != TokenType.String) {
- context.AppendToCurrentToken(c);
- return true;
- }
- }
-
- if (tokenSeparator.TokenType == TokenType.String) {
- if (context.LastToken != null
- && context.LastToken.TokenType == TokenType.OpeningEnumerable) {
- context.AppendToCurrentToken(c);
- context.ToggleIsInString();
- return true;
- }
- if (context.LastToken != null && context.LastToken.TokenType == TokenType.String) {
- context.AddToken(
- !context.CurrentTokenHasValue
- ? new Token(string.Empty, TokenType.StringContent)
- : new Token(context.CurrentToken, TokenType.StringContent));
- }
- context.AddToken(new Token("\"", TokenType.String));
- context.ToggleIsInString();
- context.NewToken();
- return true;
- }
- return false;
- }
- }
-}
diff --git a/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/TokenSeparatorHandler.cs b/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/TokenSeparatorHandler.cs
deleted file mode 100644
index 8afb997..0000000
--- a/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/TokenSeparatorHandler.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * 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
- * ******************************************************************************
- * Mats Alm Added 2015-12-28
- *******************************************************************************/
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace OfficeOpenXml.FormulaParsing.LexicalAnalysis.TokenSeparatorHandlers {
- /// <summary>
- /// This class provides access to <see cref="SeparatorHandler"/>s - classes that exposes functionatlity
- /// needed when parsing strings to tokens.
- /// </summary>
- public static class TokenSeparatorHandler {
- private static SeparatorHandler[] _handlers = new SeparatorHandler[] {
- new StringHandler(),
- new BracketHandler(),
- new SheetnameHandler(),
- new MultipleCharSeparatorHandler(),
- };
-
- /// <summary>
- /// Handles a tokenseparator.
- /// </summary>
- /// <param name="c"></param>
- /// <param name="tokenSeparator"></param>
- /// <param name="context"></param>
- /// <param name="tokenIndexProvider"></param>
- /// <returns>Returns true if the tokenseparator was handled.</returns>
- public static bool Handle(
- char c,
- Token tokenSeparator,
- TokenizerContext context,
- ITokenIndexProvider tokenIndexProvider) {
- foreach (var handler in _handlers) {
- if (handler.Handle(c, tokenSeparator, context, tokenIndexProvider)) {
- return true;
- }
- }
- return false;
- }
- }
-}
diff --git a/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorProvider.cs b/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorProvider.cs
index cddd2f3..337f2a2 100644
--- a/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorProvider.cs
+++ b/EPPlus/FormulaParsing/LexicalAnalysis/TokenSeparatorProvider.cs
@@ -66,8 +66,7 @@
IDictionary<string, Token> ITokenSeparatorProvider.Tokens => _tokens;
public bool IsOperator(string item) {
- Token token;
- if (_tokens.TryGetValue(item, out token)) {
+ if (_tokens.TryGetValue(item, out var token)) {
if (token.TokenType == TokenType.Operator) {
return true;
}
diff --git a/EPPlus/FormulaParsing/LexicalAnalysis/TokenizerContext.cs b/EPPlus/FormulaParsing/LexicalAnalysis/TokenizerContext.cs
index 34fc6f2..ef9c31a 100644
--- a/EPPlus/FormulaParsing/LexicalAnalysis/TokenizerContext.cs
+++ b/EPPlus/FormulaParsing/LexicalAnalysis/TokenizerContext.cs
@@ -1,4 +1,4 @@
-/*******************************************************************************
+/*******************************************************************************
* You may amend and distribute as you like, but don't remove this header!
*
* EPPlus provides server-side generation of Excel 2007/2010 spreadsheets.
@@ -50,9 +50,7 @@
public char[] FormulaChars => _chars;
- public IList<Token> Result {
- get { return _result; }
- }
+ public IList<Token> Result => _result;
public bool IsInString { get; private set; }
@@ -62,13 +60,10 @@
internal int BracketCount { get; set; }
- public string CurrentToken {
- get { return _currentToken.ToString(); }
- }
+ public string CurrentToken => _currentToken.ToString();
- public bool CurrentTokenHasValue {
- get { return !string.IsNullOrEmpty(IsInString ? CurrentToken : CurrentToken.Trim()); }
- }
+ public bool CurrentTokenHasValue =>
+ !string.IsNullOrEmpty(IsInString ? CurrentToken : CurrentToken.Trim());
public void NewToken() {
_currentToken = new();
@@ -98,7 +93,5 @@
_result.Add(newToken);
}
- public Token LastToken {
- get { return _result.Count > 0 ? _result.Last() : null; }
- }
+ public Token LastToken => _result.Count > 0 ? _result.Last() : null;
}
diff --git a/EPPlus/OfficeProperties.cs b/EPPlus/OfficeProperties.cs
index d18b047..1b0a6be 100644
--- a/EPPlus/OfficeProperties.cs
+++ b/EPPlus/OfficeProperties.cs
@@ -204,12 +204,10 @@
/// Gets/sets the created property of the document (core property)
/// </summary>
public DateTime Created {
- get {
- DateTime date;
- return DateTime.TryParse(_coreHelper.GetXmlNodeString(_createdPath), out date)
+ get =>
+ DateTime.TryParse(_coreHelper.GetXmlNodeString(_createdPath), out var date)
? date
: DateTime.MinValue;
- }
set {
var dateString = value.ToUniversalTime().ToString("s", CultureInfo.InvariantCulture) + "Z";
_coreHelper.SetXmlNodeString(_createdPath, dateString);
@@ -312,12 +310,10 @@
/// Gets/sets the modified property of the document (core property)
/// </summary>
public DateTime Modified {
- get {
- DateTime date;
- return DateTime.TryParse(_coreHelper.GetXmlNodeString(_modifiedPath), out date)
+ get =>
+ DateTime.TryParse(_coreHelper.GetXmlNodeString(_modifiedPath), out var date)
? date
: DateTime.MinValue;
- }
set {
var dateString = value.ToUniversalTime().ToString("s", CultureInfo.InvariantCulture) + "Z";
_coreHelper.SetXmlNodeString(_modifiedPath, dateString);
@@ -325,16 +321,6 @@
}
}
- private string GetExtendedPropertyValue(string propertyName) {
- string retValue = null;
- string searchString = string.Format("xp:Properties/xp:{0}", propertyName);
- XmlNode node = ExtendedPropertiesXml.SelectSingleNode(searchString, NameSpaceManager);
- if (node != null) {
- retValue = node.InnerText;
- }
- return retValue;
- }
-
/// <summary>
/// Provides access to the XML document which holds the document's custom properties
/// </summary>
@@ -367,20 +353,17 @@
string value = node.LastChild.InnerText;
switch (node.LastChild.LocalName) {
case "filetime":
- DateTime dt;
- if (DateTime.TryParse(value, out dt)) {
+ if (DateTime.TryParse(value, out var dt)) {
return dt;
}
return null;
case "i4":
- int i;
- if (int.TryParse(value, out i)) {
+ if (int.TryParse(value, out var i)) {
return i;
}
return null;
case "r8":
- double d;
- if (double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out d)) {
+ if (double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out var d)) {
return d;
}
return null;
@@ -437,20 +420,20 @@
if (value is bool) {
valueElem = CustomPropertiesXml.CreateElement("vt", "bool", ExcelPackage._schemaVt);
valueElem.InnerText = value.ToString().ToLower(CultureInfo.InvariantCulture);
- } else if (value is DateTime) {
+ } else if (value is DateTime time) {
valueElem = CustomPropertiesXml.CreateElement("vt", "filetime", ExcelPackage._schemaVt);
- valueElem.InnerText = ((DateTime)value).AddHours(-1).ToString("yyyy-MM-ddTHH:mm:ssZ");
+ valueElem.InnerText = time.AddHours(-1).ToString("yyyy-MM-ddTHH:mm:ssZ");
} else if (value is short || value is int) {
valueElem = CustomPropertiesXml.CreateElement("vt", "i4", ExcelPackage._schemaVt);
valueElem.InnerText = value.ToString();
} else if (value is double || value is decimal || value is float || value is long) {
valueElem = CustomPropertiesXml.CreateElement("vt", "r8", ExcelPackage._schemaVt);
- if (value is double) {
- valueElem.InnerText = ((double)value).ToString(CultureInfo.InvariantCulture);
- } else if (value is float) {
- valueElem.InnerText = ((float)value).ToString(CultureInfo.InvariantCulture);
- } else if (value is decimal) {
- valueElem.InnerText = ((decimal)value).ToString(CultureInfo.InvariantCulture);
+ if (value is double d) {
+ valueElem.InnerText = d.ToString(CultureInfo.InvariantCulture);
+ } else if (value is float f) {
+ valueElem.InnerText = f.ToString(CultureInfo.InvariantCulture);
+ } else if (value is decimal value1) {
+ valueElem.InnerText = value1.ToString(CultureInfo.InvariantCulture);
} else {
valueElem.InnerText = value.ToString();
}
diff --git a/EPPlus/OpenOfficeXml.snk b/EPPlus/OpenOfficeXml.snk
deleted file mode 100644
index a8067be..0000000
--- a/EPPlus/OpenOfficeXml.snk
+++ /dev/null
Binary files differ
diff --git a/EPPlus/Packaging/ZipPackageRelationshipBase.cs b/EPPlus/Packaging/ZipPackageRelationshipBase.cs
index 6c0411f..882358e 100644
--- a/EPPlus/Packaging/ZipPackageRelationshipBase.cs
+++ b/EPPlus/Packaging/ZipPackageRelationshipBase.cs
@@ -46,8 +46,7 @@
protected void UpdateMaxRId(string id, ref int maxRId) {
if (id.StartsWith("rId")) {
- int num;
- if (int.TryParse(id.Substring(3), out num)) {
+ if (int.TryParse(id.Substring(3), out var num)) {
if (num == maxRId - 1) {
maxRId--;
}
@@ -108,8 +107,7 @@
rel.SourceUri = new(source, UriKind.Relative);
}
if (rel.Id.StartsWith("rid", StringComparison.InvariantCultureIgnoreCase)) {
- int id;
- if (int.TryParse(rel.Id.Substring(3), out id)) {
+ if (int.TryParse(rel.Id.Substring(3), out var id)) {
if (id >= maxRId
&& id
< int.MaxValue
diff --git a/EPPlus/Packaging/ZipPackageRelationshipCollection.cs b/EPPlus/Packaging/ZipPackageRelationshipCollection.cs
index dab1030..f828f61 100644
--- a/EPPlus/Packaging/ZipPackageRelationshipCollection.cs
+++ b/EPPlus/Packaging/ZipPackageRelationshipCollection.cs
@@ -91,7 +91,5 @@
writer.Write("</Relationships>");
}
- public int Count {
- get { return _rels.Count; }
- }
+ public int Count => _rels.Count;
}
diff --git a/EPPlus/Properties/AssemblyInfo.cs b/EPPlus/Properties/AssemblyInfo.cs
deleted file mode 100644
index 2fc9137..0000000
--- a/EPPlus/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * 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
- *******************************************************************************
- * Jan Källman Added 10-SEP-2009
- * Jan Källman License changed GPL-->LGPL 2011-12-27
- *******************************************************************************/
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Security;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("EPPlus 4.0.4")]
-[assembly: AssemblyDescription(
- "Allows Excel files(xlsx;xlsm) to be created on the server. See epplus.codeplex.com")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("EPPlus")]
-[assembly: AssemblyProduct("EPPlus 4.0.4")]
-[assembly: AssemblyCopyright(
- "Copyright 2009- ©Jan Källman. Parts of the Interface comes from ExcelPackage-project")]
-[assembly: AssemblyTrademark("The GNU Lesser General Public License (LGPL)")]
-[assembly: AssemblyCulture("")]
-[assembly: ComVisible(false)]
-[assembly: InternalsVisibleTo(
- "EPPlusTest, PublicKey=00240000048000009400000006020000002400005253413100040000010001001dd11308ec93a6ebcec727e183a8972dc6f95c23ecc34aa04f40cbfc9c17b08b4a0ea5c00dcd203bace44d15a30ce8796e38176ae88e960ceff9cc439ab938738ba0e603e3d155fc298799b391c004fc0eb4393dd254ce25db341eb43303e4c488c9500e126f1288594f0710ec7d642e9c72e76dd860649f1c48249c00e31fba")]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("9dd43b8d-c4fe-4a8b-ad6e-47ef83bbbb01")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Revision and Build Numbers
-// by using the '*' as shown below:
-[assembly: AssemblyVersion("4.0.4.0")]
-[assembly: AssemblyFileVersion("4.0.4.0")]
-[assembly: AllowPartiallyTrustedCallers]
diff --git a/EPPlus/RangeCollection.cs b/EPPlus/RangeCollection.cs
index 90fbfb9..5dfb567 100644
--- a/EPPlus/RangeCollection.cs
+++ b/EPPlus/RangeCollection.cs
@@ -101,9 +101,7 @@
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
- internal IRangeId this[int index] {
- get { return _cells[_cellIndex[index].ListPointer]; }
- }
+ internal IRangeId this[int index] => _cells[_cellIndex[index].ListPointer];
internal int Count {
get { return _cells.Count; }
diff --git a/EPPlus/Style/ExcelParagraphCollection.cs b/EPPlus/Style/ExcelParagraphCollection.cs
index 784c4cc..a74fe57 100644
--- a/EPPlus/Style/ExcelParagraphCollection.cs
+++ b/EPPlus/Style/ExcelParagraphCollection.cs
@@ -71,8 +71,8 @@
/// <returns></returns>
public ExcelParagraph Add(string text) {
XmlDocument doc;
- if (TopNode is XmlDocument) {
- doc = TopNode as XmlDocument;
+ if (TopNode is XmlDocument document) {
+ doc = document;
} else {
doc = TopNode.OwnerDocument;
}
diff --git a/EPPlus/Style/ExcelRichTextCollection.cs b/EPPlus/Style/ExcelRichTextCollection.cs
index 0f4e29d..5e87c4b 100644
--- a/EPPlus/Style/ExcelRichTextCollection.cs
+++ b/EPPlus/Style/ExcelRichTextCollection.cs
@@ -90,8 +90,8 @@
public ExcelRichText Add(string text) {
ConvertRichtext();
XmlDocument doc;
- if (TopNode is XmlDocument) {
- doc = TopNode as XmlDocument;
+ if (TopNode is XmlDocument document) {
+ doc = document;
} else {
doc = TopNode.OwnerDocument;
}
@@ -161,9 +161,8 @@
this[0].Size = fnt.Size;
this[0].UnderLine = fnt.UnderLine;
- int hex;
if (fnt.Color.Rgb != ""
- && int.TryParse(fnt.Color.Rgb, NumberStyles.HexNumber, null, out hex)) {
+ && int.TryParse(fnt.Color.Rgb, NumberStyles.HexNumber, null, out var hex)) {
this[0].Color = Color.FromArgb(hex);
}
}
diff --git a/EPPlus/Style/ExcelStyle.cs b/EPPlus/Style/ExcelStyle.cs
index f9ad943..9c2509a 100644
--- a/EPPlus/Style/ExcelStyle.cs
+++ b/EPPlus/Style/ExcelStyle.cs
@@ -190,8 +190,6 @@
new(eStyleClass.Style, eStyleProperty.Hidden, value, _positionID, _address));
}
- private const string _xfIdPath = "@xfId";
-
/// <summary>
/// The index in the style collection
/// </summary>
diff --git a/EPPlus/Style/XmlAccess/ExcelBorderXml.cs b/EPPlus/Style/XmlAccess/ExcelBorderXml.cs
index 9a7e12c..9d19974 100644
--- a/EPPlus/Style/XmlAccess/ExcelBorderXml.cs
+++ b/EPPlus/Style/XmlAccess/ExcelBorderXml.cs
@@ -62,8 +62,8 @@
/// Left border style properties
/// </summary>
public ExcelBorderItemXml Left {
- get { return _left; }
- internal set { _left = value; }
+ get => _left;
+ internal set => _left = value;
}
private const string _rightPath = "d:right";
@@ -73,8 +73,8 @@
/// Right border style properties
/// </summary>
public ExcelBorderItemXml Right {
- get { return _right; }
- internal set { _right = value; }
+ get => _right;
+ internal set => _right = value;
}
private const string _topPath = "d:top";
@@ -84,8 +84,8 @@
/// Top border style properties
/// </summary>
public ExcelBorderItemXml Top {
- get { return _top; }
- internal set { _top = value; }
+ get => _top;
+ internal set => _top = value;
}
private const string _bottomPath = "d:bottom";
@@ -95,8 +95,8 @@
/// Bottom border style properties
/// </summary>
public ExcelBorderItemXml Bottom {
- get { return _bottom; }
- internal set { _bottom = value; }
+ get => _bottom;
+ internal set => _bottom = value;
}
private const string _diagonalPath = "d:diagonal";
@@ -106,8 +106,8 @@
/// Diagonal border style properties
/// </summary>
public ExcelBorderItemXml Diagonal {
- get { return _diagonal; }
- internal set { _diagonal = value; }
+ get => _diagonal;
+ internal set => _diagonal = value;
}
private const string _diagonalUpPath = "@diagonalUp";
@@ -117,8 +117,8 @@
/// Diagonal up border
/// </summary>
public bool DiagonalUp {
- get { return _diagonalUp; }
- internal set { _diagonalUp = value; }
+ get => _diagonalUp;
+ internal set => _diagonalUp = value;
}
private const string _diagonalDownPath = "@diagonalDown";
@@ -128,8 +128,8 @@
/// Diagonal down border
/// </summary>
public bool DiagonalDown {
- get { return _diagonalDown; }
- internal set { _diagonalDown = value; }
+ get => _diagonalDown;
+ internal set => _diagonalDown = value;
}
internal ExcelBorderXml Copy() {
diff --git a/EPPlus/Style/XmlAccess/ExcelFontXml.cs b/EPPlus/Style/XmlAccess/ExcelFontXml.cs
index 11b6bb9..88ab554 100644
--- a/EPPlus/Style/XmlAccess/ExcelFontXml.cs
+++ b/EPPlus/Style/XmlAccess/ExcelFontXml.cs
@@ -106,7 +106,7 @@
/// The name of the font
/// </summary>
public string Name {
- get { return _name; }
+ get => _name;
set {
Scheme = ""; //Reset schema to avoid corrupt file if unsupported font is selected.
_name = value;
@@ -120,8 +120,8 @@
/// Font size
/// </summary>
public float Size {
- get { return _size; }
- set { _size = value; }
+ get => _size;
+ set => _size = value;
}
private const string _familyPath = "d:family/@val";
@@ -131,11 +131,8 @@
/// Font family
/// </summary>
public int Family {
- get {
- return (_family == int.MinValue ? 0 : _family);
- ;
- }
- set { _family = value; }
+ get => (_family == int.MinValue ? 0 : _family);
+ set => _family = value;
}
private ExcelColorXml _color;
@@ -145,8 +142,8 @@
/// Text color
/// </summary>
public ExcelColorXml Color {
- get { return _color; }
- internal set { _color = value; }
+ get => _color;
+ internal set => _color = value;
}
private const string _schemePath = "d:scheme/@val";
@@ -156,8 +153,8 @@
/// Font Scheme
/// </summary>
public string Scheme {
- get { return _scheme; }
- private set { _scheme = value; }
+ get => _scheme;
+ private set => _scheme = value;
}
private const string _boldPath = "d:b";
@@ -167,8 +164,8 @@
/// If the font is bold
/// </summary>
public bool Bold {
- get { return _bold; }
- set { _bold = value; }
+ get => _bold;
+ set => _bold = value;
}
private const string _italicPath = "d:i";
@@ -178,8 +175,8 @@
/// If the font is italic
/// </summary>
public bool Italic {
- get { return _italic; }
- set { _italic = value; }
+ get => _italic;
+ set => _italic = value;
}
private const string _strikePath = "d:strike";
@@ -189,8 +186,8 @@
/// If the font is striked out
/// </summary>
public bool Strike {
- get { return _strike; }
- set { _strike = value; }
+ get => _strike;
+ set => _strike = value;
}
private const string _underLinedPath = "d:u";
@@ -200,8 +197,8 @@
/// When set to true a the text is underlined with a single line
/// </summary>
public bool UnderLine {
- get { return UnderLineType != ExcelUnderLineType.None; }
- set { _underlineType = value ? ExcelUnderLineType.Single : ExcelUnderLineType.None; }
+ get => UnderLineType != ExcelUnderLineType.None;
+ set => _underlineType = value ? ExcelUnderLineType.Single : ExcelUnderLineType.None;
}
private ExcelUnderLineType _underlineType;
@@ -210,8 +207,8 @@
/// If the font is underlined
/// </summary>
public ExcelUnderLineType UnderLineType {
- get { return _underlineType; }
- set { _underlineType = value; }
+ get => _underlineType;
+ set => _underlineType = value;
}
private const string _verticalAlignPath = "d:vertAlign/@val";
@@ -221,8 +218,8 @@
/// Vertical aligned
/// </summary>
public string VerticalAlign {
- get { return _verticalAlign; }
- set { _verticalAlign = value; }
+ get => _verticalAlign;
+ set => _verticalAlign = value;
}
public void SetFromFont(Font font) {
diff --git a/EPPlus/Style/XmlAccess/ExcelNumberFormatXml.cs b/EPPlus/Style/XmlAccess/ExcelNumberFormatXml.cs
index 0d0b46f..6e5d10d 100644
--- a/EPPlus/Style/XmlAccess/ExcelNumberFormatXml.cs
+++ b/EPPlus/Style/XmlAccess/ExcelNumberFormatXml.cs
@@ -103,7 +103,6 @@
internal override string Id => _format;
- private const string _fmtPath = "@formatCode";
private string _format = string.Empty;
public string Format {
@@ -603,8 +602,7 @@
string[] fmt = FractionFormat.Split('/');
- int fixedDenominator;
- if (!int.TryParse(fmt[1], out fixedDenominator)) {
+ if (!int.TryParse(fmt[1], out var fixedDenominator)) {
fixedDenominator = 0;
}
diff --git a/EPPlus/Table/ExcelTable.cs b/EPPlus/Table/ExcelTable.cs
index 0b9144a..2438154 100644
--- a/EPPlus/Table/ExcelTable.cs
+++ b/EPPlus/Table/ExcelTable.cs
@@ -358,7 +358,6 @@
}
private const string _totalsrowcountPath = "@totalsRowCount";
- private const string _totalsrowshownPath = "@totalsRowShown";
/// <summary>
/// If the total row is visible or not
diff --git a/EPPlus/Table/PivotTable/ExcelPivotTable.cs b/EPPlus/Table/PivotTable/ExcelPivotTable.cs
index 75c6360..6ea4244 100644
--- a/EPPlus/Table/PivotTable/ExcelPivotTable.cs
+++ b/EPPlus/Table/PivotTable/ExcelPivotTable.cs
@@ -62,8 +62,7 @@
//Add row fields.
foreach (XmlElement rowElem in TopNode.SelectNodes("d:rowFields/d:field", NameSpaceManager)) {
- int x;
- if (int.TryParse(rowElem.GetAttribute("x"), out x) && x >= 0) {
+ if (int.TryParse(rowElem.GetAttribute("x"), out var x) && x >= 0) {
RowFields.AddInternal(Fields[x]);
} else {
rowElem.ParentNode.RemoveChild(rowElem);
@@ -72,8 +71,7 @@
////Add column fields.
foreach (XmlElement colElem in TopNode.SelectNodes("d:colFields/d:field", NameSpaceManager)) {
- int x;
- if (int.TryParse(colElem.GetAttribute("x"), out x) && x >= 0) {
+ if (int.TryParse(colElem.GetAttribute("x"), out var x) && x >= 0) {
ColumnFields.AddInternal(Fields[x]);
} else {
colElem.ParentNode.RemoveChild(colElem);
@@ -85,8 +83,7 @@
foreach (XmlElement pageElem in TopNode.SelectNodes(
"d:pageFields/d:pageField",
NameSpaceManager)) {
- int fld;
- if (int.TryParse(pageElem.GetAttribute("fld"), out fld) && fld >= 0) {
+ if (int.TryParse(pageElem.GetAttribute("fld"), out var fld) && fld >= 0) {
var field = Fields[fld];
field._pageFieldSettings = new(NameSpaceManager, pageElem, field, fld);
PageFields.AddInternal(field);
@@ -98,8 +95,7 @@
foreach (XmlElement dataElem in TopNode.SelectNodes(
"d:dataFields/d:dataField",
NameSpaceManager)) {
- int fld;
- if (int.TryParse(dataElem.GetAttribute("fld"), out fld) && fld >= 0) {
+ if (int.TryParse(dataElem.GetAttribute("fld"), out var fld) && fld >= 0) {
var field = Fields[fld];
var dataField = new ExcelPivotTableDataField(NameSpaceManager, dataElem, field);
DataFields.AddInternal(dataField);
diff --git a/EPPlus/Table/PivotTable/ExcelPivotTableField.cs b/EPPlus/Table/PivotTable/ExcelPivotTableField.cs
index 654ab71..9869a11 100644
--- a/EPPlus/Table/PivotTable/ExcelPivotTableField.cs
+++ b/EPPlus/Table/PivotTable/ExcelPivotTableField.cs
@@ -507,8 +507,7 @@
newElement;
foreach (XmlElement field in rowsNode.ChildNodes) {
string x = field.GetAttribute(indexAttrText);
- int fieldIndex;
- if (int.TryParse(x, out fieldIndex)) {
+ if (int.TryParse(x, out var fieldIndex)) {
if (fieldIndex
== index) //Row already exists
{
@@ -955,10 +954,9 @@
rowColFields = TopNode.SelectSingleNode("../../d:colFields", NameSpaceManager);
}
- int fieldIndex,
- index = 0;
+ var index = 0;
foreach (XmlElement rowfield in rowColFields.ChildNodes) {
- if (int.TryParse(rowfield.GetAttribute("x"), out fieldIndex)) {
+ if (int.TryParse(rowfield.GetAttribute("x"), out var fieldIndex)) {
if (_table.Fields[fieldIndex].BaseIndex == BaseIndex) {
var newElement = rowColFields.OwnerDocument.CreateElement(
"field",
diff --git a/EPPlus/Table/PivotTable/ExcelPivotTableFieldCollection.cs b/EPPlus/Table/PivotTable/ExcelPivotTableFieldCollection.cs
index e60e735..5f7053d 100644
--- a/EPPlus/Table/PivotTable/ExcelPivotTableFieldCollection.cs
+++ b/EPPlus/Table/PivotTable/ExcelPivotTableFieldCollection.cs
@@ -105,8 +105,7 @@
/// <returns>The matching field. If none is found null is returned</returns>
public ExcelPivotTableField GetDateGroupField(eDateGroupBy groupBy) {
foreach (var fld in _list) {
- if (fld.Grouping is ExcelPivotTableFieldDateGroup
- && (((ExcelPivotTableFieldDateGroup)fld.Grouping).GroupBy) == groupBy) {
+ if (fld.Grouping is ExcelPivotTableFieldDateGroup group && (group.GroupBy) == groupBy) {
return fld;
}
}
diff --git a/EPPlus/Table/PivotTable/ExcelPivotTableFieldGroup.cs b/EPPlus/Table/PivotTable/ExcelPivotTableFieldGroup.cs
index ea1f9d4..99fbd3c 100644
--- a/EPPlus/Table/PivotTable/ExcelPivotTableFieldGroup.cs
+++ b/EPPlus/Table/PivotTable/ExcelPivotTableFieldGroup.cs
@@ -91,29 +91,19 @@
/// <summary>
/// Start value
/// </summary>
- public double Start {
- get => (double)GetXmlNodeDoubleNull(_startPath);
- private set => SetXmlNodeString(_startPath, value.ToString(CultureInfo.InvariantCulture));
- }
+ public double Start => (double)GetXmlNodeDoubleNull(_startPath);
private const string _endPath = "d:fieldGroup/d:rangePr/@endNum";
/// <summary>
/// End value
/// </summary>
- public double End {
- get => (double)GetXmlNodeDoubleNull(_endPath);
- private set => SetXmlNodeString(_endPath, value.ToString(CultureInfo.InvariantCulture));
- }
+ public double End => (double)GetXmlNodeDoubleNull(_endPath);
private const string _groupIntervalPath = "d:fieldGroup/d:rangePr/@groupInterval";
/// <summary>
/// Interval
/// </summary>
- public double Interval {
- get => (double)GetXmlNodeDoubleNull(_groupIntervalPath);
- private set =>
- SetXmlNodeString(_groupIntervalPath, value.ToString(CultureInfo.InvariantCulture));
- }
+ public double Interval => (double)GetXmlNodeDoubleNull(_groupIntervalPath);
}
diff --git a/EPPlus/Utils/ConvertUtil.cs b/EPPlus/Utils/ConvertUtil.cs
index fddf785..2802caa 100644
--- a/EPPlus/Utils/ConvertUtil.cs
+++ b/EPPlus/Utils/ConvertUtil.cs
@@ -39,10 +39,10 @@
return 0;
}
if (IsNumeric(v)) {
- if (v is DateTime) {
- d = ((DateTime)v).ToOADate();
- } else if (v is TimeSpan) {
- d = DateTime.FromOADate(0).Add((TimeSpan)v).ToOADate();
+ if (v is DateTime time) {
+ d = time.ToOADate();
+ } else if (v is TimeSpan span) {
+ d = DateTime.FromOADate(0).Add(span).ToOADate();
} else {
d = Convert.ToDouble(v, CultureInfo.InvariantCulture);
}
diff --git a/EPPlus/XmlHelper.cs b/EPPlus/XmlHelper.cs
index 9455242..a958baf 100644
--- a/EPPlus/XmlHelper.cs
+++ b/EPPlus/XmlHelper.cs
@@ -442,8 +442,8 @@
foreach (string s in split) {
node = node.SelectSingleNode(s, NameSpaceManager);
if (node != null) {
- if (node is XmlAttribute) {
- (node as XmlAttribute).OwnerElement.Attributes.Remove(node as XmlAttribute);
+ if (node is XmlAttribute attribute) {
+ attribute.OwnerElement.Attributes.Remove(attribute);
} else {
node.ParentNode.RemoveChild(node);
}
@@ -456,8 +456,7 @@
internal void DeleteNode(string path) {
var node = TopNode.SelectSingleNode(path, NameSpaceManager);
if (node != null) {
- if (node is XmlAttribute) {
- var att = (XmlAttribute)node;
+ if (node is XmlAttribute att) {
att.OwnerElement.Attributes.Remove(att);
} else {
node.ParentNode.RemoveChild(node);
@@ -515,8 +514,8 @@
if (value == removeIf) {
var node = TopNode.SelectSingleNode(path, NameSpaceManager);
if (node != null) {
- if (node is XmlAttribute) {
- var elem = (node as XmlAttribute).OwnerElement;
+ if (node is XmlAttribute attribute) {
+ var elem = attribute.OwnerElement;
elem.ParentNode.RemoveChild(elem);
} else {
TopNode.RemoveChild(node);
@@ -560,41 +559,37 @@
}
internal int GetXmlNodeInt(string path) {
- int i;
- if (int.TryParse(GetXmlNodeString(path), out i)) {
+ if (int.TryParse(GetXmlNodeString(path), out var i)) {
return i;
}
return int.MinValue;
}
internal int? GetXmlNodeIntNull(string path) {
- int i;
string s = GetXmlNodeString(path);
- if (s != "" && int.TryParse(s, out i)) {
+ if (s != "" && int.TryParse(s, out var i)) {
return i;
}
return null;
}
internal decimal GetXmlNodeDecimal(string path) {
- decimal d;
if (decimal.TryParse(
GetXmlNodeString(path),
NumberStyles.Any,
CultureInfo.InvariantCulture,
- out d)) {
+ out var d)) {
return d;
}
return 0;
}
internal decimal? GetXmlNodeDecimalNull(string path) {
- decimal d;
if (decimal.TryParse(
GetXmlNodeString(path),
NumberStyles.Any,
CultureInfo.InvariantCulture,
- out d)) {
+ out var d)) {
return d;
}
return null;
@@ -605,8 +600,7 @@
if (s == "") {
return null;
}
- double v;
- if (double.TryParse(s, NumberStyles.Number, CultureInfo.InvariantCulture, out v)) {
+ if (double.TryParse(s, NumberStyles.Number, CultureInfo.InvariantCulture, out var v)) {
return v;
}
return null;
@@ -617,8 +611,7 @@
if (s == "") {
return double.NaN;
}
- double v;
- if (double.TryParse(s, NumberStyles.Number, CultureInfo.InvariantCulture, out v)) {
+ if (double.TryParse(s, NumberStyles.Number, CultureInfo.InvariantCulture, out var v)) {
return v;
}
return double.NaN;
@@ -633,7 +626,7 @@
if (nameNode != null) {
if (nameNode.NodeType == XmlNodeType.Attribute) {
- return nameNode.Value != null ? nameNode.Value : "";
+ return nameNode.Value ?? "";
}
return nameNode.InnerText;
}
diff --git a/NetCoreTests/NetCoreTests.csproj b/NetCoreTests/NetCoreTests.csproj
index b5e9414..9af6cc5 100644
--- a/NetCoreTests/NetCoreTests.csproj
+++ b/NetCoreTests/NetCoreTests.csproj
@@ -8,15 +8,9 @@
<PackageReference Include="MSTest.TestAdapter" Version="2.2.8"/>
<PackageReference Include="MSTest.TestFramework" Version="2.2.8"/>
<PackageReference Include="Microsoft.NET.Test.SDK" Version="17.1.0"/>
- <PackageReference Include="System.Net.Http" Version="4.3.4"/>
- <PackageReference Include="System.Text.Encoding.CodePages" Version="5.0.0"/>
- <PackageReference Include="System.Text.RegularExpressions" Version="4.3.1"/>
<ProjectReference Include="..\EPPlus\EPPlusSDK.csproj"/>
<None Include="TestWorkbooks/**" CopyToOutputDirectory="PreserveNewest"/>
-
- <!--Transient dependency; required to address b/230278644-->
- <PackageReference Include="Newtonsoft.Json" Version="13.0.1"/>
</ItemGroup>
</Project>