diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 805ab6dff..a00aa5477 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,6 +10,8 @@ on: jobs: build: runs-on: ubuntu-latest + env: + CODACY_PROJECT_TOKEN: ${{ secrets.CODACY_PROJECT_TOKEN }} steps: - name: Checkout uses: actions/checkout@v7 @@ -27,6 +29,28 @@ jobs: - name: Build run: dotnet build --configuration Release --no-restore + # Unit tests only (no live services). Excluded by name: + # - DateFunctionsWorkWithDifferentCultureDateFormats_*: throws an unhandled + # InvalidCastException on a worker thread, which crashes the test host and + # aborts the whole run (pre-existing). + # - Eleven tests that fail on unmodified main: RunDrawingTests, Issuer246, + # RunWorksheetTests, SetBackground, RCRelativeToABToR1C1_2, SimpleRelativeR1C1, + # FullTwoColumn, FullColumn, FullTwoRow, FullRow, OperatorsActingOnNumericStrings. + - name: Test with coverage + run: > + dotnet test PanoramicData.EPPlus.Test/PanoramicData.EPPlus.Test.csproj + --configuration Release --no-build + --collect "Code Coverage;Format=Cobertura" --results-directory ./coverage + --blame-hang-timeout 5m + --filter "FullyQualifiedName!~DateFunctionsWorkWithDifferentCultureDateFormats&Name!=RunDrawingTests&Name!=Issuer246&Name!=RunWorksheetTests&Name!=SetBackground&Name!=RCRelativeToABToR1C1_2&Name!=SimpleRelativeR1C1&Name!=FullTwoColumn&Name!=FullColumn&Name!=FullTwoRow&Name!=FullRow&Name!=OperatorsActingOnNumericStrings" + + - name: Upload coverage to Codacy + if: ${{ env.CODACY_PROJECT_TOKEN != '' }} + uses: codacy/codacy-coverage-reporter-action@v1.3.0 + with: + project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} + coverage-reports: coverage/**/*.cobertura.xml + - name: Pack run: dotnet pack --configuration Release --no-build --output ./artifacts diff --git a/PanoramicData.EPPlus/CellStore.cs b/PanoramicData.EPPlus/CellStore.cs index 7ad120303..8447dafaf 100644 --- a/PanoramicData.EPPlus/CellStore.cs +++ b/PanoramicData.EPPlus/CellStore.cs @@ -367,7 +367,11 @@ internal bool GetDimension(out int fromRow, out int fromCol, out int toRow, out for (var c = fromIndex; c < ColumnCount; c++) { int first, last; - if (_columnIndex[c].PageCount == 0) continue; + if (_columnIndex[c].PageCount == 0) + { + continue; + } + if (_columnIndex[c]._pages[0].RowCount > 0 && _columnIndex[c]._pages[0].Rows[0].Index > 0) { first = _columnIndex[c]._pages[0].IndexOffset + _columnIndex[c]._pages[0].Rows[0].Index; @@ -571,7 +575,11 @@ internal void SetRangeValueSpecial(int fromRow, int fromColumn, int toRow, int t for (var rowIx = fromRow; rowIx <= toRow; rowIx++) { var pageIx = (short)(rowIx >> pageBits); - if (!pages.ContainsKey(pageIx)) pages.Add(pageIx, []); + if (!pages.ContainsKey(pageIx)) + { + pages.Add(pageIx, []); + } + pages[pageIx].Add(rowIx); } @@ -815,9 +823,17 @@ internal void Delete(int fromRow, int fromCol, int rows, int columns, bool shift var column = _columnIndex[c]; if (column.Index >= fromCol) { - if (column.Index > toCol) break; + if (column.Index > toCol) + { + break; + } + var pagePos = column.GetPosition(fromRow); - if (pagePos < 0) pagePos = ~pagePos; + if (pagePos < 0) + { + pagePos = ~pagePos; + } + if (pagePos < column.PageCount) { var page = column._pages[pagePos]; @@ -842,7 +858,11 @@ internal void Delete(int fromRow, int fromCol, int rows, int columns, bool shift { var endRow = fromRow + rows; var delEndRow = CellStore.DeleteCells(column._pages[pagePos], fromRow, endRow, shift); - if (shift && delEndRow != fromRow) UpdatePageOffset(column, pagePos, delEndRow - fromRow); + if (shift && delEndRow != fromRow) + { + UpdatePageOffset(column, pagePos, delEndRow - fromRow); + } + if (endRow > delEndRow && pagePos < column.PageCount && column._pages[pagePos].MinIndex < endRow) { pagePos = (delEndRow == fromRow ? pagePos : pagePos + 1); @@ -853,7 +873,10 @@ internal void Delete(int fromRow, int fromCol, int rows, int columns, bool shift var fr = shift ? fromRow : endRow - rowsLeft; pagePos = column.GetPosition(fr); delEndRow = CellStore.DeleteCells(column._pages[pagePos], fr, shift ? fr + rowsLeft : endRow, shift); - if (shift) UpdatePageOffset(column, pagePos, rowsLeft); + if (shift) + { + UpdatePageOffset(column, pagePos, rowsLeft); + } } } } @@ -863,12 +886,18 @@ internal void Delete(int fromRow, int fromCol, int rows, int columns, bool shift var rowPos = column._pages[pagePos - 1].GetPosition(offset); if (rowPos > 0 && pagePos > 0) { - if (shift) UpdateIndexOffset(column, pagePos - 1, rowPos, fromRow + rows - 1, -rows); + if (shift) + { + UpdateIndexOffset(column, pagePos - 1, rowPos, fromRow + rows - 1, -rows); + } } } else { - if (shift && pagePos + 1 < column.PageCount) UpdateIndexOffset(column, pagePos + 1, 0, column._pages[pagePos + 1].MinIndex, -rows); + if (shift && pagePos + 1 < column.PageCount) + { + UpdateIndexOffset(column, pagePos + 1, 0, column._pages[pagePos + 1].MinIndex, -rows); + } } } } @@ -1028,7 +1057,11 @@ private static int DeleteCells(PageIndex page, int fromRow, int toRow, bool shif var maxRow = page.MaxIndex; var offset = toRow - page.IndexOffset; - if (offset > PageSizeMax) offset = PageSizeMax; + if (offset > PageSizeMax) + { + offset = PageSizeMax; + } + var toPos = page.GetPosition(offset); if (toPos < 0) { @@ -1052,7 +1085,11 @@ private static int DeleteCells(PageIndex page, int fromRow, int toRow, bool shif else { var rows = toRow - fromRow; - if (shift) UpdateRowIndex(page, toPos, rows); + if (shift) + { + UpdateRowIndex(page, toPos, rows); + } + Array.Copy(page.Rows, toPos, page.Rows, fromPos, page.RowCount - toPos); page.RowCount -= toPos - fromPos; @@ -1122,7 +1159,11 @@ private void DeleteColumns(int fromCol, int columns, bool shift) private void UpdateIndexOffset(ColumnIndex column, int pagePos, int rowPos, int row, int rows) { - if (pagePos >= column.PageCount) return; //A page after last cell. + if (pagePos >= column.PageCount) + { + return; //A page after last cell. + } + var page = column._pages[pagePos]; if (rows > PageSize) { @@ -1560,7 +1601,11 @@ internal bool NextCell(ref int row, ref int col, int minRow, int minColPos, int else { c = ~c; - if (c >= ColumnCount) c = ColumnCount - 1; + if (c >= ColumnCount) + { + c = ColumnCount - 1; + } + if (col > _columnIndex[c].Index) { if (col <= minColPos) @@ -1697,7 +1742,9 @@ internal bool GetNextCell(ref int row, ref int colPos, int startColPos, int endR else if (_columnIndex[colPos]._pages[pagePos[colPos]].RowCount <= row) { if (_columnIndex[colPos].PageCount > pagePos[colPos]) + { pagePos[colPos]++; + } else { pagePos[colPos] = -2; @@ -1937,9 +1984,17 @@ internal void Init() _maxRow = _endRow; _minColPos = _cellStore.GetPosition(_startCol); - if (_minColPos < 0) _minColPos = ~_minColPos; + if (_minColPos < 0) + { + _minColPos = ~_minColPos; + } + _maxColPos = _cellStore.GetPosition(_endCol); - if (_maxColPos < 0) _maxColPos = ~_maxColPos - 1; + if (_maxColPos < 0) + { + _maxColPos = ~_maxColPos - 1; + } + _row = _minRow; _colPos = _minColPos - 1; @@ -1957,7 +2012,11 @@ internal int Column { get { - if (_colPos == -1) MoveNext(); + if (_colPos == -1) + { + MoveNext(); + } + return _colPos == -1 ? 0 : _cellStore._columnIndex[_colPos].Index; } } diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Contracts/IExcelConditionalFormattingRule.cs b/PanoramicData.EPPlus/ConditionalFormatting/Contracts/IExcelConditionalFormattingRule.cs index aaeea1638..3b1503fa5 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Contracts/IExcelConditionalFormattingRule.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Contracts/IExcelConditionalFormattingRule.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Conditional Formatting 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.Style.Dxf; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Contracts; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingCollection.cs b/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingCollection.cs index d0a7cf110..e748b3473 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingCollection.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingCollection.cs @@ -28,14 +28,14 @@ * ****************************************************************************** * Eyal Seagull Conditional Formatting 2012-04-03 *******************************************************************************/ +using OfficeOpenXml.ConditionalFormatting.Contracts; +using OfficeOpenXml.ConditionalFormatting.Rules; +using OfficeOpenXml.Utils; using System; -using System.Collections.Generic; using System.Collections; -using OfficeOpenXml.Utils; -using System.Xml; -using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Collections.Generic; using System.Drawing; -using OfficeOpenXml.ConditionalFormatting.Rules; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting; @@ -169,7 +169,9 @@ internal ExcelConditionalFormattingCollection( // Add the new rule to the list if (cfRule != null) + { _rules.Add(cfRule); + } } } } diff --git a/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingColorScaleValue.cs b/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingColorScaleValue.cs index 354ad70e0..e30c3993d 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingColorScaleValue.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingColorScaleValue.cs @@ -28,11 +28,11 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ +using OfficeOpenXml.Utils; using System; using System.Drawing; -using System.Xml; -using OfficeOpenXml.Utils; using System.Globalization; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingHelper.cs b/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingHelper.cs index 60d9dd34d..ef698f20d 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingHelper.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingHelper.cs @@ -28,11 +28,11 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System; -using System.Text.RegularExpressions; using OfficeOpenXml.Utils; +using System; using System.Drawing; using System.Globalization; +using System.Text.RegularExpressions; using System.Xml; namespace OfficeOpenXml.ConditionalFormatting; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingIconDatabarValue.cs b/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingIconDatabarValue.cs index 67da2403a..afcd42200 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingIconDatabarValue.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingIconDatabarValue.cs @@ -28,11 +28,11 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ +using OfficeOpenXml.Utils; using System; using System.Drawing; -using System.Xml; -using OfficeOpenXml.Utils; using System.Globalization; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingRuleFactory.cs b/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingRuleFactory.cs index 0e04e45b4..92bf37bae 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingRuleFactory.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/ExcelConditionalFormattingRuleFactory.cs @@ -28,10 +28,10 @@ * ****************************************************************************** * Eyal Seagull Conditional Formatting 2012-04-03 *******************************************************************************/ -using System; -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Rules; using OfficeOpenXml.Utils; +using System; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/RangeConditionalFormatting.cs b/PanoramicData.EPPlus/ConditionalFormatting/RangeConditionalFormatting.cs index ad3e25797..669eef108 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/RangeConditionalFormatting.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/RangeConditionalFormatting.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Conditional Formatting 2012-04-03 *******************************************************************************/ -using OfficeOpenXml.Utils; using OfficeOpenXml.ConditionalFormatting.Contracts; +using OfficeOpenXml.Utils; namespace OfficeOpenXml.ConditionalFormatting; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAboveStdDev.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAboveStdDev.cs index 31ceeecb7..177641260 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAboveStdDev.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAboveStdDev.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAverageGroup.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAverageGroup.cs index 361ee03df..1caee973b 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAverageGroup.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingAverageGroup.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBeginsWith.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBeginsWith.cs index 3ce1507ca..f48cb847b 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBeginsWith.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBeginsWith.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBelowStdDev.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBelowStdDev.cs index 8c08dc4e6..8fe8f8a89 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBelowStdDev.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBelowStdDev.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBetween.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBetween.cs index e19e7c066..ae9641e21 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBetween.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBetween.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBottom.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBottom.cs index 2d482415d..a93882730 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBottom.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBottom.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBottomPercent.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBottomPercent.cs index 194031cba..94ca30940 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBottomPercent.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingBottomPercent.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsBlanks.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsBlanks.cs index 1fda355a1..8bad0acf9 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsBlanks.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsBlanks.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsErrors.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsErrors.cs index 90da973db..18df7f196 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsErrors.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsErrors.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsText.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsText.cs index 559eed91d..ce204c809 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsText.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingContainsText.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingDataBar.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingDataBar.cs index 13618e3e5..da43c7b47 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingDataBar.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingDataBar.cs @@ -28,11 +28,11 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ +using OfficeOpenXml.ConditionalFormatting.Contracts; using System; using System.Drawing; -using System.Xml; -using OfficeOpenXml.ConditionalFormatting.Contracts; using System.Globalization; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; /// diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingDuplicateValues.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingDuplicateValues.cs index 2ab6e21c4..7f745bc5b 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingDuplicateValues.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingDuplicateValues.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingEndsWith.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingEndsWith.cs index 98e4da280..8b3d7bc9e 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingEndsWith.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingEndsWith.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingEqual.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingEqual.cs index f10341986..620f56610 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingEqual.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingEqual.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingExpression.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingExpression.cs index c1c632352..3008120e7 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingExpression.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingExpression.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingFiveIconSet.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingFiveIconSet.cs index 12f95bc57..3b4a9b01d 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingFiveIconSet.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingFiveIconSet.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingFourIconSet.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingFourIconSet.cs index 08b3c5513..9951770f2 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingFourIconSet.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingFourIconSet.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingGreaterThan.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingGreaterThan.cs index bd11a9382..27257d89d 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingGreaterThan.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingGreaterThan.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingGreaterThanOrEqual.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingGreaterThanOrEqual.cs index 54fede81a..07fe677e7 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingGreaterThanOrEqual.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingGreaterThanOrEqual.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLessThan.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLessThan.cs index 1f31a8a2f..73580b808 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLessThan.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLessThan.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLessThanOrEqual.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLessThanOrEqual.cs index 903502bfc..66d58c2b4 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLessThanOrEqual.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingLessThanOrEqual.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotBetween.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotBetween.cs index a2d426ed3..230ffa33b 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotBetween.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotBetween.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsBlanks.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsBlanks.cs index 271b457f8..5d97ab953 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsBlanks.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsBlanks.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsErrors.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsErrors.cs index 97f331496..d3d9bb3e1 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsErrors.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsErrors.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsText.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsText.cs index 664fe0153..428a2105e 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsText.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotContainsText.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotEqual.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotEqual.cs index dc1fb6522..e5d4cbc46 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotEqual.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingNotEqual.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingRule.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingRule.cs index 538ef74d0..15a6d9f84 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingRule.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingRule.cs @@ -28,11 +28,11 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System; -using System.Xml; -using OfficeOpenXml.Utils; using OfficeOpenXml.ConditionalFormatting.Contracts; using OfficeOpenXml.Style.Dxf; +using OfficeOpenXml.Utils; +using System; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThreeColorScale.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThreeColorScale.cs index 8be26dfcc..63bbf28eb 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThreeColorScale.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThreeColorScale.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThreeIconSet.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThreeIconSet.cs index d381ef39e..920a8a93e 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThreeIconSet.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingThreeIconSet.cs @@ -28,9 +28,9 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ +using OfficeOpenXml.ConditionalFormatting.Contracts; using System; using System.Xml; -using OfficeOpenXml.ConditionalFormatting.Contracts; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTimePeriodGroup.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTimePeriodGroup.cs index be8f9e315..30a02672e 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTimePeriodGroup.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTimePeriodGroup.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTop.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTop.cs index b04dfebc3..82e3c90d8 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTop.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTop.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTopPercent.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTopPercent.cs index 200e62804..43d8b1cde 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTopPercent.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTopPercent.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTwoColorScale.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTwoColorScale.cs index eb6707ee6..9b28a155a 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTwoColorScale.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingTwoColorScale.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingUniqueValues.cs b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingUniqueValues.cs index b5fdea58b..bd9aad195 100644 --- a/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingUniqueValues.cs +++ b/PanoramicData.EPPlus/ConditionalFormatting/Rules/ExcelConditionalFormattingUniqueValues.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Eyal Seagull Added 2012-04-03 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.ConditionalFormatting.Contracts; +using System.Xml; namespace OfficeOpenXml.ConditionalFormatting.Rules; diff --git a/PanoramicData.EPPlus/DataValidation/ExcelDataValidation.cs b/PanoramicData.EPPlus/DataValidation/ExcelDataValidation.cs index 6e656051c..41ac4e0f8 100644 --- a/PanoramicData.EPPlus/DataValidation/ExcelDataValidation.cs +++ b/PanoramicData.EPPlus/DataValidation/ExcelDataValidation.cs @@ -29,11 +29,11 @@ * Mats Alm Added 2011-01-01 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ -using System; +using OfficeOpenXml.DataValidation.Contracts; using OfficeOpenXml.Utils; -using System.Xml; +using System; using System.Text.RegularExpressions; -using OfficeOpenXml.DataValidation.Contracts; +using System.Xml; namespace OfficeOpenXml.DataValidation; diff --git a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationAny.cs b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationAny.cs index bd5a7e5d1..7a35fcfcd 100644 --- a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationAny.cs +++ b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationAny.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Raziq York Added 2014-08-08 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.DataValidation.Contracts; +using System.Xml; namespace OfficeOpenXml.DataValidation; diff --git a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationCollection.cs b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationCollection.cs index 2c6946f4d..5c56e7c01 100644 --- a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationCollection.cs +++ b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationCollection.cs @@ -32,13 +32,13 @@ * Jan Källman License changed GPL-->LGPL 2011-12-27 * Raziq York Added support for Any type 2014-08-08 *******************************************************************************/ +using OfficeOpenXml.DataValidation.Contracts; +using OfficeOpenXml.Utils; using System; -using System.Collections.Generic; using System.Collections; +using System.Collections.Generic; using System.Globalization; -using OfficeOpenXml.Utils; using System.Xml; -using OfficeOpenXml.DataValidation.Contracts; namespace OfficeOpenXml.DataValidation; @@ -91,7 +91,10 @@ internal ExcelDataValidationCollection(ExcelWorksheet worksheet) { foreach (XmlNode node in dataValidationNodes) { - if (node.Attributes["sqref"] == null) continue; + if (node.Attributes["sqref"] == null) + { + continue; + } var addr = node.Attributes["sqref"].Value; @@ -164,7 +167,10 @@ private void ValidateAddress(string address, IExcelDataValidation validatingVali { Require.Argument(address).IsNotNullOrEmpty("address"); - if (!InternalValidationEnabled) return; + if (!InternalValidationEnabled) + { + return; + } // ensure that the new address does not collide with an existing validation. var newAddress = new ExcelAddress(address); @@ -193,7 +199,10 @@ private void ValidateAddress(string address, IExcelDataValidation validatingVali /// internal void ValidateAll() { - if (!InternalValidationEnabled) return; + if (!InternalValidationEnabled) + { + return; + } foreach (var validation in _validations) { @@ -338,7 +347,11 @@ public bool Remove(IExcelDataValidation item) var dvNode = _worksheet.WorksheetXml.DocumentElement.SelectSingleNode(DataValidationPath.TrimStart('/'), NameSpaceManager); dvNode?.RemoveChild(((ExcelDataValidation)item).TopNode); var retVal = _validations.Remove(item); - if (retVal) OnValidationCountChanged(); + if (retVal) + { + OnValidationCountChanged(); + } + return retVal; } diff --git a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationCustom.cs b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationCustom.cs index a2317ec40..24b901cf0 100644 --- a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationCustom.cs +++ b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationCustom.cs @@ -29,10 +29,10 @@ * Mats Alm Added 2011-01-01 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ -using OfficeOpenXml.DataValidation.Formulas.Contracts; +using OfficeOpenXml.DataValidation.Contracts; using OfficeOpenXml.DataValidation.Formulas; +using OfficeOpenXml.DataValidation.Formulas.Contracts; using System.Xml; -using OfficeOpenXml.DataValidation.Contracts; namespace OfficeOpenXml.DataValidation; diff --git a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationDateTime.cs b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationDateTime.cs index 9f6b8d5aa..7e154e9c9 100644 --- a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationDateTime.cs +++ b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationDateTime.cs @@ -29,11 +29,11 @@ * Mats Alm Added 2011-01-01 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ -using System; -using OfficeOpenXml.DataValidation.Formulas.Contracts; +using OfficeOpenXml.DataValidation.Contracts; using OfficeOpenXml.DataValidation.Formulas; +using OfficeOpenXml.DataValidation.Formulas.Contracts; +using System; using System.Xml; -using OfficeOpenXml.DataValidation.Contracts; namespace OfficeOpenXml.DataValidation; diff --git a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationDecimal.cs b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationDecimal.cs index 8ea6eec31..6867090fd 100644 --- a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationDecimal.cs +++ b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationDecimal.cs @@ -29,10 +29,10 @@ * Mats Alm Added 2011-01-01 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ -using System.Xml; -using OfficeOpenXml.DataValidation.Formulas.Contracts; -using OfficeOpenXml.DataValidation.Formulas; using OfficeOpenXml.DataValidation.Contracts; +using OfficeOpenXml.DataValidation.Formulas; +using OfficeOpenXml.DataValidation.Formulas.Contracts; +using System.Xml; namespace OfficeOpenXml.DataValidation; diff --git a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationFactory.cs b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationFactory.cs index a41afb8b5..7a178447e 100644 --- a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationFactory.cs +++ b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationFactory.cs @@ -30,9 +30,9 @@ * Jan Källman License changed GPL-->LGPL 2011-12-27 * Raziq York Added support for Any type 2014-08-08 *******************************************************************************/ +using OfficeOpenXml.Utils; using System; using System.Xml; -using OfficeOpenXml.Utils; namespace OfficeOpenXml.DataValidation; diff --git a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationInt.cs b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationInt.cs index f54b72bab..6d502f10e 100644 --- a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationInt.cs +++ b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationInt.cs @@ -29,10 +29,10 @@ * Mats Alm Added 2011-01-08 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ +using OfficeOpenXml.DataValidation.Contracts; using OfficeOpenXml.DataValidation.Formulas; using OfficeOpenXml.DataValidation.Formulas.Contracts; using System.Xml; -using OfficeOpenXml.DataValidation.Contracts; namespace OfficeOpenXml.DataValidation; diff --git a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationList.cs b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationList.cs index 03f30f836..c3db06698 100644 --- a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationList.cs +++ b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationList.cs @@ -29,10 +29,10 @@ * Mats Alm Added 2011-01-08 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ -using OfficeOpenXml.DataValidation.Formulas.Contracts; +using OfficeOpenXml.DataValidation.Contracts; using OfficeOpenXml.DataValidation.Formulas; +using OfficeOpenXml.DataValidation.Formulas.Contracts; using System.Xml; -using OfficeOpenXml.DataValidation.Contracts; namespace OfficeOpenXml.DataValidation; diff --git a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationTime.cs b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationTime.cs index 4f4642c22..d78423e87 100644 --- a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationTime.cs +++ b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationTime.cs @@ -29,10 +29,10 @@ * Mats Alm Added 2011-01-08 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ -using OfficeOpenXml.DataValidation.Formulas.Contracts; +using OfficeOpenXml.DataValidation.Contracts; using OfficeOpenXml.DataValidation.Formulas; +using OfficeOpenXml.DataValidation.Formulas.Contracts; using System.Xml; -using OfficeOpenXml.DataValidation.Contracts; namespace OfficeOpenXml.DataValidation; diff --git a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationType.cs b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationType.cs index f553188eb..7baf7bcf0 100644 --- a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationType.cs +++ b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationType.cs @@ -158,7 +158,7 @@ internal bool AllowOperator /// /// /// - public override bool Equals(object obj) => obj is ExcelDataValidationType && ((ExcelDataValidationType)obj).Type == Type; + public override bool Equals(object? obj) => obj is ExcelDataValidationType && ((ExcelDataValidationType)obj).Type == Type; /// /// Overrides GetHashCode() diff --git a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationWithFormula.cs b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationWithFormula.cs index a66dd275e..429363a9d 100644 --- a/PanoramicData.EPPlus/DataValidation/ExcelDataValidationWithFormula.cs +++ b/PanoramicData.EPPlus/DataValidation/ExcelDataValidationWithFormula.cs @@ -29,8 +29,8 @@ * Mats Alm Added 2011-01-01 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ -using System; using OfficeOpenXml.DataValidation.Formulas.Contracts; +using System; using System.Xml; namespace OfficeOpenXml.DataValidation; diff --git a/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormula.cs b/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormula.cs index 1b4113115..511d985e2 100644 --- a/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormula.cs +++ b/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormula.cs @@ -29,9 +29,9 @@ * Mats Alm Added 2011-01-08 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ +using OfficeOpenXml.Utils; using System; using System.Xml; -using OfficeOpenXml.Utils; namespace OfficeOpenXml.DataValidation.Formulas; diff --git a/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaDateTime.cs b/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaDateTime.cs index e0048fc39..1e69a42b2 100644 --- a/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaDateTime.cs +++ b/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaDateTime.cs @@ -29,10 +29,10 @@ * Mats Alm Added 2011-01-08 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ -using System; -using System.Xml; using OfficeOpenXml.DataValidation.Formulas.Contracts; +using System; using System.Globalization; +using System.Xml; namespace OfficeOpenXml.DataValidation.Formulas; internal class ExcelDataValidationFormulaDateTime : ExcelDataValidationFormulaValue, IExcelDataValidationFormulaDateTime diff --git a/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaDecimal.cs b/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaDecimal.cs index 8c3b39e6f..f4fb5d627 100644 --- a/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaDecimal.cs +++ b/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaDecimal.cs @@ -29,9 +29,9 @@ * Mats Alm Added 2011-01-08 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.DataValidation.Formulas.Contracts; using System.Globalization; +using System.Xml; namespace OfficeOpenXml.DataValidation.Formulas; diff --git a/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaInt.cs b/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaInt.cs index f72b41adf..5310681f0 100644 --- a/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaInt.cs +++ b/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaInt.cs @@ -29,9 +29,9 @@ * Mats Alm Added 2011-01-08 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.DataValidation.Formulas.Contracts; using System.Globalization; +using System.Xml; namespace OfficeOpenXml.DataValidation.Formulas; diff --git a/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaTime.cs b/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaTime.cs index 9c7563f3e..47a7da322 100644 --- a/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaTime.cs +++ b/PanoramicData.EPPlus/DataValidation/Formulas/ExcelDataValidationFormulaTime.cs @@ -29,10 +29,10 @@ * Mats Alm Added 2011-01-08 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ -using System; using OfficeOpenXml.DataValidation.Formulas.Contracts; -using System.Xml; +using System; using System.Globalization; +using System.Xml; namespace OfficeOpenXml.DataValidation.Formulas; diff --git a/PanoramicData.EPPlus/DataValidation/RangeDataValidation.cs b/PanoramicData.EPPlus/DataValidation/RangeDataValidation.cs index 079bb010d..a3b876dc6 100644 --- a/PanoramicData.EPPlus/DataValidation/RangeDataValidation.cs +++ b/PanoramicData.EPPlus/DataValidation/RangeDataValidation.cs @@ -29,8 +29,8 @@ * Mats Alm Added 2011-03-23 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ -using OfficeOpenXml.Utils; using OfficeOpenXml.DataValidation.Contracts; +using OfficeOpenXml.Utils; namespace OfficeOpenXml.DataValidation; diff --git a/PanoramicData.EPPlus/Drawing/Chart/ExcelChart.cs b/PanoramicData.EPPlus/Drawing/Chart/ExcelChart.cs index 7645e78cb..3163d0e5c 100644 --- a/PanoramicData.EPPlus/Drawing/Chart/ExcelChart.cs +++ b/PanoramicData.EPPlus/Drawing/Chart/ExcelChart.cs @@ -380,11 +380,16 @@ internal ExcelChart(ExcelDrawings drawings, XmlNode node, eChartType type, Excel Init(drawings, _chartNode); _chartSeries = new ExcelChartSeries(this, drawings.NameSpaceManager, _chartNode, PivotTableSource != null); - if (PivotTableSource != null) SetPivotSource(PivotTableSource); + if (PivotTableSource != null) + { + SetPivotSource(PivotTableSource); + } SetTypeProperties(); if (topChart == null) + { LoadAxis(); + } else { _axis = topChart.Axis; @@ -544,8 +549,15 @@ private void LoadAxis() _axis = [.. l]; - if (_axis.Length > 0) XAxis = _axis[0]; - if (_axis.Length > 1) YAxis = _axis[1]; + if (_axis.Length > 0) + { + XAxis = _axis[0]; + } + + if (_axis.Length > 1) + { + YAxis = _axis[1]; + } } //private void SetChartType() //{ diff --git a/PanoramicData.EPPlus/Drawing/Chart/ExcelChartAxis.cs b/PanoramicData.EPPlus/Drawing/Chart/ExcelChartAxis.cs index 74ab6b683..460b2671a 100644 --- a/PanoramicData.EPPlus/Drawing/Chart/ExcelChartAxis.cs +++ b/PanoramicData.EPPlus/Drawing/Chart/ExcelChartAxis.cs @@ -29,10 +29,10 @@ * Jan Källman Added 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ -using System; -using System.Xml; using OfficeOpenXml.Style; +using System; using System.Globalization; +using System.Xml; namespace OfficeOpenXml.Drawing.Chart; /// @@ -807,7 +807,9 @@ public ExcelDrawingBorder MajorGridlines { var node = TopNode.SelectSingleNode(_majorGridlinesPath, NameSpaceManager); if (node == null) + { CreateNode(_majorGridlinesPath); + } _majorGridlines = new ExcelDrawingBorder(NameSpaceManager, TopNode, $"{_majorGridlinesPath}/c:spPr/a:ln"); } @@ -830,7 +832,9 @@ public ExcelDrawingBorder MinorGridlines { var node = TopNode.SelectSingleNode(_minorGridlinesPath, NameSpaceManager); if (node == null) + { CreateNode(_minorGridlinesPath); + } _minorGridlines = new ExcelDrawingBorder(NameSpaceManager, TopNode, $"{_minorGridlinesPath}/c:spPr/a:ln"); } diff --git a/PanoramicData.EPPlus/Drawing/Chart/ExcelChartDataLabel.cs b/PanoramicData.EPPlus/Drawing/Chart/ExcelChartDataLabel.cs index 6730a3084..666b9d292 100644 --- a/PanoramicData.EPPlus/Drawing/Chart/ExcelChartDataLabel.cs +++ b/PanoramicData.EPPlus/Drawing/Chart/ExcelChartDataLabel.cs @@ -29,8 +29,8 @@ * Jan Källman Added 2009-12-30 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.Style; +using System.Xml; namespace OfficeOpenXml.Drawing.Chart; diff --git a/PanoramicData.EPPlus/Drawing/Chart/ExcelChartDataTable.cs b/PanoramicData.EPPlus/Drawing/Chart/ExcelChartDataTable.cs index e31d7db49..aee9337e9 100644 --- a/PanoramicData.EPPlus/Drawing/Chart/ExcelChartDataTable.cs +++ b/PanoramicData.EPPlus/Drawing/Chart/ExcelChartDataTable.cs @@ -29,8 +29,8 @@ * Mark Kromis Added 2017-01-07 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.Style; +using System.Xml; namespace OfficeOpenXml.Drawing.Chart; diff --git a/PanoramicData.EPPlus/Drawing/Chart/ExcelChartLegend.cs b/PanoramicData.EPPlus/Drawing/Chart/ExcelChartLegend.cs index ab6453370..7bba247b7 100644 --- a/PanoramicData.EPPlus/Drawing/Chart/ExcelChartLegend.cs +++ b/PanoramicData.EPPlus/Drawing/Chart/ExcelChartLegend.cs @@ -29,10 +29,10 @@ * Jan Källman Added 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ +using OfficeOpenXml.Style; using System; using System.Globalization; using System.Xml; -using OfficeOpenXml.Style; namespace OfficeOpenXml.Drawing.Chart; @@ -78,7 +78,11 @@ public eLegendPosition Position } set { - if (TopNode == null) throw (new Exception("Can't set position. Chart has no legend")); + if (TopNode == null) + { + throw (new Exception("Can't set position. Chart has no legend")); + } + switch (value) { case eLegendPosition.Top: @@ -111,7 +115,11 @@ public bool Overlay } set { - if (TopNode == null) throw (new Exception("Can't set overlay. Chart has no legend")); + if (TopNode == null) + { + throw (new Exception("Can't set overlay. Chart has no legend")); + } + SetXmlNodeBool(OVERLAY_PATH, value); } } @@ -168,7 +176,11 @@ public ExcelTextFont Font /// public void Remove() { - if (TopNode == null) return; + if (TopNode == null) + { + return; + } + TopNode.ParentNode.RemoveChild(TopNode); TopNode = null; } @@ -177,7 +189,10 @@ public void Remove() /// public void Add() { - if (TopNode != null) return; + if (TopNode != null) + { + return; + } //XmlHelper xml = new XmlHelper(NameSpaceManager, _chart.ChartXml); var xml = XmlHelperFactory.Create(NameSpaceManager, _chart.ChartXml); diff --git a/PanoramicData.EPPlus/Drawing/Chart/ExcelChartSerieDataLabel.cs b/PanoramicData.EPPlus/Drawing/Chart/ExcelChartSerieDataLabel.cs index d8dcc49d4..96150ab98 100644 --- a/PanoramicData.EPPlus/Drawing/Chart/ExcelChartSerieDataLabel.cs +++ b/PanoramicData.EPPlus/Drawing/Chart/ExcelChartSerieDataLabel.cs @@ -29,8 +29,8 @@ * Jan Källman Added 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.Style; +using System.Xml; namespace OfficeOpenXml.Drawing.Chart; diff --git a/PanoramicData.EPPlus/Drawing/Chart/ExcelChartSeries.cs b/PanoramicData.EPPlus/Drawing/Chart/ExcelChartSeries.cs index ba020f81e..80552be41 100644 --- a/PanoramicData.EPPlus/Drawing/Chart/ExcelChartSeries.cs +++ b/PanoramicData.EPPlus/Drawing/Chart/ExcelChartSeries.cs @@ -29,11 +29,11 @@ * Jan Källman Added 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ +using OfficeOpenXml.Table.PivotTable; using System; +using System.Collections; using System.Collections.Generic; using System.Xml; -using System.Collections; -using OfficeOpenXml.Table.PivotTable; namespace OfficeOpenXml.Drawing.Chart; public sealed class ExcelBubbleChartSeries : ExcelChartSeries diff --git a/PanoramicData.EPPlus/Drawing/Chart/ExcelChartTitle.cs b/PanoramicData.EPPlus/Drawing/Chart/ExcelChartTitle.cs index b1523357c..e2ba6ded0 100644 --- a/PanoramicData.EPPlus/Drawing/Chart/ExcelChartTitle.cs +++ b/PanoramicData.EPPlus/Drawing/Chart/ExcelChartTitle.cs @@ -29,9 +29,9 @@ * Jan Källman Added 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ +using OfficeOpenXml.Style; using System; using System.Xml; -using OfficeOpenXml.Style; namespace OfficeOpenXml.Drawing.Chart; diff --git a/PanoramicData.EPPlus/Drawing/Chart/ExcelChartTrendline.cs b/PanoramicData.EPPlus/Drawing/Chart/ExcelChartTrendline.cs index c335ed8e6..a2e29816b 100644 --- a/PanoramicData.EPPlus/Drawing/Chart/ExcelChartTrendline.cs +++ b/PanoramicData.EPPlus/Drawing/Chart/ExcelChartTrendline.cs @@ -31,8 +31,8 @@ *******************************************************************************/ using System; using System.Collections.Generic; -using System.Xml; using System.Globalization; +using System.Xml; namespace OfficeOpenXml.Drawing.Chart; diff --git a/PanoramicData.EPPlus/Drawing/Chart/ExcelDoughnutChart.cs b/PanoramicData.EPPlus/Drawing/Chart/ExcelDoughnutChart.cs index ab20e4609..8af58b383 100644 --- a/PanoramicData.EPPlus/Drawing/Chart/ExcelDoughnutChart.cs +++ b/PanoramicData.EPPlus/Drawing/Chart/ExcelDoughnutChart.cs @@ -29,10 +29,10 @@ * Jan Källman Initial Release 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ +using OfficeOpenXml.Table.PivotTable; using System; -using System.Xml; using System.Globalization; -using OfficeOpenXml.Table.PivotTable; +using System.Xml; namespace OfficeOpenXml.Drawing.Chart; diff --git a/PanoramicData.EPPlus/Drawing/Chart/ExcelLineChart.cs b/PanoramicData.EPPlus/Drawing/Chart/ExcelLineChart.cs index be654cd5e..d53e20ae7 100644 --- a/PanoramicData.EPPlus/Drawing/Chart/ExcelLineChart.cs +++ b/PanoramicData.EPPlus/Drawing/Chart/ExcelLineChart.cs @@ -29,9 +29,9 @@ * Jan Källman Initial Release 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ +using OfficeOpenXml.Table.PivotTable; using System; using System.Xml; -using OfficeOpenXml.Table.PivotTable; namespace OfficeOpenXml.Drawing.Chart; diff --git a/PanoramicData.EPPlus/Drawing/Chart/ExcelLineChartSerie.cs b/PanoramicData.EPPlus/Drawing/Chart/ExcelLineChartSerie.cs index 9bdf4c780..a6d531e42 100644 --- a/PanoramicData.EPPlus/Drawing/Chart/ExcelLineChartSerie.cs +++ b/PanoramicData.EPPlus/Drawing/Chart/ExcelLineChartSerie.cs @@ -30,9 +30,9 @@ * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ using System; +using System.Drawing; using System.Globalization; using System.Xml; -using System.Drawing; namespace OfficeOpenXml.Drawing.Chart; diff --git a/PanoramicData.EPPlus/Drawing/Chart/ExcelOfPieChart.cs b/PanoramicData.EPPlus/Drawing/Chart/ExcelOfPieChart.cs index 1b5511aaf..118f2b351 100644 --- a/PanoramicData.EPPlus/Drawing/Chart/ExcelOfPieChart.cs +++ b/PanoramicData.EPPlus/Drawing/Chart/ExcelOfPieChart.cs @@ -29,10 +29,10 @@ * Jan Källman Initial Release 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ -using System; -using System.Xml; using OfficeOpenXml.Table.PivotTable; +using System; using System.Globalization; +using System.Xml; namespace OfficeOpenXml.Drawing.Chart; diff --git a/PanoramicData.EPPlus/Drawing/Chart/ExcelPieChart.cs b/PanoramicData.EPPlus/Drawing/Chart/ExcelPieChart.cs index b14116a15..b47072af6 100644 --- a/PanoramicData.EPPlus/Drawing/Chart/ExcelPieChart.cs +++ b/PanoramicData.EPPlus/Drawing/Chart/ExcelPieChart.cs @@ -29,9 +29,9 @@ * Jan Källman Initial Release 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ +using OfficeOpenXml.Table.PivotTable; using System; using System.Xml; -using OfficeOpenXml.Table.PivotTable; namespace OfficeOpenXml.Drawing.Chart; diff --git a/PanoramicData.EPPlus/Drawing/Chart/ExcelRadarChart.cs b/PanoramicData.EPPlus/Drawing/Chart/ExcelRadarChart.cs index d6076048c..848c12273 100644 --- a/PanoramicData.EPPlus/Drawing/Chart/ExcelRadarChart.cs +++ b/PanoramicData.EPPlus/Drawing/Chart/ExcelRadarChart.cs @@ -29,10 +29,10 @@ * Jan Källman Initial Release 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ +using OfficeOpenXml.Table.PivotTable; using System; using System.Globalization; using System.Xml; -using OfficeOpenXml.Table.PivotTable; namespace OfficeOpenXml.Drawing.Chart; diff --git a/PanoramicData.EPPlus/Drawing/Chart/ExcelScatterChart.cs b/PanoramicData.EPPlus/Drawing/Chart/ExcelScatterChart.cs index 95b52e5e0..27fe6b6fb 100644 --- a/PanoramicData.EPPlus/Drawing/Chart/ExcelScatterChart.cs +++ b/PanoramicData.EPPlus/Drawing/Chart/ExcelScatterChart.cs @@ -29,9 +29,9 @@ * Jan Källman Initial Release 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ +using OfficeOpenXml.Table.PivotTable; using System; using System.Xml; -using OfficeOpenXml.Table.PivotTable; namespace OfficeOpenXml.Drawing.Chart; diff --git a/PanoramicData.EPPlus/Drawing/Chart/ExcelScatterChartSerie.cs b/PanoramicData.EPPlus/Drawing/Chart/ExcelScatterChartSerie.cs index be97e2670..285e11532 100644 --- a/PanoramicData.EPPlus/Drawing/Chart/ExcelScatterChartSerie.cs +++ b/PanoramicData.EPPlus/Drawing/Chart/ExcelScatterChartSerie.cs @@ -31,9 +31,9 @@ *******************************************************************************/ using System; using System.Collections.Generic; +using System.Drawing; using System.Globalization; using System.Xml; -using System.Drawing; namespace OfficeOpenXml.Drawing.Chart; diff --git a/PanoramicData.EPPlus/Drawing/Chart/ExcelSurfaceChart.cs b/PanoramicData.EPPlus/Drawing/Chart/ExcelSurfaceChart.cs index 79e7ff53b..8b7ada140 100644 --- a/PanoramicData.EPPlus/Drawing/Chart/ExcelSurfaceChart.cs +++ b/PanoramicData.EPPlus/Drawing/Chart/ExcelSurfaceChart.cs @@ -29,9 +29,9 @@ * Jan Källman Added 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ +using OfficeOpenXml.Table.PivotTable; using System; using System.Xml; -using OfficeOpenXml.Table.PivotTable; namespace OfficeOpenXml.Drawing.Chart; diff --git a/PanoramicData.EPPlus/Drawing/ExcelDrawingBase.cs b/PanoramicData.EPPlus/Drawing/ExcelDrawingBase.cs index 3671440b2..72045077f 100644 --- a/PanoramicData.EPPlus/Drawing/ExcelDrawingBase.cs +++ b/PanoramicData.EPPlus/Drawing/ExcelDrawingBase.cs @@ -230,7 +230,11 @@ public string Name { try { - if (_nameXPath == "") throw new NotImplementedException(); + if (_nameXPath == "") + { + throw new NotImplementedException(); + } + SetXmlNodeString(_nameXPath, value); } catch @@ -702,7 +706,11 @@ public void SetSize(int PixelWidth, int PixelHeight) public virtual void Dispose() => _topNode = null; internal void GetPositionSize() { - if (_doNotAdjust) return; + if (_doNotAdjust) + { + return; + } + _top = GetPixelTop(); _left = GetPixelLeft(); _height = GetPixelHeight(); @@ -714,7 +722,11 @@ internal void GetPositionSize() /// public void AdjustPositionAndSize() { - if (_drawings.Worksheet.Workbook._package.DoAdjustDrawings == false) return; + if (_drawings.Worksheet.Workbook._package.DoAdjustDrawings == false) + { + return; + } + if (EditAs == eEditAs.Absolute) { SetPixelLeft(_left); diff --git a/PanoramicData.EPPlus/Drawing/ExcelDrawings.cs b/PanoramicData.EPPlus/Drawing/ExcelDrawings.cs index 66b3d0169..04e0a81ee 100644 --- a/PanoramicData.EPPlus/Drawing/ExcelDrawings.cs +++ b/PanoramicData.EPPlus/Drawing/ExcelDrawings.cs @@ -37,8 +37,8 @@ using System.Collections.Generic; using System.Drawing; using System.IO; -using System.Xml; using System.Runtime.Versioning; +using System.Xml; namespace OfficeOpenXml.Drawing; diff --git a/PanoramicData.EPPlus/Drawing/ExcelPicture.cs b/PanoramicData.EPPlus/Drawing/ExcelPicture.cs index 0b0379189..fdcdfb547 100644 --- a/PanoramicData.EPPlus/Drawing/ExcelPicture.cs +++ b/PanoramicData.EPPlus/Drawing/ExcelPicture.cs @@ -36,9 +36,9 @@ using System.Drawing.Imaging; using System.Globalization; using System.IO; +using System.Runtime.Versioning; using System.Text; using System.Xml; -using System.Runtime.Versioning; namespace OfficeOpenXml.Drawing; diff --git a/PanoramicData.EPPlus/Drawing/ExcelView3D.cs b/PanoramicData.EPPlus/Drawing/ExcelView3D.cs index c14c099ee..111dac1bc 100644 --- a/PanoramicData.EPPlus/Drawing/ExcelView3D.cs +++ b/PanoramicData.EPPlus/Drawing/ExcelView3D.cs @@ -30,8 +30,8 @@ * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ using System; -using System.Xml; using System.Globalization; +using System.Xml; namespace OfficeOpenXml.Drawing; diff --git a/PanoramicData.EPPlus/Drawing/Vml/ExcelVmlDrawingComment.cs b/PanoramicData.EPPlus/Drawing/Vml/ExcelVmlDrawingComment.cs index 91acbda37..fec0567aa 100644 --- a/PanoramicData.EPPlus/Drawing/Vml/ExcelVmlDrawingComment.cs +++ b/PanoramicData.EPPlus/Drawing/Vml/ExcelVmlDrawingComment.cs @@ -157,7 +157,11 @@ public Color BackgroundColor } else { - if (col.StartsWith("#")) col = col[1..]; + if (col.StartsWith("#")) + { + col = col[1..]; + } + return int.TryParse(col, NumberStyles.AllowHexSpecifier, CultureInfo.InvariantCulture, out var res) ? Color.FromArgb(res) : Color.Empty; @@ -232,7 +236,11 @@ public Color LineColor } else { - if (col.StartsWith("#")) col = col[1..]; + if (col.StartsWith("#")) + { + col = col[1..]; + } + return int.TryParse(col, NumberStyles.AllowHexSpecifier, CultureInfo.InvariantCulture, out var res) ? Color.FromArgb(res) : Color.Empty; @@ -253,8 +261,15 @@ public Single LineWidth get { var wt = GetXmlNodeString(LINEWIDTH_PATH); - if (wt == "") return (Single).75; - if (wt.EndsWith("pt")) wt = wt[..^2]; + if (wt == "") + { + return (Single).75; + } + + if (wt.EndsWith("pt")) + { + wt = wt[..^2]; + } return Single.TryParse(wt, NumberStyles.Any, CultureInfo.InvariantCulture, out var ret) ? ret : 0; } diff --git a/PanoramicData.EPPlus/Drawing/Vml/ExcelVmlDrawingPicture.cs b/PanoramicData.EPPlus/Drawing/Vml/ExcelVmlDrawingPicture.cs index 355d507d2..1f3ee93af 100644 --- a/PanoramicData.EPPlus/Drawing/Vml/ExcelVmlDrawingPicture.cs +++ b/PanoramicData.EPPlus/Drawing/Vml/ExcelVmlDrawingPicture.cs @@ -30,10 +30,10 @@ * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ using System; -using System.Xml; -using System.Globalization; using System.Drawing; +using System.Globalization; using System.Runtime.Versioning; +using System.Xml; namespace OfficeOpenXml.Drawing.Vml; diff --git a/PanoramicData.EPPlus/Drawing/Vml/ExcelVmlDrawingPictureCollection.cs b/PanoramicData.EPPlus/Drawing/Vml/ExcelVmlDrawingPictureCollection.cs index 6f3c1bd35..a65e158e4 100644 --- a/PanoramicData.EPPlus/Drawing/Vml/ExcelVmlDrawingPictureCollection.cs +++ b/PanoramicData.EPPlus/Drawing/Vml/ExcelVmlDrawingPictureCollection.cs @@ -29,12 +29,12 @@ * Jan Källman Initial Release 2010-06-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ +using OfficeOpenXml.Utils; using System; -using System.Collections.Generic; -using System.Xml; using System.Collections; +using System.Collections.Generic; using System.Globalization; -using OfficeOpenXml.Utils; +using System.Xml; namespace OfficeOpenXml.Drawing.Vml; diff --git a/PanoramicData.EPPlus/Encryption/EncryptionHandler.cs b/PanoramicData.EPPlus/Encryption/EncryptionHandler.cs index e5a425159..a28597fab 100644 --- a/PanoramicData.EPPlus/Encryption/EncryptionHandler.cs +++ b/PanoramicData.EPPlus/Encryption/EncryptionHandler.cs @@ -824,18 +824,23 @@ private byte[] GetPasswordHashBinary(string password, EncryptionInfoBinary encry //First XOR hash bytes with 0x36 and fill the rest with 0x36 for (var i = 0; i < derivedKey.Length; i++) + { derivedKey[i] = (byte)(i < hash.Length ? 0x36 ^ hash[i] : 0x36); - + } var X1 = hashProvider.ComputeHash(derivedKey); //if verifier size is bigger than the key size we can return X1 if ((int)encryptionInfo.Verifier.VerifierHashSize > keySizeBytes) + { return FixHashSize(X1, keySizeBytes); + } //Else XOR hash bytes with 0x5C and fill the rest with 0x5C for (var i = 0; i < derivedKey.Length; i++) + { derivedKey[i] = (byte)(i < hash.Length ? 0x5C ^ hash[i] : 0x5C); + } var X2 = hashProvider.ComputeHash(derivedKey); @@ -906,7 +911,9 @@ private static byte[] GetPasswordHash(HashAlgorithm hashProvider, byte[] salt, s private static byte[] FixHashSize(byte[] hash, int size, byte fill = 0) { if (hash.Length == size) + { return hash; + } else if (hash.Length < size) { var buff = new byte[size]; diff --git a/PanoramicData.EPPlus/ExcelAddress.cs b/PanoramicData.EPPlus/ExcelAddress.cs index 252e87411..bbaa54cc0 100644 --- a/PanoramicData.EPPlus/ExcelAddress.cs +++ b/PanoramicData.EPPlus/ExcelAddress.cs @@ -367,7 +367,11 @@ private void SetWbWs(string address) } internal void ChangeWorksheet(string wsName, string newWs) { - if (_ws == wsName) _ws = newWs; + if (_ws == wsName) + { + _ws = newWs; + } + var fullAddress = GetAddress(); if (Addresses != null) @@ -403,9 +407,14 @@ private string GetAddress() } if (IsName) + { adr += GetAddress(_fromRow, _fromCol, _toRow, _toCol); + } else + { adr += GetAddress(_fromRow, _fromCol, _toRow, _toCol, _fromRowFixed, _fromColFixed, _toRowFixed, _toColFixed); + } + return adr; } #endregion @@ -810,7 +819,11 @@ private void SetAddress(ref string first, ref string second, ref bool hasSheet, hasSheet = false; if (string.IsNullOrEmpty(_firstAddress)) { - if (string.IsNullOrEmpty(_ws) || !string.IsNullOrEmpty(ws)) _ws = ws; + if (string.IsNullOrEmpty(_ws) || !string.IsNullOrEmpty(ws)) + { + _ws = ws; + } + _firstAddress = address; GetRowColFromAddress(address, out _fromRow, out _fromCol, out _toRow, out _toCol, out _fromRowFixed, out _fromColFixed, out _toRowFixed, out _toColFixed); } @@ -907,14 +920,21 @@ private static bool IsR1C1(string address) break; case 'R': if (isC) + { return false; + } + isROrC = true; break; case '[': startBracket = true; break; case ']': - if (startBracket == false) return false; + if (startBracket == false) + { + return false; + } + isROrC = false; break; case ':': @@ -944,7 +964,11 @@ private static bool IsR1C1(string address) private static bool IsAddress(string intAddress) { - if (string.IsNullOrEmpty(intAddress)) return false; + if (string.IsNullOrEmpty(intAddress)) + { + return false; + } + var cells = intAddress.Split(':'); int toRow, toCol; @@ -1063,7 +1087,10 @@ private static bool IsFormula(string address) // we need to check that this is not a table column reference in order to avoid false positives. Since function names and // formulas cannot contain [ ], we should be safe doing this check. if (addressChar is '[' or ']') + { return false; + } + if (isText == false && _formulaCharacters.Contains(addressChar)) { return true; @@ -1101,7 +1128,11 @@ internal static string GetWorksheetPart(string address, string defaultWorkSheet) } internal static string GetWorksheetPart(string address, string defaultWorkSheet, ref int endIx) { - if (address == "") return defaultWorkSheet; + if (address == "") + { + return defaultWorkSheet; + } + var ix = 0; if (address[0] == '[') { @@ -1205,12 +1236,18 @@ public ExcelAddress(string address) internal ExcelAddress(string ws, string address) : base(address) { - if (string.IsNullOrEmpty(_ws)) _ws = ws; + if (string.IsNullOrEmpty(_ws)) + { + _ws = ws; + } } internal ExcelAddress(string ws, string address, bool isName) : base(address, isName) { - if (string.IsNullOrEmpty(_ws)) _ws = ws; + if (string.IsNullOrEmpty(_ws)) + { + _ws = ws; + } } public ExcelAddress(string Address, ExcelPackage package, ExcelAddressBase referenceAddress) : @@ -1261,20 +1298,34 @@ public ExcelFormulaAddress(string address) internal ExcelFormulaAddress(string ws, string address) : base(address) { - if (string.IsNullOrEmpty(_ws)) _ws = ws; + if (string.IsNullOrEmpty(_ws)) + { + _ws = ws; + } + SetFixed(); } internal ExcelFormulaAddress(string ws, string address, bool isName) : base(address, isName) { - if (string.IsNullOrEmpty(_ws)) _ws = ws; + if (string.IsNullOrEmpty(_ws)) + { + _ws = ws; + } + if (!isName) + { SetFixed(); + } } private void SetFixed() { - if (Address.Contains('[')) return; + if (Address.Contains('[')) + { + return; + } + var address = FirstAddress; if (_fromRow == _toRow && _fromCol == _toCol) { diff --git a/PanoramicData.EPPlus/ExcelBackgroundImage.cs b/PanoramicData.EPPlus/ExcelBackgroundImage.cs index 97a76ccf4..b243df4b9 100644 --- a/PanoramicData.EPPlus/ExcelBackgroundImage.cs +++ b/PanoramicData.EPPlus/ExcelBackgroundImage.cs @@ -35,8 +35,8 @@ using System; using System.Drawing; using System.IO; -using System.Xml; using System.Runtime.Versioning; +using System.Xml; namespace OfficeOpenXml; diff --git a/PanoramicData.EPPlus/ExcelCellAddress.cs b/PanoramicData.EPPlus/ExcelCellAddress.cs index 5b8a79816..65750a7cc 100644 --- a/PanoramicData.EPPlus/ExcelCellAddress.cs +++ b/PanoramicData.EPPlus/ExcelCellAddress.cs @@ -83,9 +83,13 @@ private set _row = value; if (_column > 0) + { _address = ExcelCellBase.GetAddress(_row, _column); + } else + { _address = "#REF!"; + } } } /// @@ -106,9 +110,13 @@ private set _column = value; if (_row > 0) + { _address = ExcelCellBase.GetAddress(_row, _column); + } else + { _address = "#REF!"; + } } } /// diff --git a/PanoramicData.EPPlus/ExcelCellBase.cs b/PanoramicData.EPPlus/ExcelCellBase.cs index b9ed28c42..aeb57f22a 100644 --- a/PanoramicData.EPPlus/ExcelCellBase.cs +++ b/PanoramicData.EPPlus/ExcelCellBase.cs @@ -97,7 +97,9 @@ static internal void SplitCellID(ulong cellID, out int sheet, out int row, out i private static string Translate(string value, dlgTransl addressTranslator, int row, int col) { if (value == "") + { return ""; + } var lexer = new Lexer(SourceCodeTokenizer.R1C1, new SyntacticAnalyzer()); var tokens = lexer.Tokenize(value, null); @@ -142,7 +144,9 @@ private static string ToR1C1(string part, int row, int col) } else + { return sh + ToR1C1_1(part, row, col); + } } private static string ToR1C1_1(string part, int row, int col) { @@ -197,7 +201,9 @@ private static string ToAbs(string part, int row, int col) return p1.Equals(p2) ? p1 : sh + p1 + ":" + p2; } else + { return sh + ToAbs_1(part, row, col, true); + } } private static string ToAbs_1(string part, int row, int col, bool isSingle) { @@ -208,7 +214,10 @@ private static string ToAbs_1(string part, int row, int col, bool isSingle) //if (rStart != 0) // return part; if (rStart != 0 && cStart != 0) + { return part; + } + if (part.Length == 1) //R or C { if (rStart == 0) @@ -440,20 +449,33 @@ internal static bool GetRowColFromAddress(string CellAddress, out int FromRow, o var cells = CellAddress.Split(':'); ret = GetRowColFromAddress(cells[0], out FromRow, out FromColumn, out fixedFromRow, out fixedFromColumn); if (ret) + { ret = GetRowColFromAddress(cells[1], out ToRow, out ToColumn, out fixedToRow, out fixedToColumn); + } else { GetRowColFromAddress(cells[1], out ToRow, out ToColumn, out fixedToRow, out fixedToColumn); } if (FromColumn <= 0) + { FromColumn = 1; + } + if (FromRow <= 0) + { FromRow = 1; + } + if (ToColumn <= 0) + { ToColumn = ExcelPackage.MaxColumns; + } + if (ToRow <= 0) + { ToRow = ExcelPackage.MaxRows; + } } return ret; @@ -675,7 +697,11 @@ public static string GetAddress(int FromRow, int FromColumn, int ToRow, int ToCo public static string GetFullAddress(string worksheetName, string address) => GetFullAddress(worksheetName, address, true); internal static string GetFullAddress(string worksheetName, string address, bool fullRowCol) { - if (!string.IsNullOrEmpty(worksheetName)) worksheetName = worksheetName.Replace("'", "''"); //Makesure addresses handle single qoutes + if (!string.IsNullOrEmpty(worksheetName)) + { + worksheetName = worksheetName.Replace("'", "''"); //Makesure addresses handle single qoutes + } + if (!address.Contains("!", StringComparison.CurrentCulture) || address == "#REF!") { if (fullRowCol) @@ -710,7 +736,11 @@ internal static string GetFullAddress(string worksheetName, string address, bool #region IsValidCellAddress public static bool IsValidAddress(string address) { - if (string.IsNullOrEmpty(address.Trim())) return false; + if (string.IsNullOrEmpty(address.Trim())) + { + return false; + } + address = Utils.ConvertUtil._invariantTextInfo.ToUpper(address); var addrs = address.Split(','); foreach (var a in addrs) @@ -723,15 +753,29 @@ public static bool IsValidAddress(string address) { if (isSecond == false) { - if (r1 != "") return false; + if (r1 != "") + { + return false; + } + c1 += a[i]; - if (c1.Length > 3) return false; + if (c1.Length > 3) + { + return false; + } } else { - if (r2 != "") return false; + if (r2 != "") + { + return false; + } + c2 += a[i]; - if (c2.Length > 3) return false; + if (c2.Length > 3) + { + return false; + } } } else if (IsRow(a[i])) @@ -739,17 +783,27 @@ public static bool IsValidAddress(string address) if (isSecond == false) { r1 += a[i]; - if (r1.Length > 7) return false; + if (r1.Length > 7) + { + return false; + } } else { r2 += a[i]; - if (r2.Length > 7) return false; + if (r2.Length > 7) + { + return false; + } } } else if (a[i] == ':') { - if (isSecond || i == a.Length - 1) return false; + if (isSecond || i == a.Length - 1) + { + return false; + } + isSecond = true; } else if (a[i] == '$') @@ -807,7 +861,10 @@ public static bool IsValidAddress(string address) return false; } - if (ret == false) return false; + if (ret == false) + { + return false; + } } return true; @@ -829,9 +886,13 @@ public static bool IsValidCellAddress(string cellAddress) if (GetRowColFromAddress(cellAddress, out var row, out var col)) { if (row > 0 && col > 0 && row <= ExcelPackage.MaxRows && col <= ExcelPackage.MaxColumns) + { result = true; + } else + { result = false; + } } } catch { } @@ -908,9 +969,13 @@ internal static string UpdateFormulaReferences(string formula, int rowIncrement, // If the address was not shifted, then a.Address will still have the sheet name. var address = a.Address.Split('!'); if (address.Length > 1) + { f += address[1]; + } else + { f += a.Address; + } } @@ -939,9 +1004,15 @@ internal static string UpdateFormulaReferences(string formula, int rowIncrement, internal static string UpdateFormulaSheetReferences(string formula, string oldSheetName, string newSheetName) { if (string.IsNullOrEmpty(oldSheetName)) + { throw new ArgumentNullException(nameof(oldSheetName)); + } + if (string.IsNullOrEmpty(newSheetName)) + { throw new ArgumentNullException(nameof(newSheetName)); + } + var d = new Dictionary(); try { diff --git a/PanoramicData.EPPlus/ExcelColumn.cs b/PanoramicData.EPPlus/ExcelColumn.cs index ed04ac1ae..439e19468 100644 --- a/PanoramicData.EPPlus/ExcelColumn.cs +++ b/PanoramicData.EPPlus/ExcelColumn.cs @@ -29,10 +29,10 @@ * Jan Källman Initial Release 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ -using System; -using System.Xml; using OfficeOpenXml.Style; +using System; using System.Runtime.Versioning; +using System.Xml; namespace OfficeOpenXml; /// @@ -294,7 +294,10 @@ ulong IRangeID.RangeID _columnMin = ((int)(value >> 15) & 0x3FF); _columnMax += prevColMin - ColumnMin; //Todo:More Validation - if (_columnMax > ExcelPackage.MaxColumns) _columnMax = ExcelPackage.MaxColumns; + if (_columnMax > ExcelPackage.MaxColumns) + { + _columnMax = ExcelPackage.MaxColumns; + } } } diff --git a/PanoramicData.EPPlus/ExcelComment.cs b/PanoramicData.EPPlus/ExcelComment.cs index f610b067c..8bd45b28a 100644 --- a/PanoramicData.EPPlus/ExcelComment.cs +++ b/PanoramicData.EPPlus/ExcelComment.cs @@ -29,9 +29,9 @@ * Jan Källman Initial Release * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ +using OfficeOpenXml.Drawing.Vml; using OfficeOpenXml.Style; using System.Xml; -using OfficeOpenXml.Drawing.Vml; namespace OfficeOpenXml; diff --git a/PanoramicData.EPPlus/ExcelCommentCollection.cs b/PanoramicData.EPPlus/ExcelCommentCollection.cs index 2fb4a6c6f..585e4d3a2 100644 --- a/PanoramicData.EPPlus/ExcelCommentCollection.cs +++ b/PanoramicData.EPPlus/ExcelCommentCollection.cs @@ -28,11 +28,11 @@ ******************************************************************************* * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ +using OfficeOpenXml.Utils; using System; +using System.Collections; using System.Collections.Generic; using System.Xml; -using System.Collections; -using OfficeOpenXml.Utils; namespace OfficeOpenXml; /// diff --git a/PanoramicData.EPPlus/ExcelHeaderFooter.cs b/PanoramicData.EPPlus/ExcelHeaderFooter.cs index 4526393d7..2eea33e7a 100644 --- a/PanoramicData.EPPlus/ExcelHeaderFooter.cs +++ b/PanoramicData.EPPlus/ExcelHeaderFooter.cs @@ -37,8 +37,8 @@ using System; using System.Drawing; using System.IO; -using System.Xml; using System.Runtime.Versioning; +using System.Xml; namespace OfficeOpenXml; @@ -72,7 +72,11 @@ internal ExcelHeaderFooterText(XmlNode TextNode, ExcelWorksheet ws, string hf) { _ws = ws; _hf = hf; - if (TextNode == null || string.IsNullOrEmpty(TextNode.InnerText)) return; + if (TextNode == null || string.IsNullOrEmpty(TextNode.InnerText)) + { + return; + } + var text = TextNode.InnerText; var code = text[..2]; var startPos = 2; @@ -569,11 +573,20 @@ private static string GetText(ExcelHeaderFooterText headerFooter) { var ret = ""; if (headerFooter.LeftAlignedText != null) + { ret += "&L" + headerFooter.LeftAlignedText; + } + if (headerFooter.CenteredText != null) + { ret += "&C" + headerFooter.CenteredText; + } + if (headerFooter.RightAlignedText != null) + { ret += "&R" + headerFooter.RightAlignedText; + } + return ret; } #endregion diff --git a/PanoramicData.EPPlus/ExcelPackage.cs b/PanoramicData.EPPlus/ExcelPackage.cs index 89b14e7f0..fd95c5651 100644 --- a/PanoramicData.EPPlus/ExcelPackage.cs +++ b/PanoramicData.EPPlus/ExcelPackage.cs @@ -560,7 +560,9 @@ private void CreateFromTemplate(FileInfo template, string password) } } else + { throw new Exception("Passed invalid TemplatePath to Excel Template"); + } //return newFile; } private void ConstructNewFile(string password) diff --git a/PanoramicData.EPPlus/ExcelProtectedRangeCollection.cs b/PanoramicData.EPPlus/ExcelProtectedRangeCollection.cs index 54c1d99a4..35c538dc6 100644 --- a/PanoramicData.EPPlus/ExcelProtectedRangeCollection.cs +++ b/PanoramicData.EPPlus/ExcelProtectedRangeCollection.cs @@ -14,7 +14,10 @@ internal ExcelProtectedRangeCollection(XmlNamespaceManager nsm, XmlNode topNode, foreach (XmlNode protectedRangeNode in topNode.SelectNodes("d:protectedRanges/d:protectedRange", nsm)) { if (protectedRangeNode is not XmlElement) + { continue; + } + _baseList.Add(new ExcelProtectedRange(protectedRangeNode.Attributes["name"].Value, new ExcelAddress(SqRefUtility.FromSqRefAddress(protectedRangeNode.Attributes["sqref"].Value)), nsm, topNode)); } } @@ -59,7 +62,10 @@ public bool Remove(ExcelProtectedRange item) { DeleteAllNode("d:protectedRanges/d:protectedRange[@name='" + item.Name + "' and @sqref='" + item.Address.Address + "']"); if (_baseList.Count == 0) + { DeleteNode("d:protectedRanges"); + } + return _baseList.Remove(item); } diff --git a/PanoramicData.EPPlus/ExcelProtection.cs b/PanoramicData.EPPlus/ExcelProtection.cs index cd007f0cc..c11483d9b 100644 --- a/PanoramicData.EPPlus/ExcelProtection.cs +++ b/PanoramicData.EPPlus/ExcelProtection.cs @@ -29,8 +29,8 @@ * Jan Källman Added 10-AUG-2010 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.Encryption; +using System.Xml; namespace OfficeOpenXml; /// diff --git a/PanoramicData.EPPlus/ExcelRangeBase.cs b/PanoramicData.EPPlus/ExcelRangeBase.cs index ce4b3564f..7970170ca 100644 --- a/PanoramicData.EPPlus/ExcelRangeBase.cs +++ b/PanoramicData.EPPlus/ExcelRangeBase.cs @@ -49,10 +49,10 @@ using System.IO; using System.Linq; using System.Reflection; +using System.Runtime.Versioning; using System.Text; using System.Text.RegularExpressions; using System.Xml; -using System.Runtime.Versioning; namespace OfficeOpenXml; @@ -108,7 +108,11 @@ internal ExcelRangeBase(ExcelWorksheet xlWorksheet, string address) : _worksheet = xlWorksheet; _workbook = _worksheet.Workbook; SetRCFromTable(_worksheet._package, null); - if (string.IsNullOrEmpty(_ws)) _ws = _worksheet == null ? "" : _worksheet.Name; + if (string.IsNullOrEmpty(_ws)) + { + _ws = _worksheet == null ? "" : _worksheet.Name; + } + SetDelegate(); } internal ExcelRangeBase(ExcelWorkbook wb, ExcelWorksheet xlWorksheet, string address, bool isName) : @@ -117,7 +121,11 @@ internal ExcelRangeBase(ExcelWorkbook wb, ExcelWorksheet xlWorksheet, string add SetRCFromTable(wb._package, null); _worksheet = xlWorksheet; _workbook = wb; - if (string.IsNullOrEmpty(_ws)) _ws = (xlWorksheet?.Name); + if (string.IsNullOrEmpty(_ws)) + { + _ws = (xlWorksheet?.Name); + } + SetDelegate(); } #endregion @@ -244,13 +252,20 @@ private static void Set_Value(ExcelRangeBase range, object value, int row, int c range.SplitFormulas(range._worksheet.Cells[row, col]); } - if (sfi != null) range._worksheet._formulas.SetValue(row, col, string.Empty); + if (sfi != null) + { + range._worksheet._formulas.SetValue(row, col, string.Empty); + } + range._worksheet.SetValueInner(row, col, value); } private static void Set_Formula(ExcelRangeBase range, object value, int row, int col) { var f = range._worksheet._formulas.GetValue(row, col); - if (f is int v && v >= 0) range.SplitFormulas(range._worksheet.Cells[row, col]); + if (f is int v && v >= 0) + { + range.SplitFormulas(range._worksheet.Cells[row, col]); + } var formula = (value == null ? string.Empty : value.ToString()); if (formula == string.Empty) @@ -259,7 +274,11 @@ private static void Set_Formula(ExcelRangeBase range, object value, int row, int } else { - if (formula[0] == '=') value = formula[1..]; // remove any starting equalsign. + if (formula[0] == '=') + { + value = formula[1..]; // remove any starting equalsign. + } + range._worksheet._formulas.SetValue(row, col, formula); range._worksheet.SetValueInner(row, col, null); } @@ -662,7 +681,10 @@ private object GetValueArray() if (_fromRow == 1 && _fromCol == 1 && _toRow == ExcelPackage.MaxRows && _toCol == ExcelPackage.MaxColumns) { addr = _worksheet.Dimension; - if (addr == null) return null; + if (addr == null) + { + return null; + } } else { @@ -767,7 +789,10 @@ public void AutoFitColumns(double MinimumWidth, double MaximumWidth) var fromCol = _fromCol > _worksheet.Dimension._fromCol ? _fromCol : _worksheet.Dimension._fromCol; var toCol = _toCol < _worksheet.Dimension._toCol ? _toCol : _worksheet.Dimension._toCol; - if (fromCol > toCol) return; //Issue 15383 + if (fromCol > toCol) + { + return; //Issue 15383 + } if (Addresses == null) { @@ -809,10 +834,26 @@ public void AutoFitColumns(double MinimumWidth, double MaximumWidth) var styles = _worksheet.Workbook.Styles; var nf = styles.Fonts[styles.CellXfs[0].FontId]; var fs = FontStyle.Regular; - if (nf.Bold) fs |= FontStyle.Bold; - if (nf.UnderLine) fs |= FontStyle.Underline; - if (nf.Italic) fs |= FontStyle.Italic; - if (nf.Strike) fs |= FontStyle.Strikeout; + if (nf.Bold) + { + fs |= FontStyle.Bold; + } + + if (nf.UnderLine) + { + fs |= FontStyle.Underline; + } + + if (nf.Italic) + { + fs |= FontStyle.Italic; + } + + if (nf.Strike) + { + fs |= FontStyle.Strikeout; + } + var nfont = new Font(nf.Name, nf.Size, fs); var normalSize = Convert.ToSingle(ExcelWorkbook.GetWidthPixels(nf.Name, nf.Size)); @@ -834,9 +875,15 @@ public void AutoFitColumns(double MinimumWidth, double MaximumWidth) foreach (var cell in this) { if (_worksheet.Column(cell.Start.Column).Hidden) //Issue 15338 + { + continue; + } + + if (cell.Merge == true || cell.Style.WrapText) + { continue; + } - if (cell.Merge == true || cell.Style.WrapText) continue; var fntID = styles.CellXfs[cell.StyleID].FontId; Font f; if (fontCache.TryGetValue(fntID, out var value)) @@ -847,10 +894,26 @@ public void AutoFitColumns(double MinimumWidth, double MaximumWidth) { var fnt = styles.Fonts[fntID]; fs = FontStyle.Regular; - if (fnt.Bold) fs |= FontStyle.Bold; - if (fnt.UnderLine) fs |= FontStyle.Underline; - if (fnt.Italic) fs |= FontStyle.Italic; - if (fnt.Strike) fs |= FontStyle.Strikeout; + if (fnt.Bold) + { + fs |= FontStyle.Bold; + } + + if (fnt.UnderLine) + { + fs |= FontStyle.Underline; + } + + if (fnt.Italic) + { + fs |= FontStyle.Italic; + } + + if (fnt.Strike) + { + fs |= FontStyle.Strikeout; + } + f = new Font(fnt.Name, fnt.Size, fs); fontCache.Add(fntID, f); @@ -859,7 +922,11 @@ public void AutoFitColumns(double MinimumWidth, double MaximumWidth) var ind = styles.CellXfs[cell.StyleID].Indent; var textForWidth = cell.TextForWidth; var t = textForWidth + (ind > 0 && !string.IsNullOrEmpty(textForWidth) ? new string('_', ind) : ""); - if (t.Length > 32000) t = t[..32000]; //Issue + if (t.Length > 32000) + { + t = t[..32000]; //Issue + } + var size = g.MeasureString(t, f, 10000, StringFormat.GenericDefault); double width; @@ -923,7 +990,11 @@ private void SetMinWidth(double minimumWidth, int fromCol, int toCol) private string GetFormattedText(bool forWidthCalc) { var v = Value; - if (v == null) return ""; + if (v == null) + { + return ""; + } + var styles = Worksheet.Workbook.Styles; var nfID = styles.CellXfs[StyleID].NumberFormatId; ExcelNumberFormatXml.ExcelFormatTranslator nf = null; @@ -1114,7 +1185,10 @@ public string FormulaR1C1 set { IsRangeValid("FormulaR1C1"); - if (value.Length > 0 && value[0] == '=') value = value[1..]; // remove any starting equalsign. + if (value.Length > 0 && value[0] == '=') + { + value = value[1..]; // remove any starting equalsign. + } if (value == null || value.Trim() == "") { @@ -1209,7 +1283,11 @@ public bool AutoFilter { IsRangeValid("autofilter"); var address = _worksheet.AutoFilterAddress; - if (address == null) return false; + if (address == null) + { + return false; + } + return _fromRow >= address.Start.Row && _toRow <= address.End.Row @@ -1372,7 +1450,9 @@ public ExcelComment Comment } } else + { fullAddress = GetFullAddress(_worksheet.Name, _address); + } return fullAddress; } @@ -1395,7 +1475,11 @@ public string FullAddressAbsolute fullAddress = ""; foreach (var a in Addresses) { - if (fullAddress != "") fullAddress += ","; + if (fullAddress != "") + { + fullAddress += ","; + } + if (a.Address == "#REF!") { fullAddress += GetFullAddress(wbwsRef, "#REF!"); @@ -1428,7 +1512,11 @@ internal string FullAddressAbsoluteNoFullRowCol fullAddress = ""; foreach (var a in Addresses) { - if (fullAddress != "") fullAddress += ","; + if (fullAddress != "") + { + fullAddress += ","; + } + fullAddress += GetFullAddress(wbwsRef, GetAddress(a.Start.Row, a.Start.Column, a.End.Row, a.End.Column, true), false); ; } } @@ -1564,7 +1652,9 @@ private void SplitFormula(ExcelAddressBase address, int ix) } if (fRange._fromRow < address._fromRow) + { f.StartRow = address._fromRow; + } else { f.StartRow = fRange._fromRow; @@ -1603,7 +1693,9 @@ private void SplitFormula(ExcelAddressBase address, int ix) f.StartCol = address._toCol + 1; if (address._fromRow < fRange._fromRow) + { f.StartRow = fRange._fromRow; + } else { f.StartRow = address._fromRow; @@ -1650,7 +1742,10 @@ private void SplitFormula(ExcelAddressBase address, int ix) } private static object ConvertData(ExcelTextFormat Format, string v, int col, bool isText) { - if (isText && (Format.DataTypes == null || Format.DataTypes.Length < col)) return string.IsNullOrEmpty(v) ? null : v; + if (isText && (Format.DataTypes == null || Format.DataTypes.Length < col)) + { + return string.IsNullOrEmpty(v) ? null : v; + } double d; DateTime dt; @@ -1852,10 +1947,17 @@ public ExcelRangeBase LoadFromArrays(IEnumerable Data) foreach (var item in Data) { rowArray.Add(item); - if (maxColumn < item.Length) maxColumn = item.Length; + if (maxColumn < item.Length) + { + maxColumn = item.Length; + } + } + + if (rowArray.Count == 0) + { + return null; //Issue #57 } - if (rowArray.Count == 0) return null; //Issue #57 _worksheet._values.SetRangeValueSpecial(_fromRow, _fromCol, _fromRow + rowArray.Count - 1, _fromCol + maxColumn - 1, (List list, int index, int rowIx, int columnIx, object value) => { @@ -1863,9 +1965,16 @@ public ExcelRangeBase LoadFromArrays(IEnumerable Data) columnIx -= _fromCol; var values = ((List)value); - if (values.Count <= rowIx) return; + if (values.Count <= rowIx) + { + return; + } + var item = values[rowIx]; - if (item.Length <= columnIx) return; + if (item.Length <= columnIx) + { + return; + } var val = item[columnIx]; if (val != null && val != DBNull.Value && !string.IsNullOrEmpty(val.ToString())) @@ -2147,11 +2256,17 @@ public ExcelRangeBase LoadFromText(string Text, ExcelTextFormat Format) } if (lineQCount % 2 == 1) + { throw (new Exception(string.Format("Text delimiter is not closed in line : {0}", line))); + } //_worksheet.SetValueInner(row, col, ConvertData(Format, v, col - _fromCol, isText)); items.Add(ConvertData(Format, v, col, isText)); - if (col > maxCol) maxCol = col; + if (col > maxCol) + { + maxCol = col; + } + row++; } @@ -2164,7 +2279,10 @@ public ExcelRangeBase LoadFromText(string Text, ExcelTextFormat Format) rowIx -= _fromRow; columnIx -= _fromCol; var item = values[rowIx]; - if (item == null || item.Count <= columnIx) return; + if (item == null || item.Count <= columnIx) + { + return; + } list[index] = new ExcelCoreValue { _value = item[columnIx], _styleId = list[index]._styleId }; }, values); @@ -2174,7 +2292,11 @@ public ExcelRangeBase LoadFromText(string Text, ExcelTextFormat Format) private static string[] GetLines(string text, ExcelTextFormat Format) { - if (Format.EOL == null || Format.EOL.Length == 0) return [text]; + if (Format.EOL == null || Format.EOL.Length == 0) + { + return [text]; + } + var eol = Format.EOL; var list = new List(); var inTQ = false; @@ -2218,7 +2340,9 @@ private static bool IsEOL(string text, int ix, string eol) for (var i = 0; i < eol.Length; i++) { if (text[ix + i] != eol[i]) + { return false; + } } return ix + eol.Length <= text.Length; @@ -2798,7 +2922,10 @@ public int Compare(SortItem x, SortItem y) ret = isNumX ? -1 : 1; } - if (ret != 0) return ret * (descending[i] ? -1 : 1); + if (ret != 0) + { + return ret * (descending[i] ? -1 : 1); + } } return 0; diff --git a/PanoramicData.EPPlus/ExcelRow.cs b/PanoramicData.EPPlus/ExcelRow.cs index 078ad2836..22a5325b0 100644 --- a/PanoramicData.EPPlus/ExcelRow.cs +++ b/PanoramicData.EPPlus/ExcelRow.cs @@ -30,9 +30,9 @@ * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ +using OfficeOpenXml.Style; using System; using System.Xml; -using OfficeOpenXml.Style; namespace OfficeOpenXml; internal class RowInternal diff --git a/PanoramicData.EPPlus/ExcelSheetProtection.cs b/PanoramicData.EPPlus/ExcelSheetProtection.cs index af2be890f..09c8184f5 100644 --- a/PanoramicData.EPPlus/ExcelSheetProtection.cs +++ b/PanoramicData.EPPlus/ExcelSheetProtection.cs @@ -29,8 +29,8 @@ * Jan Källman Initial Release 2010-03-14 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ -using System.Xml; using OfficeOpenXml.Encryption; +using System.Xml; namespace OfficeOpenXml; @@ -307,7 +307,10 @@ public bool AllowPivotTables /// public void SetPassword(string Password) { - if (IsProtected == false) IsProtected = true; + if (IsProtected == false) + { + IsProtected = true; + } Password = Password.Trim(); if (Password == "") diff --git a/PanoramicData.EPPlus/ExcelStyleCollection.cs b/PanoramicData.EPPlus/ExcelStyleCollection.cs index c38a1c253..571eb2594 100644 --- a/PanoramicData.EPPlus/ExcelStyleCollection.cs +++ b/PanoramicData.EPPlus/ExcelStyleCollection.cs @@ -80,8 +80,16 @@ public T this[int PositionID] internal int Add(string key, T item) { _list.Add(item); - if (!_dic.ContainsKey(key.ToLower(CultureInfo.InvariantCulture))) _dic.Add(key.ToLower(CultureInfo.InvariantCulture), _list.Count - 1); - if (_setNextIdManual) NextId++; + if (!_dic.ContainsKey(key.ToLower(CultureInfo.InvariantCulture))) + { + _dic.Add(key.ToLower(CultureInfo.InvariantCulture), _list.Count - 1); + } + + if (_setNextIdManual) + { + NextId++; + } + return _list.Count - 1; } /// diff --git a/PanoramicData.EPPlus/ExcelStyles.cs b/PanoramicData.EPPlus/ExcelStyles.cs index f0913122c..f183f0b29 100644 --- a/PanoramicData.EPPlus/ExcelStyles.cs +++ b/PanoramicData.EPPlus/ExcelStyles.cs @@ -29,14 +29,14 @@ * Jan Källman Initial Release 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ -using System; -using System.Xml; -using System.Linq; -using System.Collections.Generic; +using OfficeOpenXml.ConditionalFormatting.Rules; using OfficeOpenXml.Style; -using OfficeOpenXml.Style.XmlAccess; using OfficeOpenXml.Style.Dxf; -using OfficeOpenXml.ConditionalFormatting.Rules; +using OfficeOpenXml.Style.XmlAccess; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml; namespace OfficeOpenXml; /// @@ -81,7 +81,10 @@ private void LoadFromDocument() { ExcelNumberFormatXml nf = new(_nameSpaceManager, n); NumberFormats.Add(nf.Id, nf); - if (nf.NumFmtId >= NumberFormats.NextId) NumberFormats.NextId = nf.NumFmtId + 1; + if (nf.NumFmtId >= NumberFormats.NextId) + { + NumberFormats.NextId = nf.NumFmtId + 1; + } } } @@ -161,7 +164,11 @@ private void LoadFromDocument() } internal ExcelStyle GetStyleObject(int Id, int PositionID, string Address) { - if (Id < 0) Id = 0; + if (Id < 0) + { + Id = 0; + } + return new ExcelStyle(this, PropertyChange, PositionID, Address, Id); } /// @@ -314,7 +321,11 @@ private void SetStyleAddress(StyleBase sender, Style.StyleChangeEventArgs e, Exc cse = new CellsStoreEnumerator(ws._values, 1, 0, address._toRow, 0); while (cse.Next()) { - if (cse.Value._styleId == 0) continue; + if (cse.Value._styleId == 0) + { + continue; + } + for (var c = address._fromCol; c <= address._toCol; c++) { if (!ws.ExistsStyleInner(cse.Row, c)) @@ -349,7 +360,11 @@ private void SetStyleAddress(StyleBase sender, Style.StyleChangeEventArgs e, Exc while (cse.Next()) { s = cse.Value._styleId; - if (s == 0) continue; + if (s == 0) + { + continue; + } + if (ws.GetValueInner(cse.Row, cse.Column) is ExcelColumn c && c.ColumnMax < ExcelPackage.MaxColumns) { for (var col = c.ColumnMin; col < c.ColumnMax; col++) @@ -384,7 +399,11 @@ private void SetStyleAddress(StyleBase sender, Style.StyleChangeEventArgs e, Exc while (cse2.Next()) { var s = cse2.Value._styleId; - if (s == 0) continue; + if (s == 0) + { + continue; + } + if (styleCashe.TryGetValue(s, out var value)) { ws.SetStyleInner(cse2.Row, cse2.Column, value); @@ -402,7 +421,11 @@ private void SetStyleAddress(StyleBase sender, Style.StyleChangeEventArgs e, Exc cse2 = new CellsStoreEnumerator(ws._values, 0, 1, 0, address._toCol); while (cse2.Next()) { - if (cse2.Value._styleId == 0) continue; + if (cse2.Value._styleId == 0) + { + continue; + } + for (var r = address._fromRow; r <= address._toRow; r++) { if (!ws.ExistsStyleInner(r, cse2.Column)) @@ -436,12 +459,20 @@ private void SetStyleAddress(StyleBase sender, Style.StyleChangeEventArgs e, Exc if (s == 0 && !ws.ExistsStyleInner(row, 0, ref s)) { // get row styleId with cache - if (!rowCache.ContainsKey(row)) rowCache.Add(row, ws._values.GetValue(row, 0)._styleId); + if (!rowCache.ContainsKey(row)) + { + rowCache.Add(row, ws._values.GetValue(row, 0)._styleId); + } + s = rowCache[row]; if (s == 0) { // get column styleId with cache - if (!colCache.ContainsKey(column)) colCache.Add(column, ws._values.GetValue(0, column)); + if (!colCache.ContainsKey(column)) + { + colCache.Add(column, ws._values.GetValue(0, column)); + } + s = colCache[column]._styleId; if (s == 0) { @@ -449,7 +480,11 @@ private void SetStyleAddress(StyleBase sender, Style.StyleChangeEventArgs e, Exc if (ws._values.PrevCell(ref r, ref c)) { //var val = ws._values.GetValue(0, c); - if (!colCache.ContainsKey(c)) colCache.Add(c, ws._values.GetValue(0, c)); + if (!colCache.ContainsKey(c)) + { + colCache.Add(c, ws._values.GetValue(0, c)); + } + var val = colCache[c]; var colObj = (ExcelColumn)(val._value); if (colObj != null && colObj.ColumnMax >= column) //Fixes issue 15174 @@ -771,8 +806,15 @@ public void UpdateXml() cellStyleNode.AppendChild(style.CreateXmlNode(_styleXml.CreateElement("cellStyle", ExcelPackage.schemaMain))); } - if (cellStyleNode != null) (cellStyleNode as XmlElement).SetAttribute("count", count.ToString()); - if (styleXfsNode != null) (styleXfsNode as XmlElement).SetAttribute("count", count.ToString()); + if (cellStyleNode != null) + { + (cellStyleNode as XmlElement).SetAttribute("count", count.ToString()); + } + + if (styleXfsNode != null) + { + (styleXfsNode as XmlElement).SetAttribute("count", count.ToString()); + } //CellStyle var xfix = 0; @@ -794,7 +836,11 @@ public void UpdateXml() var dxfsNode = _styleXml.SelectSingleNode(dxfsPath, _nameSpaceManager); foreach (var ws in _wb.Worksheets) { - if (ws is ExcelChartsheet) continue; + if (ws is ExcelChartsheet) + { + continue; + } + foreach (var cf in ws.ConditionalFormatting) { if (cf.Style.HasValue) @@ -816,7 +862,10 @@ public void UpdateXml() } } - if (dxfsNode != null) (dxfsNode as XmlElement).SetAttribute("count", Dxfs.Count.ToString()); + if (dxfsNode != null) + { + (dxfsNode as XmlElement).SetAttribute("count", Dxfs.Count.ToString()); + } } private void AddNamedStyle(int id, XmlNode styleXfsNode, XmlNode cellXfsNode, ExcelNamedStyleXml style) @@ -833,16 +882,24 @@ private void AddNamedStyle(int id, XmlNode styleXfsNode, XmlNode cellXfsNode, Ex } else { - if (id < 0) CellXfs[ix].XfId = id; + if (id < 0) + { + CellXfs[ix].XfId = id; + } + cellXfsNode.AppendChild(CellXfs[ix].CreateXmlNode(_styleXml.CreateElement("xf", ExcelPackage.schemaMain))); CellXfs[ix].useCnt = 0; CellXfs[ix].newID = id; } if (style.XfId >= 0) + { style.XfId = CellXfs[style.XfId].newID; + } else + { style.XfId = 0; + } } private void RemoveUnusedStyles() @@ -870,9 +927,20 @@ private void RemoveUnusedStyles() { if (xf.useCnt > 0) { - if (xf.FontId >= 0) Fonts[xf.FontId].useCnt++; - if (xf.FillId >= 0) Fills[xf.FillId].useCnt++; - if (xf.BorderId >= 0) Borders[xf.BorderId].useCnt++; + if (xf.FontId >= 0) + { + Fonts[xf.FontId].useCnt++; + } + + if (xf.FillId >= 0) + { + Fills[xf.FillId].useCnt++; + } + + if (xf.BorderId >= 0) + { + Borders[xf.BorderId].useCnt++; + } } } @@ -880,9 +948,20 @@ private void RemoveUnusedStyles() { if (xf.useCnt > 0) { - if (xf.FontId >= 0) Fonts[xf.FontId].useCnt++; - if (xf.FillId >= 0) Fills[xf.FillId].useCnt++; - if (xf.BorderId >= 0) Borders[xf.BorderId].useCnt++; + if (xf.FontId >= 0) + { + Fonts[xf.FontId].useCnt++; + } + + if (xf.FillId >= 0) + { + Fills[xf.FillId].useCnt++; + } + + if (xf.BorderId >= 0) + { + Borders[xf.BorderId].useCnt++; + } } } } diff --git a/PanoramicData.EPPlus/ExcelTextFormat.cs b/PanoramicData.EPPlus/ExcelTextFormat.cs index 00f4040a8..6924233cb 100644 --- a/PanoramicData.EPPlus/ExcelTextFormat.cs +++ b/PanoramicData.EPPlus/ExcelTextFormat.cs @@ -29,8 +29,8 @@ * Jan Källman Initial Release 2011-01-01 * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ -using System.Text; using System.Globalization; +using System.Text; namespace OfficeOpenXml; diff --git a/PanoramicData.EPPlus/ExcelWorkbook.cs b/PanoramicData.EPPlus/ExcelWorkbook.cs index ddf6f300b..750a5fe28 100644 --- a/PanoramicData.EPPlus/ExcelWorkbook.cs +++ b/PanoramicData.EPPlus/ExcelWorkbook.cs @@ -262,8 +262,15 @@ internal void GetDefinedNames() } } - if (elem.GetAttribute("hidden") == "1" && namedRange != null) namedRange.IsNameHidden = true; - if (!string.IsNullOrEmpty(elem.GetAttribute("comment"))) namedRange.NameComment = elem.GetAttribute("comment"); + if (elem.GetAttribute("hidden") == "1" && namedRange != null) + { + namedRange.IsNameHidden = true; + } + + if (!string.IsNullOrEmpty(elem.GetAttribute("comment"))) + { + namedRange.NameComment = elem.GetAttribute("comment"); + } } } } @@ -529,7 +536,11 @@ internal bool ExistsPivotCache(int cacheID, ref int newID) } } - if (ret) newID = cacheID; //Not Found, return same ID + if (ret) + { + newID = cacheID; //Not Found, return same ID + } + return ret; } @@ -570,7 +581,9 @@ public bool Date1904 private void CreateWorkbookXml(XmlNamespaceManager namespaceManager) { if (_package.Package.PartExists(WorkbookUri)) + { _workbookXml = _package.GetXmlFromUri(WorkbookUri); + } else { // create a new workbook part and add to the package @@ -615,7 +628,9 @@ public XmlDocument StylesXml if (_stylesXml == null) { if (_package.Package.PartExists(StylesUri)) + { _stylesXml = _package.GetXmlFromUri(StylesUri); + } else { // create a new styles part and add to the package @@ -750,7 +765,9 @@ public bool FullCalcOnLoad internal void Save() // Workbook Save { if (Worksheets.Count == 0) + { throw new InvalidOperationException("The workbook must contain at least one worksheet"); + } DeleteCalcChain(); @@ -919,7 +936,11 @@ private void UpdateDefinedNamesXml() var top = WorkbookXml.SelectSingleNode("//d:definedNames", NameSpaceManager); if (!ExistsNames()) { - if (top != null) TopNode.RemoveChild(top); + if (top != null) + { + TopNode.RemoveChild(top); + } + return; } else @@ -940,8 +961,16 @@ private void UpdateDefinedNamesXml() var elem = WorkbookXml.CreateElement("definedName", ExcelPackage.schemaMain); top.AppendChild(elem); elem.SetAttribute("name", name.Name); - if (name.IsNameHidden) elem.SetAttribute("hidden", "1"); - if (!string.IsNullOrEmpty(name.NameComment)) elem.SetAttribute("comment", name.NameComment); + if (name.IsNameHidden) + { + elem.SetAttribute("hidden", "1"); + } + + if (!string.IsNullOrEmpty(name.NameComment)) + { + elem.SetAttribute("comment", name.NameComment); + } + SetNameElement(name, elem); } } @@ -956,8 +985,16 @@ private void UpdateDefinedNamesXml() top.AppendChild(elem); elem.SetAttribute("name", name.Name); elem.SetAttribute("localSheetId", name.LocalSheetId.ToString()); - if (name.IsNameHidden) elem.SetAttribute("hidden", "1"); - if (!string.IsNullOrEmpty(name.NameComment)) elem.SetAttribute("comment", name.NameComment); + if (name.IsNameHidden) + { + elem.SetAttribute("hidden", "1"); + } + + if (!string.IsNullOrEmpty(name.NameComment)) + { + elem.SetAttribute("comment", name.NameComment); + } + SetNameElement(name, elem); } } @@ -1008,7 +1045,11 @@ private bool ExistsNames() { foreach (var ws in Worksheets) { - if (ws is ExcelChartsheet) continue; + if (ws is ExcelChartsheet) + { + continue; + } + if (ws.Names.Count > 0) { return true; @@ -1122,7 +1163,11 @@ public void Dispose() internal void ReadAllTables() { - if (_nextTableID > 0) return; + if (_nextTableID > 0) + { + return; + } + _nextTableID = 1; _nextPivotTableID = 1; foreach (var ws in Worksheets) diff --git a/PanoramicData.EPPlus/ExcelWorksheet.cs b/PanoramicData.EPPlus/ExcelWorksheet.cs index 97875dda3..a4dc623cf 100644 --- a/PanoramicData.EPPlus/ExcelWorksheet.cs +++ b/PanoramicData.EPPlus/ExcelWorksheet.cs @@ -475,7 +475,11 @@ public string Name get { return (_name); } set { - if (value == _name) return; + if (value == _name) + { + return; + } + value = ExcelWorksheets.ValidateFixSheetName(value); foreach (var ws in Workbook.Worksheets) { @@ -643,7 +647,11 @@ public double DefaultColWidth var mfw = Convert.ToDouble(Workbook.MaxFontWidth); var widthPx = mfw * 7; var margin = Math.Truncate(mfw / 4 + 0.999) * 2 + 1; - if (margin < 5) margin = 5; + if (margin < 5) + { + margin = 5; + } + while (Math.Truncate((widthPx - margin) / mfw * 100 + 0.5) / 100 < 8) { widthPx++; @@ -861,9 +869,13 @@ private void CreateXml() //first char is invalid sometimes?? if (xml[0] != '<') + { LoadXmlSafe(_worksheetXml, xml[1..], encoding); + } else + { LoadXmlSafe(_worksheetXml, xml, encoding); + } _package.DoAdjustDrawings = doAdjust; ClearNodes(); @@ -876,7 +888,11 @@ private void CreateXml() /// private static int GetAttributeLength(XmlReader xr) { - if (xr.NodeType != XmlNodeType.Element) return 0; + if (xr.NodeType != XmlNodeType.Element) + { + return 0; + } + var length = 0; for (var i = 0; i < xr.AttributeCount; i++) @@ -889,7 +905,11 @@ private static int GetAttributeLength(XmlReader xr) } private void LoadRowPageBreakes(XmlReader xr) { - if (!ReadUntil(xr, "rowBreaks", "colBreaks")) return; + if (!ReadUntil(xr, "rowBreaks", "colBreaks")) + { + return; + } + while (xr.Read()) { if (xr.LocalName == "brk") @@ -910,7 +930,11 @@ private void LoadRowPageBreakes(XmlReader xr) } private void LoadColPageBreakes(XmlReader xr) { - if (!ReadUntil(xr, "colBreaks")) return; + if (!ReadUntil(xr, "colBreaks")) + { + return; + } + while (xr.Read()) { if (xr.LocalName == "brk") @@ -1054,11 +1078,18 @@ private static void GetBlockPos(string xml, string tag, ref int start, ref int e } private static bool ReadUntil(XmlReader xr, params string[] tagName) { - if (xr.EOF) return false; + if (xr.EOF) + { + return false; + } + while (!Array.Exists(tagName, tag => ConvertUtil._invariantCompareInfo.IsSuffix(xr.LocalName, tag))) { xr.Read(); - if (xr.EOF) return false; + if (xr.EOF) + { + return false; + } } return (ConvertUtil._invariantCompareInfo.IsSuffix(xr.LocalName, tagName[0])); @@ -1070,8 +1101,16 @@ private void LoadColumns(XmlReader xr)//(string xml) { while (xr.Read()) { - if (xr.NodeType == XmlNodeType.Whitespace) continue; - if (xr.LocalName != "col") break; + if (xr.NodeType == XmlNodeType.Whitespace) + { + continue; + } + + if (xr.LocalName != "col") + { + break; + } + if (xr.NodeType == XmlNodeType.Element) { var min = int.Parse(xr.GetAttribute("min")); @@ -1108,7 +1147,10 @@ private static bool ReadXmlReaderUntil(XmlReader xr, string nodeText, string alt { do { - if (xr.LocalName == nodeText || xr.LocalName == altNode) return true; + if (xr.LocalName == nodeText || xr.LocalName == altNode) + { + return true; + } } while (xr.Read()); return false; @@ -1120,7 +1162,11 @@ private static bool ReadXmlReaderUntil(XmlReader xr, string nodeText, string alt /// The reader private void LoadHyperLinks(XmlReader xr) { - if (!ReadUntil(xr, "hyperlinks", "rowBreaks", "colBreaks")) return; + if (!ReadUntil(xr, "hyperlinks", "rowBreaks", "colBreaks")) + { + return; + } + while (xr.Read()) { if (xr.LocalName == "hyperlink") @@ -1390,7 +1436,11 @@ private void LoadMergeCells(XmlReader xr) { while (xr.Read()) { - if (xr.LocalName != "mergeCell") break; + if (xr.LocalName != "mergeCell") + { + break; + } + if (xr.NodeType == XmlNodeType.Element) { var address = xr.GetAttribute("ref"); @@ -1702,9 +1752,13 @@ internal ExcelColumn CopyColumn(ExcelColumn c, int col, int maxCol) ColumnMax = maxCol < ExcelPackage.MaxColumns ? maxCol : ExcelPackage.MaxColumns }; if (c.StyleName != "") + { newC.StyleName = c.StyleName; + } else + { newC.StyleID = c.StyleID; + } newC.OutlineLevel = c.OutlineLevel; newC.Phonetic = c.Phonetic; @@ -1826,7 +1880,11 @@ public void InsertRow(int rowFrom, int rows, int copyStylesFromRow) foreach (var f in _sharedFormulas.Values) { - if (f.StartRow >= rowFrom) f.StartRow += rows; + if (f.StartRow >= rowFrom) + { + f.StartRow += rows; + } + var a = new ExcelAddressBase(f.Address); if (a._fromRow >= rowFrom) { @@ -1857,7 +1915,11 @@ public void InsertRow(int rowFrom, int rows, int copyStylesFromRow) var cseS = new CellsStoreEnumerator(_values, copyStylesFromRow, 0, copyStylesFromRow, ExcelPackage.MaxColumns); //Fixes issue 15068 , 15090 while (cseS.Next()) { - if (cseS.Value._styleId == 0) continue; + if (cseS.Value._styleId == 0) + { + continue; + } + for (var r = 0; r < rows; r++) { SetStyleInner(rowFrom + r, cseS.Column, cseS.Value._styleId); @@ -1945,7 +2007,11 @@ public void InsertColumn(int columnFrom, int columns, int copyStylesFromColumn) foreach (var f in _sharedFormulas.Values) { - if (f.StartCol >= columnFrom) f.StartCol += columns; + if (f.StartCol >= columnFrom) + { + f.StartCol += columns; + } + var a = new ExcelAddressBase(f.Address); if (a._fromCol >= columnFrom) { @@ -2030,7 +2096,11 @@ public void InsertColumn(int columnFrom, int columns, int copyStylesFromColumn) { while (sce.Next()) { - if (sce.Value._styleId == 0) continue; + if (sce.Value._styleId == 0) + { + continue; + } + l.Add([sce.Row, sce.Value._styleId]); } } @@ -2847,9 +2917,15 @@ private void UpdateCrossSheetReferences(string sheetWhoseReferencesShouldBeUpdat private void UpdateCrossSheetReferenceNames(string oldName, string newName) { if (string.IsNullOrEmpty(oldName)) + { throw new ArgumentNullException(nameof(oldName)); + } + if (string.IsNullOrEmpty(newName)) + { throw new ArgumentNullException(nameof(newName)); + } + lock (this) { foreach (var f in _sharedFormulas.Values) @@ -2879,7 +2955,9 @@ internal void Save() { // save the header & footer (if defined) if (_headerFooter != null) + { HeaderFooter.Save(); + } var d = Dimension; if (d == null) @@ -3174,7 +3252,11 @@ private void SaveTables() internal void SetTableTotalFunction(ExcelTable tbl, ExcelTableColumn col, int colNum = -1) { - if (tbl.ShowTotal == false) return; + if (tbl.ShowTotal == false) + { + return; + } + if (colNum == -1) { for (var i = 0; i < tbl.Columns.Count; i++) @@ -3232,7 +3314,10 @@ internal void SetTableTotalFunction(ExcelTable tbl, ExcelTableColumn col, int co internal void SetFormula(int row, int col, object value) { _formulas.SetValue(row, col, value); - if (!ExistsValueInner(row, col)) SetValueInner(row, col, null); + if (!ExistsValueInner(row, col)) + { + SetValueInner(row, col, null); + } } //internal void SetStyle(int row, int col, int value) //{ @@ -3314,7 +3399,11 @@ private void SavePivotTables() var flds = new HashSet(); foreach (XmlElement node in fields) { - if (ix >= pt.CacheDefinition.SourceRange.Columns) break; + if (ix >= pt.CacheDefinition.SourceRange.Columns) + { + break; + } + var fldName = node.GetAttribute("name"); //Fixes issue 15295 dup name error if (string.IsNullOrEmpty(fldName)) { @@ -3673,9 +3762,13 @@ private void UpdateRowCellData(StreamWriter sw) { var enumerator = enumerableResult.GetEnumerator(); if (enumerator.MoveNext() && enumerator.Current != null) + { v = enumerator.Current; + } else + { v = string.Empty; + } } if ((TypeCompat.IsPrimitive(v) || v is double || v is decimal || v is DateTime || v is TimeSpan)) @@ -3726,7 +3819,11 @@ private void UpdateRowCellData(StreamWriter sw) _columnStyles = null; - if (row != -1) cache.Append(""); + if (row != -1) + { + cache.Append(""); + } + cache.Append(""); sw.Write(cache.ToString()); sw.Flush(); @@ -3896,7 +3993,10 @@ private string GetValueForXml(object v) } private void WriteRow(StringBuilder cache, ExcelStyleCollection cellXfs, int prevRow, int row) { - if (prevRow != -1) cache.Append(""); + if (prevRow != -1) + { + cache.Append(""); + } //ulong rowID = ExcelRow.GetRowID(SheetID, row); cache.AppendFormat(" cellXf } private void WriteRow(StreamWriter sw, ExcelStyleCollection cellXfs, int prevRow, int row) { - if (prevRow != -1) sw.Write(""); + if (prevRow != -1) + { + sw.Write(""); + } //ulong rowID = ExcelRow.GetRowID(SheetID, row); sw.Write(" @@ -324,9 +335,13 @@ public bool PageLayoutView set { if (value) + { SetXmlNodeString("@view", "pageLayout"); + } else + { SheetViewElement.RemoveAttribute("view"); + } } } /// @@ -341,9 +356,13 @@ public bool PageBreakView set { if (value) + { SetXmlNodeString("@view", "pageBreakPreview"); + } else + { SheetViewElement.RemoveAttribute("view"); + } } } /// @@ -436,7 +455,11 @@ public ExcelWorksheetPanes[] Panes public void FreezePanes(int Row, int Column) { //TODO:fix this method to handle splits as well. - if (Row == 1 && Column == 1) UnFreezePanes(); + if (Row == 1 && Column == 1) + { + UnFreezePanes(); + } + string sqRef = SelectedRange, activeCell = ActiveCell; var paneNode = TopNode.SelectSingleNode(_paneNodePath, NameSpaceManager) as XmlElement; @@ -447,8 +470,16 @@ public void FreezePanes(int Row, int Column) } paneNode.RemoveAll(); //Clear all attributes - if (Column > 1) paneNode.SetAttribute("xSplit", (Column - 1).ToString()); - if (Row > 1) paneNode.SetAttribute("ySplit", (Row - 1).ToString()); + if (Column > 1) + { + paneNode.SetAttribute("xSplit", (Column - 1).ToString()); + } + + if (Row > 1) + { + paneNode.SetAttribute("ySplit", (Row - 1).ToString()); + } + paneNode.SetAttribute("topLeftCell", ExcelCellBase.GetAddress(Row, Column)); paneNode.SetAttribute("state", "frozen"); @@ -459,8 +490,16 @@ public void FreezePanes(int Row, int Column) paneNode.SetAttribute("activePane", "bottomLeft"); var sel = TopNode.OwnerDocument.CreateElement("selection", ExcelPackage.schemaMain); sel.SetAttribute("pane", "bottomLeft"); - if (activeCell != "") sel.SetAttribute("activeCell", activeCell); - if (sqRef != "") sel.SetAttribute("sqref", sqRef); + if (activeCell != "") + { + sel.SetAttribute("activeCell", activeCell); + } + + if (sqRef != "") + { + sel.SetAttribute("sqref", sqRef); + } + sel.SetAttribute("sqref", sqRef); TopNode.InsertAfter(sel, paneNode); } @@ -469,8 +508,16 @@ public void FreezePanes(int Row, int Column) paneNode.SetAttribute("activePane", "topRight"); var sel = TopNode.OwnerDocument.CreateElement("selection", ExcelPackage.schemaMain); sel.SetAttribute("pane", "topRight"); - if (activeCell != "") sel.SetAttribute("activeCell", activeCell); - if (sqRef != "") sel.SetAttribute("sqref", sqRef); + if (activeCell != "") + { + sel.SetAttribute("activeCell", activeCell); + } + + if (sqRef != "") + { + sel.SetAttribute("sqref", sqRef); + } + TopNode.InsertAfter(sel, paneNode); } else @@ -492,8 +539,16 @@ public void FreezePanes(int Row, int Column) var sel3 = TopNode.OwnerDocument.CreateElement("selection", ExcelPackage.schemaMain); sel3.SetAttribute("pane", "bottomRight"); - if (activeCell != "") sel3.SetAttribute("activeCell", activeCell); - if (sqRef != "") sel3.SetAttribute("sqref", sqRef); + if (activeCell != "") + { + sel3.SetAttribute("activeCell", activeCell); + } + + if (sqRef != "") + { + sel3.SetAttribute("sqref", sqRef); + } + sel2.ParentNode.InsertAfter(sel3, sel2); } diff --git a/PanoramicData.EPPlus/ExcelWorksheets.cs b/PanoramicData.EPPlus/ExcelWorksheets.cs index 789f24a09..3b2a87dcb 100644 --- a/PanoramicData.EPPlus/ExcelWorksheets.cs +++ b/PanoramicData.EPPlus/ExcelWorksheets.cs @@ -76,7 +76,9 @@ internal ExcelWorksheets(ExcelPackage pck, XmlNamespaceManager nsm, XmlNode topN var hidden = eWorkSheetHidden.Visible; XmlNode attr = sheetNode.Attributes["state"]; if (attr != null) + { hidden = TranslateHidden(attr.Value); + } var sheetRelation = pck.Workbook.Part.GetRelationship(relId); var uriWorksheet = UriHelper.ResolvePartUri(pck.Workbook.WorkbookUri, sheetRelation.TargetUri); @@ -354,7 +356,10 @@ private void CopyTable(ExcelWorksheet Copy, ExcelWorksheet added) //var uriTbl = new Uri(string.Format("/xl/tables/table{0}.xml", Id), UriKind.Relative); var uriTbl = GetNewUri(_pck.Package, "/xl/tables/table{0}.xml", ref Id); - if (_pck.Workbook._nextTableID < Id) _pck.Workbook._nextTableID = Id; + if (_pck.Workbook._nextTableID < Id) + { + _pck.Workbook._nextTableID = Id; + } var part = _pck.Package.CreatePart(uriTbl, "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml", _pck.Compression); StreamWriter streamTbl = new(part.GetStream(FileMode.Create, FileAccess.Write)); @@ -431,7 +436,11 @@ private void CopyPivotTable(ExcelWorksheet Copy, ExcelWorksheet added) var Id = _pck.Workbook._nextPivotTableID++; var uriTbl = GetNewUri(_pck.Package, "/xl/pivotTables/pivotTable{0}.xml", ref Id); - if (_pck.Workbook._nextPivotTableID < Id) _pck.Workbook._nextPivotTableID = Id; + if (_pck.Workbook._nextPivotTableID < Id) + { + _pck.Workbook._nextPivotTableID = Id; + } + var partTbl = _pck.Package.CreatePart(uriTbl, ExcelPackage.schemaPivotTable, _pck.Compression); StreamWriter streamTbl = new(partTbl.GetStream(FileMode.Create, FileAccess.Write)); streamTbl.Write(xml); @@ -469,14 +478,40 @@ private void CopyPivotTable(ExcelWorksheet Copy, ExcelWorksheet added) } private void CopyHeaderFooterPictures(ExcelWorksheet Copy, ExcelWorksheet added) { - if (Copy.TopNode != null && Copy.TopNode.SelectSingleNode("d:headerFooter", NameSpaceManager) == null) return; + if (Copy.TopNode != null && Copy.TopNode.SelectSingleNode("d:headerFooter", NameSpaceManager) == null) + { + return; + } //Copy the texts - if (Copy.HeaderFooter._oddHeader != null) CopyText(Copy.HeaderFooter._oddHeader, added.HeaderFooter.OddHeader); - if (Copy.HeaderFooter._oddFooter != null) CopyText(Copy.HeaderFooter._oddFooter, added.HeaderFooter.OddFooter); - if (Copy.HeaderFooter._evenHeader != null) CopyText(Copy.HeaderFooter._evenHeader, added.HeaderFooter.EvenHeader); - if (Copy.HeaderFooter._evenFooter != null) CopyText(Copy.HeaderFooter._evenFooter, added.HeaderFooter.EvenFooter); - if (Copy.HeaderFooter._firstHeader != null) CopyText(Copy.HeaderFooter._firstHeader, added.HeaderFooter.FirstHeader); - if (Copy.HeaderFooter._firstFooter != null) CopyText(Copy.HeaderFooter._firstFooter, added.HeaderFooter.FirstFooter); + if (Copy.HeaderFooter._oddHeader != null) + { + CopyText(Copy.HeaderFooter._oddHeader, added.HeaderFooter.OddHeader); + } + + if (Copy.HeaderFooter._oddFooter != null) + { + CopyText(Copy.HeaderFooter._oddFooter, added.HeaderFooter.OddFooter); + } + + if (Copy.HeaderFooter._evenHeader != null) + { + CopyText(Copy.HeaderFooter._evenHeader, added.HeaderFooter.EvenHeader); + } + + if (Copy.HeaderFooter._evenFooter != null) + { + CopyText(Copy.HeaderFooter._evenFooter, added.HeaderFooter.EvenFooter); + } + + if (Copy.HeaderFooter._firstHeader != null) + { + CopyText(Copy.HeaderFooter._firstHeader, added.HeaderFooter.FirstHeader); + } + + if (Copy.HeaderFooter._firstFooter != null) + { + CopyText(Copy.HeaderFooter._firstFooter, added.HeaderFooter.FirstFooter); + } //Copy any images; if (Copy.HeaderFooter.Pictures.Count > 0) @@ -803,12 +838,35 @@ internal static string ValidateFixSheetName(string Name) //remove invalid characters if (ValidateName(Name)) { - if (Name.IndexOf(':') > -1) Name = Name.Replace(":", " "); - if (Name.IndexOf('/') > -1) Name = Name.Replace("/", " "); - if (Name.IndexOf('\\') > -1) Name = Name.Replace("\\", " "); - if (Name.IndexOf('?') > -1) Name = Name.Replace("?", " "); - if (Name.IndexOf('[') > -1) Name = Name.Replace("[", " "); - if (Name.IndexOf(']') > -1) Name = Name.Replace("]", " "); + if (Name.IndexOf(':') > -1) + { + Name = Name.Replace(":", " "); + } + + if (Name.IndexOf('/') > -1) + { + Name = Name.Replace("/", " "); + } + + if (Name.IndexOf('\\') > -1) + { + Name = Name.Replace("\\", " "); + } + + if (Name.IndexOf('?') > -1) + { + Name = Name.Replace("?", " "); + } + + if (Name.IndexOf('[') > -1) + { + Name = Name.Replace("[", " "); + } + + if (Name.IndexOf(']') > -1) + { + Name = Name.Replace("]", " "); + } } if (Name.Trim() == "") @@ -821,7 +879,11 @@ internal static string ValidateFixSheetName(string Name) throw new ArgumentException("The worksheet name can not start or end with an apostrophe."); } - if (Name.Length > 31) Name = Name[..31]; //A sheet can have max 31 char's + if (Name.Length > 31) + { + Name = Name[..31]; //A sheet can have max 31 char's + } + return Name; } /// @@ -1041,7 +1103,9 @@ public ExcelWorksheet Copy(string Name, string NewName) { var Copy = this[Name]; if (Copy == null) + { throw new ArgumentException(string.Format("Copy worksheet error: Could not find worksheet to copy '{0}'", Name)); + } var added = Add(NewName, Copy); return added; @@ -1061,12 +1125,18 @@ internal ExcelWorksheet GetBySheetID(int localSheetID) } private ExcelWorksheet GetByName(string Name) { - if (string.IsNullOrEmpty(Name)) return null; + if (string.IsNullOrEmpty(Name)) + { + return null; + } + ExcelWorksheet xlWorksheet = null; foreach (var worksheet in _worksheets.Values) { if (worksheet.Name.Equals(Name, StringComparison.OrdinalIgnoreCase)) + { xlWorksheet = worksheet; + } } return (xlWorksheet); @@ -1163,7 +1233,10 @@ private void Move(int sourcePositionId, int targetPositionId, bool placeAfter) { // Bugfix: if source and target are the same worksheet the following code will create a duplicate // which will cause a corrupt workbook. /swmal 2014-05-10 - if (sourcePositionId == targetPositionId) return; + if (sourcePositionId == targetPositionId) + { + return; + } lock (_worksheets) { diff --git a/PanoramicData.EPPlus/FormulaParsing/CalculateExtentions.cs b/PanoramicData.EPPlus/FormulaParsing/CalculateExtentions.cs index 38fad32b1..1b7b50446 100644 --- a/PanoramicData.EPPlus/FormulaParsing/CalculateExtentions.cs +++ b/PanoramicData.EPPlus/FormulaParsing/CalculateExtentions.cs @@ -107,11 +107,19 @@ public static object Calculate(this ExcelWorksheet worksheet, string Formula, Ex try { worksheet.CheckSheetType(); - if (string.IsNullOrEmpty(Formula.Trim())) return null; + if (string.IsNullOrEmpty(Formula.Trim())) + { + return null; + } + Init(worksheet.Workbook); var parser = worksheet.Workbook.FormulaParser; parser.InitNewCalc(); - if (Formula[0] == '=') Formula = Formula[1..]; //Remove any starting equal sign + if (Formula[0] == '=') + { + Formula = Formula[1..]; //Remove any starting equal sign + } + var dc = DependencyChainFactory.Create(worksheet, Formula, options); var f = dc.list[0]; dc.CalcOrder.RemoveAt(dc.CalcOrder.Count - 1); diff --git a/PanoramicData.EPPlus/FormulaParsing/DependencyChains/DependenyChainFactory.cs b/PanoramicData.EPPlus/FormulaParsing/DependencyChains/DependenyChainFactory.cs index e5ac1418e..42b13d616 100644 --- a/PanoramicData.EPPlus/FormulaParsing/DependencyChains/DependenyChainFactory.cs +++ b/PanoramicData.EPPlus/FormulaParsing/DependencyChains/DependenyChainFactory.cs @@ -146,7 +146,11 @@ private static void GetChain(DependencyChain depChain, ILexer lexer, ExcelRangeB var fs = new CellsStoreEnumerator(ws._formulas, Range.Start.Row, Range.Start.Column, Range.End.Row, Range.End.Column); while (fs.Next()) { - if (fs.Value == null || fs.Value.ToString().Trim() == "") continue; + if (fs.Value == null || fs.Value.ToString().Trim() == "") + { + continue; + } + var id = ExcelCellBase.GetCellID(ws.SheetID, fs.Row, fs.Column); if (!depChain.index.ContainsKey(id)) { @@ -246,7 +250,10 @@ private static void FollowChain(DependencyChain depChain, ILexer lexer, ExcelWor name = null; } - if (name != null) f.ws = name.Worksheet; + if (name != null) + { + f.ws = name.Worksheet; + } } else if (wb.Names.ContainsKey(adrName)) { @@ -327,7 +334,11 @@ private static void FollowChain(DependencyChain depChain, ILexer lexer, ExcelWor while (f.iterator != null && f.iterator.Next()) { var v = f.iterator.Value; - if (v == null || v.ToString().Trim() == "") continue; + if (v == null || v.ToString().Trim() == "") + { + continue; + } + var id = ExcelCellBase.GetCellID(f.ws.SheetID, f.iterator.Row, f.iterator.Column); if (!depChain.index.ContainsKey(id)) { diff --git a/PanoramicData.EPPlus/FormulaParsing/EpplusExcelDataProvider.cs b/PanoramicData.EPPlus/FormulaParsing/EpplusExcelDataProvider.cs index ebce7f5f3..2b9c49ce6 100644 --- a/PanoramicData.EPPlus/FormulaParsing/EpplusExcelDataProvider.cs +++ b/PanoramicData.EPPlus/FormulaParsing/EpplusExcelDataProvider.cs @@ -16,12 +16,12 @@ ******************************************************************************* * Mats Alm Added 2016-12-27 *******************************************************************************/ -using System.Collections.Generic; -using System.Linq; using OfficeOpenXml.FormulaParsing.ExcelUtilities; using OfficeOpenXml.FormulaParsing.LexicalAnalysis; -using OfficeOpenXml.Utils; using OfficeOpenXml.Style.XmlAccess; +using OfficeOpenXml.Utils; +using System.Collections.Generic; +using System.Linq; namespace OfficeOpenXml.FormulaParsing; @@ -371,7 +371,10 @@ private void SetCurrentWorksheet(ExcelAddressInfo addressInfo) { _currentWorksheet = _package.Workbook.Worksheets[addressInfo.Worksheet]; } - else _currentWorksheet ??= _package.Workbook.Worksheets.First(); + else + { + _currentWorksheet ??= _package.Workbook.Worksheets.First(); + } } private void SetCurrentWorksheet(string worksheetName) diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/ArgumentParserFactory.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/ArgumentParserFactory.cs index 2ddfc8f20..96d15d096 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/ArgumentParserFactory.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/ArgumentParserFactory.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System; namespace OfficeOpenXml.FormulaParsing.Excel.Functions; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/ArgumentParsers.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/ArgumentParsers.cs index a143f6128..7a73ca06a 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/ArgumentParsers.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/ArgumentParsers.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; using OfficeOpenXml.FormulaParsing.Utilities; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/BoolArgumentParser.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/BoolArgumentParser.cs index e4edd60ba..6e4906f28 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/BoolArgumentParser.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/BoolArgumentParser.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.Utilities; using System; using System.Linq; -using OfficeOpenXml.FormulaParsing.Utilities; namespace OfficeOpenXml.FormulaParsing.Excel.Functions; @@ -38,9 +38,21 @@ public override object Parse(object obj) obj = (r?.Value); } - if (obj == null) return false; - if (obj is bool) return (bool)obj; - if (obj.IsNumeric()) return Convert.ToBoolean(obj); + if (obj == null) + { + return false; + } + + if (obj is bool) + { + return (bool)obj; + } + + if (obj.IsNumeric()) + { + return Convert.ToBoolean(obj); + } + return bool.TryParse(obj.ToString(), out var result) ? result : (object)result; } } diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/BuiltInFunctions.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/BuiltInFunctions.cs index 760e8d03e..8a3d7a9f3 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/BuiltInFunctions.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/BuiltInFunctions.cs @@ -23,14 +23,14 @@ * Mats Alm Added 2013-12-03 *******************************************************************************/ using OfficeOpenXml.FormulaParsing.Excel.Functions.Database; -using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; -using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; -using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical; using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; +using OfficeOpenXml.FormulaParsing.Excel.Functions.Finance; +using OfficeOpenXml.FormulaParsing.Excel.Functions.Information; +using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical; +using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; using OfficeOpenXml.FormulaParsing.Excel.Functions.Numeric; using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; -using OfficeOpenXml.FormulaParsing.Excel.Functions.Information; -using OfficeOpenXml.FormulaParsing.Excel.Functions.Finance; +using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; namespace OfficeOpenXml.FormulaParsing.Excel.Functions; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/CompileResultValidators.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/CompileResultValidators.cs index b97feb877..500888649 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/CompileResultValidators.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/CompileResultValidators.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-26 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/DSum.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/DSum.cs index 7c7de7d6e..6c329a124 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/DSum.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/DSum.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2015-04-19 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Database; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/DatabaseFunction.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/DatabaseFunction.cs index 41662a3bb..6c2df2bb3 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/DatabaseFunction.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/DatabaseFunction.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2015-04-19 *******************************************************************************/ +using OfficeOpenXml.Utils; using System.Collections.Generic; using System.Globalization; using System.Linq; -using OfficeOpenXml.Utils; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Database; @@ -58,7 +58,11 @@ protected IEnumerable GetMatchingValues(IEnumerable ar while (db.HasMoreRows) { var dataRow = db.Read(); - if (!RowMatcher.IsMatch(dataRow, criteria)) continue; + if (!RowMatcher.IsMatch(dataRow, criteria)) + { + continue; + } + var candidate = ConvertUtil.IsNumeric(field) ? dataRow[(int)ConvertUtil.GetValueDouble(field)] : dataRow[field.ToString().ToLower(CultureInfo.InvariantCulture)]; if (ConvertUtil.IsNumeric(candidate)) { diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Daverage.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Daverage.cs index f8ddb02b0..c9ad85d59 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Daverage.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Daverage.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2015-04-19 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Database; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dcount.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dcount.cs index 6e3eea13b..c8fa0da10 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dcount.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dcount.cs @@ -22,12 +22,12 @@ ******************************************************************************* * Mats Alm Added 2015-04-06 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using OfficeOpenXml.Utils; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; -using OfficeOpenXml.Utils; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Database; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/DcountA.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/DcountA.cs index 2942b5566..7adfc6abe 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/DcountA.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/DcountA.cs @@ -22,11 +22,11 @@ ******************************************************************************* * Mats Alm Added 2015-04-06 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Database; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dget.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dget.cs index 3656bdc58..e67ceb83d 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dget.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dget.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2015-04-06 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Globalization; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Database; @@ -59,8 +59,16 @@ public override CompileResult Execute(IEnumerable arguments, P while (db.HasMoreRows) { var dataRow = db.Read(); - if (!RowMatcher.IsMatch(dataRow, criteria)) continue; - if (++nHits > 1) return CreateResult(ExcelErrorValue.Values.Num, DataType.ExcelError); + if (!RowMatcher.IsMatch(dataRow, criteria)) + { + continue; + } + + if (++nHits > 1) + { + return CreateResult(ExcelErrorValue.Values.Num, DataType.ExcelError); + } + retVal = dataRow[field]; } diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dmax.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dmax.cs index 470daecb0..334715576 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dmax.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dmax.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2015-04-19 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Database; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dmin.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dmin.cs index 5467eda0b..ece08fdbe 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dmin.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dmin.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2015-04-19 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Database; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dvar.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dvar.cs index b5a343f46..15b8f1f1b 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dvar.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dvar.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2015-04-19 *******************************************************************************/ -using System.Collections.Generic; -using System.Linq; using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; +using System.Linq; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Database; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dvarp.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dvarp.cs index ca6a504c2..f581e4848 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dvarp.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/Dvarp.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2015-04-19 *******************************************************************************/ -using System.Collections.Generic; -using System.Linq; using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; +using System.Linq; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Database; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/ExcelDatabaseCriteria.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/ExcelDatabaseCriteria.cs index 6ca44b8b0..db14a7def 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/ExcelDatabaseCriteria.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/ExcelDatabaseCriteria.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2015-04-06 *******************************************************************************/ +using OfficeOpenXml.Utils; using System.Collections.Generic; using System.Globalization; -using OfficeOpenXml.Utils; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Database; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/RowMatcher.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/RowMatcher.cs index d816ae4ec..ba5713e19 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/RowMatcher.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Database/RowMatcher.cs @@ -54,7 +54,10 @@ public bool IsMatch(ExcelDatabaseRow row, ExcelDatabaseCriteria criteria) var crit = c.Value; if (candidate.IsNumeric() && crit.IsNumeric()) { - if (System.Math.Abs(ConvertUtil.GetValueDouble(candidate) - ConvertUtil.GetValueDouble(crit)) > double.Epsilon) return false; + if (System.Math.Abs(ConvertUtil.GetValueDouble(candidate) - ConvertUtil.GetValueDouble(crit)) > double.Epsilon) + { + return false; + } } else { @@ -71,7 +74,11 @@ public bool IsMatch(ExcelDatabaseRow row, ExcelDatabaseCriteria criteria) private bool Evaluate(object obj, string expression) { - if (obj == null) return false; + if (obj == null) + { + return false; + } + var candidate = default(double?); if (ConvertUtil.IsNumeric(obj)) { diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Date.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Date.cs index 55749b54e..a764565d0 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Date.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Date.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/DateValue.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/DateValue.cs index 74a550bee..2e254e665 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/DateValue.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/DateValue.cs @@ -1,5 +1,5 @@ -using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Day.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Day.cs index d2d1aa6db..80c89e3ce 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Day.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Day.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Days360.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Days360.cs index 6a4b6d8ed..0ca704d12 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Days360.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Days360.cs @@ -1,8 +1,8 @@ -using System; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System; using System.Collections.Generic; using System.Globalization; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; @@ -25,7 +25,10 @@ public override CompileResult Execute(IEnumerable arguments, P if (arguments.Count() > 2) { var european = ArgToBool(arguments, 2); - if (european) calcType = Days360Calctype.European; + if (european) + { + calcType = Days360Calctype.European; + } } var startYear = dt1.Year; @@ -37,8 +40,15 @@ public override CompileResult Execute(IEnumerable arguments, P if (calcType == Days360Calctype.European) { - if (startDay == 31) startDay = 30; - if (endDay == 31) endDay = 30; + if (startDay == 31) + { + startDay = 30; + } + + if (endDay == 31) + { + endDay = 30; + } } else { diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Edate.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Edate.cs index 242c21a4a..c85b3c395 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Edate.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Edate.cs @@ -1,5 +1,5 @@ -using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Eomonth.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Eomonth.cs index d69edebc0..5ba159bb6 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Eomonth.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Eomonth.cs @@ -1,5 +1,5 @@ -using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Hour.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Hour.cs index cfdbfb83d..cf6fe1887 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Hour.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Hour.cs @@ -23,9 +23,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/IsoWeekNum.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/IsoWeekNum.cs index 421fb2c9c..24e012bf6 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/IsoWeekNum.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/IsoWeekNum.cs @@ -1,6 +1,6 @@ -using System; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System; using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; @@ -39,7 +39,10 @@ private static int WeekNumber(System.DateTime fromDate) case 53: // If dec 31st falls before thursday it is week 01 of next year if (endOfYear.DayOfWeek < DayOfWeek.Thursday) + { return 1; + } + return wk; default: return wk; } diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Minute.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Minute.cs index 7b26d1f73..b14cf159c 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Minute.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Minute.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Month.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Month.cs index ae5673d84..7769e2e7b 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Month.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Month.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Networkdays.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Networkdays.cs index 85ee33031..b44ebbe88 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Networkdays.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Networkdays.cs @@ -1,7 +1,7 @@ -using System.Collections.Generic; -using System.Linq; -using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime.Workdays; +using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime.Workdays; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; +using System.Linq; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/NetworkdaysIntl.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/NetworkdaysIntl.cs index 8cc784e20..9bd455148 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/NetworkdaysIntl.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/NetworkdaysIntl.cs @@ -1,9 +1,9 @@ -using System; +using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime.Workdays; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; -using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime.Workdays; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Now.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Now.cs index 527ccac38..72e609a6d 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Now.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Now.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Second.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Second.cs index 7e27eaf19..443ad273d 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Second.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Second.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Time.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Time.cs index 90a918b1d..bf35f3cba 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Time.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Time.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/TimeStringParser.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/TimeStringParser.cs index 305dd1147..cd9ea0cb9 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/TimeStringParser.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/TimeStringParser.cs @@ -75,7 +75,11 @@ private static double Parse12HourTimeString(string input) var dayPart = string.Empty; dayPart = input.Substring(input.Length - 2, 2); GetValuesFromString(input, out var hour, out var minute, out var second); - if (dayPart == "PM") hour += 12; + if (dayPart == "PM") + { + hour += 12; + } + ValidateValues(hour, minute, second); return GetSerialNumber(hour, minute, second); } diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/TimeValue.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/TimeValue.cs index 2235c8f85..fc2f29910 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/TimeValue.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/TimeValue.cs @@ -1,5 +1,5 @@ -using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Today.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Today.cs index c8d0cfde5..81d7dd412 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Today.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Today.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Weekday.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Weekday.cs index 83e096705..0771ecab6 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Weekday.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Weekday.cs @@ -22,11 +22,11 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.Exceptions; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.Exceptions; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Weeknum.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Weeknum.cs index 4f5ec3c9b..9004cd8fc 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Weeknum.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Weeknum.cs @@ -1,8 +1,8 @@ -using System; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System; using System.Collections.Generic; using System.Globalization; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workday.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workday.cs index fa981c821..c4bbc906c 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workday.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workday.cs @@ -1,7 +1,7 @@ -using System.Collections.Generic; -using System.Linq; -using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime.Workdays; +using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime.Workdays; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; +using System.Linq; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workdays/AdditionalHolidayDays.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workdays/AdditionalHolidayDays.cs index e40c4fc6b..38eb9710d 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workdays/AdditionalHolidayDays.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workdays/AdditionalHolidayDays.cs @@ -1,6 +1,6 @@ -using System.Collections.Generic; +using OfficeOpenXml.Utils; +using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.Utils; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime.Workdays; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workdays/HolidayWeekdays.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workdays/HolidayWeekdays.cs index fbb888b33..be0109166 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workdays/HolidayWeekdays.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workdays/HolidayWeekdays.cs @@ -1,7 +1,7 @@ -using System; +using OfficeOpenXml.Utils; +using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.Utils; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime.Workdays; @@ -30,7 +30,11 @@ public HolidayWeekdays(params DayOfWeek[] holidayDays) public System.DateTime AdjustResultWithHolidays(System.DateTime resultDate, IEnumerable arguments) { - if (arguments.Count() == 2) return resultDate; + if (arguments.Count() == 2) + { + return resultDate; + } + if (arguments.ElementAt(2).Value is IEnumerable holidays) { foreach (var arg in holidays) diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workdays/HolidayWeekdaysFactory.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workdays/HolidayWeekdaysFactory.cs index 8e9a584db..1f8bce692 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workdays/HolidayWeekdaysFactory.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workdays/HolidayWeekdaysFactory.cs @@ -19,7 +19,9 @@ public class HolidayWeekdaysFactory public HolidayWeekdays Create(string weekdays) { if (string.IsNullOrEmpty(weekdays) || weekdays.Length != 7) + { throw new ArgumentException("Illegal weekday string", nameof(Weekday)); + } var retVal = new List(); var arr = weekdays.ToCharArray(); diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workdays/WorkdayCalculator.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workdays/WorkdayCalculator.cs index 386eb3141..da6b28bb9 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workdays/WorkdayCalculator.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Workdays/WorkdayCalculator.cs @@ -71,7 +71,10 @@ public WorkdayCalculatorResult CalculateWorkday(System.DateTime startDate, int n while (workdaysCounted < nWorkDays) { tmpDate = tmpDate.AddDays(direction); - if (!_holidayWeekdays.IsHolidayWeekday(tmpDate)) workdaysCounted++; + if (!_holidayWeekdays.IsHolidayWeekday(tmpDate)) + { + workdaysCounted++; + } } return new WorkdayCalculatorResult(workdaysCounted, startDate, tmpDate, calcDirection); @@ -110,9 +113,21 @@ public WorkdayCalculatorResult AdjustResultWithHolidays(WorkdayCalculatorResult var additionalDays = new AdditionalHolidayDays(holidayArgument); foreach (var date in additionalDays.AdditionalDates) { - if (direction == WorkdayCalculationDirection.Forward && (date < startDate || date > endDate)) continue; - if (direction == WorkdayCalculationDirection.Backward && (date > startDate || date < endDate)) continue; - if (_holidayWeekdays.IsHolidayWeekday(date)) continue; + if (direction == WorkdayCalculationDirection.Forward && (date < startDate || date > endDate)) + { + continue; + } + + if (direction == WorkdayCalculationDirection.Backward && (date > startDate || date < endDate)) + { + continue; + } + + if (_holidayWeekdays.IsHolidayWeekday(date)) + { + continue; + } + var tmpDate = _holidayWeekdays.GetNextWorkday(endDate, direction); while (additionalDays.AdditionalDates.Contains(tmpDate)) { diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Year.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Year.cs index d9f758bf5..775f77818 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Year.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Year.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Yearfrac.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Yearfrac.cs index 4af89e123..53ac9ec27 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Yearfrac.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DateTime/Yearfrac.cs @@ -1,8 +1,8 @@ -using System; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System; using System.Collections.Generic; using System.Globalization; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; @@ -44,7 +44,10 @@ public override CompileResult Execute(IEnumerable arguments, P if (date1.Month == 2 && date2.Day == 31) { var daysInFeb = calendar.IsLeapYear(date1.Year) ? 29 : 28; - if (date1.Day == daysInFeb) d360Result++; + if (date1.Day == daysInFeb) + { + d360Result++; + } } return CreateResult(d360Result / 360d, DataType.Decimal); @@ -79,11 +82,17 @@ private static double CalculateAcutalYear(System.DateTime dt1, System.DateTime d nYears = 1; perYear = 365; if (calendar.IsLeapYear(dt1.Year) && dt1.Month <= 2) + { perYear = 366; + } else if (calendar.IsLeapYear(dt2.Year) && dt2.Month > 2) + { perYear = 366; + } else if (dt2.Month == 2 && dt2.Day == 29) + { perYear = 366; + } } return perYear / (double)nYears; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DoubleArgumentParser.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DoubleArgumentParser.cs index d5187ab8b..c1a1862b2 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DoubleArgumentParser.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DoubleArgumentParser.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Linq; -using System.Globalization; -using OfficeOpenXml.FormulaParsing.Utilities; using OfficeOpenXml.FormulaParsing.Exceptions; +using OfficeOpenXml.FormulaParsing.Utilities; +using System.Globalization; +using System.Linq; using Utils = OfficeOpenXml.Utils; namespace OfficeOpenXml.FormulaParsing.Excel.Functions; @@ -41,8 +41,16 @@ public override object Parse(object obj) return r == null ? 0 : r.ValueDouble; } - if (obj is double) return obj; - if (obj.IsNumeric()) return Utils.ConvertUtil.GetValueDouble(obj); + if (obj is double) + { + return obj; + } + + if (obj.IsNumeric()) + { + return Utils.ConvertUtil.GetValueDouble(obj); + } + var str = obj != null ? obj.ToString() : string.Empty; try { diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DoubleEnumerableArgConverter.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DoubleEnumerableArgConverter.cs index cf974be8b..a3862bbc7 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DoubleEnumerableArgConverter.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/DoubleEnumerableArgConverter.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System; -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.Exceptions; using OfficeOpenXml.Utils; +using System; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions; @@ -37,7 +37,11 @@ public virtual IEnumerable ConvertArgs(bool ignoreHidden, { foreach (var cell in arg.ValueAsRangeInfo) { - if (!ignoreErrors && cell.IsExcelError) throw new ExcelErrorValueException(ExcelErrorValue.Parse(cell.Value.ToString())); + if (!ignoreErrors && cell.IsExcelError) + { + throw new ExcelErrorValueException(ExcelErrorValue.Parse(cell.Value.ToString())); + } + if (!CellStateHelper.ShouldIgnore(ignoreHidden, cell, context) && ConvertUtil.IsNumeric(cell.Value)) { var val = new ExcelDoubleCellValue(cell.ValueDouble, cell.Row); @@ -47,7 +51,11 @@ public virtual IEnumerable ConvertArgs(bool ignoreHidden, } else { - if (!ignoreErrors && arg.ValueIsExcelError) throw new ExcelErrorValueException(arg.ValueAsExcelErrorValue); + if (!ignoreErrors && arg.ValueIsExcelError) + { + throw new ExcelErrorValueException(arg.ValueAsExcelErrorValue); + } + if (ConvertUtil.IsNumeric(arg.Value) && !CellStateHelper.ShouldIgnore(ignoreHidden, arg, context)) { var val = new ExcelDoubleCellValue(ConvertUtil.GetValueDouble(arg.Value)); diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/ExcelFunction.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/ExcelFunction.cs index e11350507..ff15e765b 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/ExcelFunction.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/ExcelFunction.cs @@ -22,14 +22,14 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.Compatibility; +using OfficeOpenXml.FormulaParsing.Exceptions; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using OfficeOpenXml.FormulaParsing.Utilities; using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; -using OfficeOpenXml.FormulaParsing.Utilities; -using OfficeOpenXml.FormulaParsing.Exceptions; -using OfficeOpenXml.Compatibility; namespace OfficeOpenXml.FormulaParsing.Excel.Functions; @@ -116,11 +116,18 @@ protected static void ValidateArguments(IEnumerable arguments, foreach (var arg in arguments) { nArgs++; - if (nArgs >= minLength) return false; + if (nArgs >= minLength) + { + return false; + } + if (arg.IsExcelRange) { nArgs += arg.ValueAsRangeInfo.GetNCells(); - if (nArgs >= minLength) return false; + if (nArgs >= minLength) + { + return false; + } } } } @@ -149,11 +156,18 @@ protected void ValidateArguments(IEnumerable arguments, int mi foreach (var arg in arguments) { nArgs++; - if (nArgs >= minLength) return false; + if (nArgs >= minLength) + { + return false; + } + if (arg.IsExcelRange) { nArgs += arg.ValueAsRangeInfo.GetNCells(); - if (nArgs >= minLength) return false; + if (nArgs >= minLength) + { + return false; + } } } } diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Finance/Pmt.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Finance/Pmt.cs index 539f60f36..0b4ad1360 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Finance/Pmt.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Finance/Pmt.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2018-07-17 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Finance; @@ -39,8 +39,15 @@ public override CompileResult Execute(IEnumerable arguments, P var presentValue = ArgToDecimal(arguments, 2); var payEndOfPeriod = false; var futureValue = 0d; - if (arguments.Count() > 3) futureValue = ArgToDecimal(arguments, 3); - if (arguments.Count() > 4) payEndOfPeriod = ArgToBool(arguments, 4); + if (arguments.Count() > 3) + { + futureValue = ArgToDecimal(arguments, 3); + } + + if (arguments.Count() > 4) + { + payEndOfPeriod = ArgToBool(arguments, 4); + } var result = (futureValue + presentValue * System.Math.Pow(rate + 1, nPer)) * rate / diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/FunctionRepository.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/FunctionRepository.cs index 4a9ac73dd..519a506be 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/FunctionRepository.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/FunctionRepository.cs @@ -22,11 +22,11 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph.FunctionCompilers; +using OfficeOpenXml.FormulaParsing.Utilities; using System; using System.Collections.Generic; using System.Globalization; -using OfficeOpenXml.FormulaParsing.Utilities; -using OfficeOpenXml.FormulaParsing.ExpressionGraph.FunctionCompilers; namespace OfficeOpenXml.FormulaParsing.Excel.Functions; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/FunctionsModule.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/FunctionsModule.cs index 362f1f24b..46d81284e 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/FunctionsModule.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/FunctionsModule.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph.FunctionCompilers; using System; using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph.FunctionCompilers; namespace OfficeOpenXml.FormulaParsing.Excel.Functions; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/IFunctionModule.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/IFunctionModule.cs index 84c257f3c..c395418ef 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/IFunctionModule.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/IFunctionModule.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph.FunctionCompilers; using System; using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph.FunctionCompilers; namespace OfficeOpenXml.FormulaParsing.Excel.Functions; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsErr.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsErr.cs index 5750050dd..8583ad0ec 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsErr.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsErr.cs @@ -1,5 +1,5 @@ -using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Information; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsError.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsError.cs index e4d872964..0eb5be184 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsError.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsError.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Information; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsEven.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsEven.cs index 5db56eebe..421db5dd8 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsEven.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsEven.cs @@ -1,6 +1,6 @@ -using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using OfficeOpenXml.Utils; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Information; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsLogical.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsLogical.cs index 93fe42034..9838e6cc2 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsLogical.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsLogical.cs @@ -1,6 +1,6 @@ -using System.Collections.Generic; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Information; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsNa.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsNa.cs index c76d1c711..78d5e6e46 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsNa.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsNa.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2015-01-15 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Information; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsNonText.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsNonText.cs index de9fd3655..58662b702 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsNonText.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsNonText.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2015-01-15 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Information; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsNumber.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsNumber.cs index 3ce4d0d88..cd558ed40 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsNumber.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsNumber.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Information; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsOdd.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsOdd.cs index 9876b010b..ddb4031e2 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsOdd.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsOdd.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2015-01-15 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; using OfficeOpenXml.Utils; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Information; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsText.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsText.cs index b21c68b47..1f7b35790 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsText.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/IsText.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Information; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/N.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/N.cs index 0ecc65b62..20827315b 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/N.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/N.cs @@ -1,7 +1,7 @@ -using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.Exceptions; +using OfficeOpenXml.FormulaParsing.Exceptions; using OfficeOpenXml.FormulaParsing.ExpressionGraph; using OfficeOpenXml.Utils; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Information; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/Na.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/Na.cs index 6eb76370e..33c90755f 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/Na.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Information/Na.cs @@ -1,5 +1,5 @@ -using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Information; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/IntArgumentParser.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/IntArgumentParser.cs index 0de057bf7..30415583f 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/IntArgumentParser.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/IntArgumentParser.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.Exceptions; +using OfficeOpenXml.FormulaParsing.Utilities; using System; using System.Linq; -using OfficeOpenXml.FormulaParsing.Utilities; -using OfficeOpenXml.FormulaParsing.Exceptions; namespace OfficeOpenXml.FormulaParsing.Excel.Functions; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/And.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/And.cs index c39dc7f91..56adc6a8a 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/And.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/And.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Logical; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/False.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/False.cs index 995664918..9eeabb963 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/False.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/False.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Logical; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/If.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/If.cs index 98c410b65..7584d8948 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/If.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/If.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Logical; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/IfError.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/IfError.cs index eb64df5cd..2cb12d56a 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/IfError.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/IfError.cs @@ -1,6 +1,6 @@ -using System.Collections.Generic; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Logical; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/IfNa.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/IfNa.cs index 67b4c9b18..7cca249f7 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/IfNa.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/IfNa.cs @@ -1,6 +1,6 @@ -using System.Collections.Generic; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Logical; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/Not.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/Not.cs index a309a8992..99360c005 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/Not.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/Not.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Logical; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/Or.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/Or.cs index d6dea7f8f..7c725fc5b 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/Or.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/Or.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Logical; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/True.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/True.cs index 0e3d93d8d..2ebd758ae 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/True.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Logical/True.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Logical; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Abs.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Abs.cs index d77a6f73f..225122e4c 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Abs.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Abs.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Acos.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Acos.cs index c5611c465..27da751f5 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Acos.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Acos.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2015-01-11 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Acosh.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Acosh.cs index 014af0c12..dc6d77b6f 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Acosh.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Acosh.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2015-01-11 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Asin.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Asin.cs index e964d8334..ca53ca8de 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Asin.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Asin.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -/* Copyright (C) 2011 Jan Källman +/* 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 @@ -24,6 +23,7 @@ * Mats Alm Added 2015-01-11 *******************************************************************************/ using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Asinh.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Asinh.cs index 3e174d6c0..e85ebd1e9 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Asinh.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Asinh.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2015-01-11 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Atan.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Atan.cs index 06af7cff2..c69b88789 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Atan.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Atan.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Atan2.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Atan2.cs index bfcfd27bf..9c1542c12 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Atan2.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Atan2.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Atanh.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Atanh.cs index 6fadad96a..0d35a665e 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Atanh.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Atanh.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2015-01-11 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Average.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Average.cs index 1d6e99dce..9e0f5d27b 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Average.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Average.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; using OfficeOpenXml.Utils; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; @@ -60,9 +60,17 @@ private void Calculate(FunctionArgument arg, ParsingContext context, ref double { foreach (var c in arg.ValueAsRangeInfo) { - if (ShouldIgnore(c, context)) continue; + if (ShouldIgnore(c, context)) + { + continue; + } + CheckForAndHandleExcelError(c); - if (!IsNumeric(c.Value) || c.Value is bool) continue; + if (!IsNumeric(c.Value) || c.Value is bool) + { + continue; + } + nValues++; retVal += c.ValueDouble; } diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/AverageA.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/AverageA.cs index 442f7f270..68eb334ef 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/AverageA.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/AverageA.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2014-01-06 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; using OfficeOpenXml.Utils; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; @@ -60,7 +60,11 @@ private void Calculate(FunctionArgument arg, ParsingContext context, ref double { foreach (var c in arg.ValueAsRangeInfo) { - if (ShouldIgnore(c, context)) continue; + if (ShouldIgnore(c, context)) + { + continue; + } + CheckForAndHandleExcelError(c); if (IsNumeric(c.Value) && !(c.Value is bool)) { diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/AverageIf.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/AverageIf.cs index 365c2018b..8b73cca1c 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/AverageIf.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/AverageIf.cs @@ -22,13 +22,13 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; -using System.Linq; using OfficeOpenXml.FormulaParsing.ExcelUtilities; using OfficeOpenXml.FormulaParsing.Exceptions; using OfficeOpenXml.FormulaParsing.ExpressionGraph; using OfficeOpenXml.FormulaParsing.Utilities; using OfficeOpenXml.Utils; +using System.Collections.Generic; +using System.Linq; using Require = OfficeOpenXml.FormulaParsing.Utilities.Require; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/AverageIfs.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/AverageIfs.cs index 12c412873..df206def4 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/AverageIfs.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/AverageIfs.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2015-02-01 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; @@ -39,7 +39,11 @@ public override CompileResult Execute(IEnumerable arguments, P var criterias = new List(); for (var ix = 1; ix < 31; ix += 2) { - if (functionArguments.Length <= ix) break; + if (functionArguments.Length <= ix) + { + break; + } + var rangeInfo = functionArguments[ix].ValueAsRangeInfo; argRanges.Add(rangeInfo); var value = functionArguments[ix + 1].Value?.ToString(); diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Ceiling.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Ceiling.cs index fd035082c..7ecb12632 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Ceiling.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Ceiling.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Cos.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Cos.cs index 033b71c4f..c6d57d416 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Cos.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Cos.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Cosh.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Cosh.cs index 95b5aebca..aaa01f66a 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Cosh.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Cosh.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Count.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Count.cs index 6c7041a53..bdec11684 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Count.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Count.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/CountA.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/CountA.cs index 78789ee32..026d1edf4 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/CountA.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/CountA.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/CountBlank.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/CountBlank.cs index fe2628021..41519d9b5 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/CountBlank.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/CountBlank.cs @@ -29,7 +29,11 @@ public override CompileResult Execute(IEnumerable arguments, P { ValidateArguments(arguments, 1); var arg = arguments.First(); - if (!arg.IsExcelRange) throw new InvalidOperationException("CountBlank only support ranges as arguments"); + if (!arg.IsExcelRange) + { + throw new InvalidOperationException("CountBlank only support ranges as arguments"); + } + var result = arg.ValueAsRangeInfo.GetNCells(); foreach (var cell in arg.ValueAsRangeInfo) { diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/CountIf.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/CountIf.cs index ccbaeec8e..5ff1e7e3a 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/CountIf.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/CountIf.cs @@ -1,9 +1,9 @@ -using System.Collections.Generic; -using System.Linq; -using OfficeOpenXml.FormulaParsing.ExcelUtilities; +using OfficeOpenXml.FormulaParsing.ExcelUtilities; using OfficeOpenXml.FormulaParsing.ExpressionGraph; using OfficeOpenXml.FormulaParsing.Utilities; using OfficeOpenXml.Utils; +using System.Collections.Generic; +using System.Linq; using Require = OfficeOpenXml.FormulaParsing.Utilities.Require; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/CountIfs.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/CountIfs.cs index 96e21d4b8..e0d3116aa 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/CountIfs.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/CountIfs.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2015-01-11 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; @@ -40,7 +40,11 @@ public override CompileResult Execute(IEnumerable arguments, P var criterias = new List(); for (var ix = 0; ix < 30; ix += 2) { - if (functionArguments.Length <= ix) break; + if (functionArguments.Length <= ix) + { + break; + } + var rangeInfo = functionArguments[ix].ValueAsRangeInfo; argRanges.Add(rangeInfo); var value = functionArguments[ix + 1].Value?.ToString(); diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Degrees.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Degrees.cs index 7964cb554..10e8b14a2 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Degrees.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Degrees.cs @@ -1,5 +1,5 @@ -using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Exp.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Exp.cs index 77492189d..d22130268 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Exp.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Exp.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Fact.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Fact.cs index 9184e7f96..3297d0415 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Fact.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Fact.cs @@ -1,5 +1,5 @@ -using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Floor.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Floor.cs index d4b48ef28..6eaff46a6 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Floor.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Floor.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Large.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Large.cs index 2bafe7f26..db7eb16ed 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Large.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Large.cs @@ -1,7 +1,7 @@ -using System; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Ln.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Ln.cs index f2386b73c..b28ba95da 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Ln.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Ln.cs @@ -1,5 +1,5 @@ -using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Log.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Log.cs index 39cf8d800..b398ba10e 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Log.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Log.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Log10.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Log10.cs index 5d614f1c1..f6ea9ab4f 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Log10.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Log10.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Max.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Max.cs index 8719138e9..3b3c3931f 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Max.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Max.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Maxa.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Maxa.cs index 0d9fd4eaf..061323f3f 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Maxa.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Maxa.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; -using System.Linq; using OfficeOpenXml.FormulaParsing.ExpressionGraph; using OfficeOpenXml.FormulaParsing.Utilities; +using System.Collections.Generic; +using System.Linq; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Min.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Min.cs index 900af03ec..84e2ea0ff 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Min.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Min.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Mina.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Mina.cs index 1fe4a8892..4aa558ad2 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Mina.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Mina.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; -using System.Linq; using OfficeOpenXml.FormulaParsing.ExpressionGraph; using OfficeOpenXml.FormulaParsing.Utilities; +using System.Collections.Generic; +using System.Linq; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Mod.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Mod.cs index 62d9dcac4..0112476c7 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Mod.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Mod.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/MultipleRangeCriteriasFunction.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/MultipleRangeCriteriasFunction.cs index c5b3a654a..c5b7f6f5a 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/MultipleRangeCriteriasFunction.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/MultipleRangeCriteriasFunction.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2015-01-15 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExcelUtilities; using OfficeOpenXml.FormulaParsing.Utilities; using OfficeOpenXml.Utils; +using System.Collections.Generic; using Require = OfficeOpenXml.FormulaParsing.Utilities.Require; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Pi.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Pi.cs index ea8bb8b56..e1b74742c 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Pi.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Pi.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Power.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Power.cs index dcb8fe400..286706054 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Power.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Power.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Product.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Product.cs index 3dc4ac150..37c611da5 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Product.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Product.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Quotient.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Quotient.cs index ac0682104..eabc2bd6b 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Quotient.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Quotient.cs @@ -1,5 +1,5 @@ -using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Rand.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Rand.cs index decf84935..9c11064fe 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Rand.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Rand.cs @@ -1,6 +1,6 @@ -using System; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System; using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/RandBetween.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/RandBetween.cs index a1f6a3693..a27ce2ff1 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/RandBetween.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/RandBetween.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Rank.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Rank.cs index a85f03e9e..e2209da82 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Rank.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Rank.cs @@ -1,7 +1,7 @@ -using System; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; @@ -42,8 +42,15 @@ public override CompileResult Execute(IEnumerable arguments, P if (_isAvg) { var st = Convert.ToInt32(ix); - while (l.Count > st && l[st] == number) st++; - if (st > ix) ix = ix + ((st - ix) / 2D); + while (l.Count > st && l[st] == number) + { + st++; + } + + if (st > ix) + { + ix = ix + ((st - ix) / 2D); + } } } else @@ -52,8 +59,15 @@ public override CompileResult Execute(IEnumerable arguments, P if (_isAvg) { var st = Convert.ToInt32(ix) - 1; - while (0 <= st && l[st] == number) st--; - if (st + 1 < ix) ix = ix - ((ix - st - 1) / 2D); + while (0 <= st && l[st] == number) + { + st--; + } + + if (st + 1 < ix) + { + ix = ix - ((ix - st - 1) / 2D); + } } ix = l.Count - ix; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Round.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Round.cs index 51029d986..59a45b542 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Round.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Round.cs @@ -24,9 +24,9 @@ * Robert J. McKee Fix rounding with negative digits parameter 2016-08-10 * Fix rounding of negative numbers 2016-08-10 *****************************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Rounddown.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Rounddown.cs index d0c1b4feb..b0a3a83bf 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Rounddown.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Rounddown.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2014-01-06 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Roundup.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Roundup.cs index 81cd889d8..dff04cc11 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Roundup.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Roundup.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2014-01-06 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sign.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sign.cs index d04851943..ee9e85919 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sign.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sign.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sin.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sin.cs index d5c406765..cea40f6ae 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sin.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sin.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sinh.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sinh.cs index 9f8600f05..0882294a6 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sinh.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sinh.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Small.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Small.cs index 0a8aac7ac..81a49d356 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Small.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Small.cs @@ -1,7 +1,7 @@ -using System; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sqrt.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sqrt.cs index 7b043440d..813db6562 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sqrt.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sqrt.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/SqrtPi.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/SqrtPi.cs index 21fe78a83..daaefa90e 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/SqrtPi.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/SqrtPi.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Stdev.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Stdev.cs index 6f1059916..ddc21ee8b 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Stdev.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Stdev.cs @@ -22,12 +22,12 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.Exceptions; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.Exceptions; using MathObj = System.Math; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; @@ -46,7 +46,10 @@ private static double StandardDeviation(IEnumerable values) if (values.Any()) { var nValues = values.Count(); - if (nValues == 1) throw new ExcelErrorValueException(eErrorType.Div0); + if (nValues == 1) + { + throw new ExcelErrorValueException(eErrorType.Div0); + } //Compute the Average var avg = values.Average(); //Perform the Sum of (value-avg)_2_2 diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/StdevP.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/StdevP.cs index a22d8ef27..90b7ff332 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/StdevP.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/StdevP.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; using MathObj = System.Math; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Subtotal.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Subtotal.cs index 25f01ee2d..7149327d0 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Subtotal.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Subtotal.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sum.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sum.cs index 7b920de66..e9e6e9723 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sum.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sum.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; using OfficeOpenXml.Utils; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/SumIf.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/SumIf.cs index 8a43dfe5c..582bc1566 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/SumIf.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/SumIf.cs @@ -22,13 +22,13 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; -using System.Linq; using OfficeOpenXml.FormulaParsing.ExcelUtilities; using OfficeOpenXml.FormulaParsing.Exceptions; using OfficeOpenXml.FormulaParsing.ExpressionGraph; using OfficeOpenXml.FormulaParsing.Utilities; using OfficeOpenXml.Utils; +using System.Collections.Generic; +using System.Linq; using Require = OfficeOpenXml.FormulaParsing.Utilities.Require; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/SumIfs.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/SumIfs.cs index 090a96d5c..e071c0321 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/SumIfs.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/SumIfs.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2015-01-15 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; @@ -50,7 +50,11 @@ public override CompileResult Execute(IEnumerable arguments, P var criterias = new List(); for (var ix = 1; ix < 31; ix += 2) { - if (functionArguments.Length <= ix) break; + if (functionArguments.Length <= ix) + { + break; + } + var rangeInfo = functionArguments[ix].ValueAsRangeInfo; argRanges.Add(rangeInfo); var value = functionArguments[ix + 1].Value?.ToString(); diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/SumProduct.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/SumProduct.cs index 8b5d211a0..22095a8a2 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/SumProduct.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/SumProduct.cs @@ -22,11 +22,11 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.Exceptions; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.Exceptions; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sumsq.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sumsq.cs index 7df577b2c..730f6ce59 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sumsq.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Sumsq.cs @@ -1,6 +1,6 @@ -using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using OfficeOpenXml.Utils; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Tan.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Tan.cs index af4da0221..186b87a0f 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Tan.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Tan.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Tanh.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Tanh.cs index 5525b4030..6df38f033 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Tanh.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Tanh.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Trunc.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Trunc.cs index 855271a16..25bd9b074 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Trunc.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Trunc.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2014-01-06 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Var.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Var.cs index a3d24d35c..ef86f5d28 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Var.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/Var.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/VarMethods.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/VarMethods.cs index 1af60a190..4fc0abf69 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/VarMethods.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/VarMethods.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2015-04-19 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.Exceptions; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.Exceptions; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/VarP.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/VarP.cs index f28ce92fc..0bf3f6581 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/VarP.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Math/VarP.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Numeric/CInt.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Numeric/CInt.cs index 9b84f60da..c7801004c 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Numeric/CInt.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Numeric/CInt.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Numeric; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Address.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Address.cs index 77f5db03f..21e4576a1 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Address.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Address.cs @@ -22,11 +22,11 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExcelUtilities; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; -using OfficeOpenXml.FormulaParsing.ExcelUtilities; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/ArrayLookupNavigator.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/ArrayLookupNavigator.cs index 02a5ae098..fdca41c3d 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/ArrayLookupNavigator.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/ArrayLookupNavigator.cs @@ -1,6 +1,6 @@ -using System.Linq; -using OfficeOpenXml.FormulaParsing.Exceptions; +using OfficeOpenXml.FormulaParsing.Exceptions; using OfficeOpenXml.FormulaParsing.Utilities; +using System.Linq; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; @@ -38,7 +38,11 @@ private void Initialize() public override bool MoveNext() { - if (!HasNext()) return false; + if (!HasNext()) + { + return false; + } + if (Direction == LookupDirection.Vertical) { _index++; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Choose.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Choose.cs index 5c47bbf8e..cf4235bee 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Choose.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Choose.cs @@ -23,10 +23,10 @@ * Mats Alm Added 2013-12-03 * Eric Beiler Enable Multiple Selections 2015-09-01 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Column.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Column.cs index 81acaaf6d..89c0e0c35 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Column.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Column.cs @@ -22,11 +22,11 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExcelUtilities; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; -using OfficeOpenXml.FormulaParsing.ExcelUtilities; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; @@ -41,7 +41,10 @@ public override CompileResult Execute(IEnumerable arguments, P var rangeAddress = ArgToAddress(arguments, 0, context); if (!ExcelAddressUtil.IsValidAddress(rangeAddress)) + { throw new ArgumentException("An invalid argument was supplied"); + } + var factory = new RangeAddressFactory(context.ExcelDataProvider); var address = factory.Create(rangeAddress); return CreateResult(address.FromCol, DataType.Integer); diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Columns.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Columns.cs index 2562e5053..1256a2563 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Columns.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Columns.cs @@ -22,11 +22,11 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExcelUtilities; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; -using OfficeOpenXml.FormulaParsing.ExcelUtilities; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/ExcelLookupNavigator.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/ExcelLookupNavigator.cs index 5cb3986c7..9329152c9 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/ExcelLookupNavigator.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/ExcelLookupNavigator.cs @@ -66,7 +66,11 @@ private void Initialize() public override bool MoveNext() { - if (!HasNext()) return false; + if (!HasNext()) + { + return false; + } + if (Direction == LookupDirection.Vertical) { _currentRow++; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/HLookup.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/HLookup.cs index 1474ee7bb..9502f54b4 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/HLookup.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/HLookup.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Index.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Index.cs index 0d16402c8..68e1db290 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Index.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Index.cs @@ -1,8 +1,8 @@ -using System; +using OfficeOpenXml.FormulaParsing.Exceptions; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.Exceptions; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Indirect.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Indirect.cs index 6bc41ac92..8d5221207 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Indirect.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Indirect.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2014-04-13 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Lookup.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Lookup.cs index 4193aafdc..a659f79e6 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Lookup.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Lookup.cs @@ -22,12 +22,12 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExcelUtilities; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using OfficeOpenXml.FormulaParsing.Utilities; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; -using OfficeOpenXml.FormulaParsing.Utilities; -using OfficeOpenXml.FormulaParsing.ExcelUtilities; using static OfficeOpenXml.FormulaParsing.EpplusExcelDataProvider; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/LookupArguments.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/LookupArguments.cs index bb0872837..ee687cf6a 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/LookupArguments.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/LookupArguments.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/LookupFunction.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/LookupFunction.cs index c791e1b74..9b362cb59 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/LookupFunction.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/LookupFunction.cs @@ -70,9 +70,16 @@ protected CompileResult Lookup(LookupNavigator navigator, LookupArguments lookup var matchResult = IsMatch(navigator.CurrentValue, lookupArgs.SearchedValue); if (matchResult != 0) { - if (lastValue != null && navigator.CurrentValue == null) break; + if (lastValue != null && navigator.CurrentValue == null) + { + break; + } + + if (!lookupArgs.RangeLookup) + { + continue; + } - if (!lookupArgs.RangeLookup) continue; if (lastValue == null && matchResult > 0) { return new CompileResult(eErrorType.NA); diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Match.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Match.cs index c983b8268..a7527922d 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Match.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Match.cs @@ -22,11 +22,11 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExcelUtilities; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; -using OfficeOpenXml.FormulaParsing.ExcelUtilities; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Offset.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Offset.cs index df76f4408..1a87d0fd3 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Offset.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Offset.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2015-01-11 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; @@ -41,13 +41,19 @@ public override CompileResult Execute(IEnumerable arguments, P if (functionArguments.Length > 3) { height = ArgToInt(functionArguments, 3); - if (height == 0) return new CompileResult(eErrorType.Ref); + if (height == 0) + { + return new CompileResult(eErrorType.Ref); + } } if (functionArguments.Length > 4) { width = ArgToInt(functionArguments, 4); - if (width == 0) return new CompileResult(eErrorType.Ref); + if (width == 0) + { + return new CompileResult(eErrorType.Ref); + } } var ws = context.Scopes.Current.Address.Worksheet; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Row.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Row.cs index 5c07f35da..3f673126e 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Row.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Row.cs @@ -22,11 +22,11 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExcelUtilities; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; -using OfficeOpenXml.FormulaParsing.ExcelUtilities; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; @@ -41,7 +41,10 @@ public override CompileResult Execute(IEnumerable arguments, P var rangeAddress = ArgToAddress(arguments, 0, context); if (!ExcelAddressUtil.IsValidAddress(rangeAddress)) + { throw new ArgumentException("An invalid argument was supplied"); + } + var factory = new RangeAddressFactory(context.ExcelDataProvider); var address = factory.Create(rangeAddress); return CreateResult(address.FromRow, DataType.Integer); diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Rows.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Rows.cs index f03f4646f..9c22f2c68 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Rows.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/Rows.cs @@ -22,11 +22,11 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExcelUtilities; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; -using OfficeOpenXml.FormulaParsing.ExcelUtilities; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/VLookup.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/VLookup.cs index 363f5f0b0..2c3a515bd 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/VLookup.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/RefAndLookup/VLookup.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Diagnostics; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/CStr.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/CStr.cs index a09108b0c..d4f152038 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/CStr.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/CStr.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Concatenate.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Concatenate.cs index 9b16f5c34..01c918969 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Concatenate.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Concatenate.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Text; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Exact.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Exact.cs index 376694fae..f5706b031 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Exact.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Exact.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Find.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Find.cs index 0d292fb29..10e82c0bd 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Find.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Find.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Fixed.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Fixed.cs index 6c2fdb59c..957a50069 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Fixed.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Fixed.cs @@ -1,8 +1,8 @@ -using System; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System; using System.Collections.Generic; using System.Globalization; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Hyperlink.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Hyperlink.cs index db482f228..2ae2a9077 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Hyperlink.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Hyperlink.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2015-01-10 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Left.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Left.cs index c530b5cc9..9e2a55780 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Left.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Left.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; @@ -35,7 +35,10 @@ public override CompileResult Execute(IEnumerable arguments, P var str = ArgToString(arguments, 0); var length = ArgToInt(arguments, 1); if (str.Length < length) + { length = str.Length; + } + return CreateResult(str[..length], DataType.String); } } diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Len.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Len.cs index ee99f4ef1..5db045f06 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Len.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Len.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Lower.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Lower.cs index 930e65db2..fa73d4e9c 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Lower.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Lower.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Mid.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Mid.cs index 1f5cf3105..d6c12b4b6 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Mid.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Mid.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Proper.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Proper.cs index 124c4186d..8d38d9db7 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Proper.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Proper.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Globalization; using System.Text; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Replace.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Replace.cs index 542dc8224..de1b42094 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Replace.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Replace.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Rept.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Rept.cs index de28e2c65..cae94b7dc 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Rept.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Rept.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2015-01-10 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Text; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Right.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Right.cs index 229e39a61..02b6c38a6 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Right.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Right.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; @@ -36,7 +36,10 @@ public override CompileResult Execute(IEnumerable arguments, P var length = ArgToInt(arguments, 1); var startIx = str.Length - length; if (startIx < 0) + { startIx = 0; + } + return CreateResult(str[startIx..], DataType.String); } } diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Search.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Search.cs index 2f2f81859..804f53f1a 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Search.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Search.cs @@ -22,10 +22,10 @@ ******************************************************************************* * Mats Alm Added 2016-03-28 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Substitute.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Substitute.cs index 73016e9b9..3db9e8c09 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Substitute.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Substitute.cs @@ -22,8 +22,8 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/T.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/T.cs index 1104cb6a0..6bdbf5aaa 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/T.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/T.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Text.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Text.cs index b8fe2410a..133f68d0c 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Text.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Text.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Jan Källman Added 2014-01-17 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Upper.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Upper.cs index 4efb9056b..49b047dfb 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Upper.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Upper.cs @@ -22,9 +22,9 @@ ******************************************************************************* * Mats Alm Added 2013-12-03 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Value.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Value.cs index bbb73b281..be6a63ece 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Value.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Functions/Text/Value.cs @@ -1,8 +1,8 @@ -using System.Collections.Generic; +using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System.Collections.Generic; using System.Globalization; using System.Text.RegularExpressions; -using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Text; @@ -20,7 +20,11 @@ public override CompileResult Execute(IEnumerable arguments, P ValidateArguments(arguments, 1); var val = ArgToString(arguments, 0); var result = 0d; - if (string.IsNullOrEmpty(val)) return CreateResult(result, DataType.Integer); + if (string.IsNullOrEmpty(val)) + { + return CreateResult(result, DataType.Integer); + } + val = val.TrimEnd(' '); if (Regex.IsMatch(val, $"^[\\d]*({Regex.Escape(_groupSeparator)}?[\\d]*)?({Regex.Escape(_decimalSeparator)}[\\d]*)*?[ ?% ?]?$")) { diff --git a/PanoramicData.EPPlus/FormulaParsing/Excel/Operators/Operator.cs b/PanoramicData.EPPlus/FormulaParsing/Excel/Operators/Operator.cs index ad7d667fb..46dbe5efd 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Excel/Operators/Operator.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Excel/Operators/Operator.cs @@ -28,9 +28,9 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ -using System; using OfficeOpenXml.FormulaParsing.ExpressionGraph; using OfficeOpenXml.Utils; +using System; namespace OfficeOpenXml.FormulaParsing.Excel.Operators; diff --git a/PanoramicData.EPPlus/FormulaParsing/ExcelAddressCache.cs b/PanoramicData.EPPlus/FormulaParsing/ExcelAddressCache.cs index c2d5363f9..00d6acbf6 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExcelAddressCache.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExcelAddressCache.cs @@ -53,10 +53,17 @@ public bool Add(int id, string address) { lock (_myLock) { - if (_addressCache.ContainsKey(id)) return false; + if (_addressCache.ContainsKey(id)) + { + return false; + } + _addressCache.Add(id, address); if (EnableLookupCache && !_lookupCache.ContainsKey(address)) + { _lookupCache.Add(address, id); + } + return true; } diff --git a/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/AddressTranslator.cs b/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/AddressTranslator.cs index 8aa9770bc..464be7f88 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/AddressTranslator.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/AddressTranslator.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ -using System.Text.RegularExpressions; using OfficeOpenXml.FormulaParsing.Utilities; +using System.Text.RegularExpressions; namespace OfficeOpenXml.FormulaParsing.ExcelUtilities; diff --git a/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/CellReferenceProvider.cs b/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/CellReferenceProvider.cs index 48c9c1f5f..42eb5118d 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/CellReferenceProvider.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/CellReferenceProvider.cs @@ -28,9 +28,9 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.LexicalAnalysis; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.LexicalAnalysis; namespace OfficeOpenXml.FormulaParsing.ExcelUtilities; diff --git a/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/ExpressionEvaluator.cs b/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/ExpressionEvaluator.cs index 6f01bf0e7..835a13c60 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/ExpressionEvaluator.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/ExpressionEvaluator.cs @@ -28,10 +28,10 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ -using System; -using System.Text.RegularExpressions; using OfficeOpenXml.FormulaParsing.Excel.Operators; using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using System; +using System.Text.RegularExpressions; namespace OfficeOpenXml.FormulaParsing.ExcelUtilities; @@ -56,8 +56,15 @@ private static string GetNonAlphanumericStartChars(string expression) { if (!string.IsNullOrEmpty(expression)) { - if (Regex.IsMatch(expression, @"^([^a-zA-Z0-9]{2})")) return expression[..2]; - if (Regex.IsMatch(expression, @"^([^a-zA-Z0-9]{1})")) return expression[..1]; + if (Regex.IsMatch(expression, @"^([^a-zA-Z0-9]{2})")) + { + return expression[..2]; + } + + if (Regex.IsMatch(expression, @"^([^a-zA-Z0-9]{1})")) + { + return expression[..1]; + } } return null; diff --git a/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/FormulaDependency.cs b/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/FormulaDependency.cs index 5cb85a274..d0de863e5 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/FormulaDependency.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/FormulaDependency.cs @@ -28,9 +28,9 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.Exceptions; using System; using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.Exceptions; namespace OfficeOpenXml.FormulaParsing.ExcelUtilities; diff --git a/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/ValueMatcher.cs b/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/ValueMatcher.cs index 8e7b48a31..575dfe00f 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/ValueMatcher.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExcelUtilities/ValueMatcher.cs @@ -38,9 +38,20 @@ public class ValueMatcher public virtual int IsMatch(object o1, object o2) { - if (o1 != null && o2 == null) return 1; - if (o1 == null && o2 != null) return -1; - if (o1 == null && o2 == null) return 0; + if (o1 != null && o2 == null) + { + return 1; + } + + if (o1 == null && o2 != null) + { + return -1; + } + + if (o1 == null && o2 == null) + { + return 0; + } //Handle ranges and defined names o1 = CheckGetRange(o1); o2 = CheckGetRange(o2); diff --git a/PanoramicData.EPPlus/FormulaParsing/ExcelValues.cs b/PanoramicData.EPPlus/FormulaParsing/ExcelValues.cs index 6c7d213f4..186b5265a 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExcelValues.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExcelValues.cs @@ -94,7 +94,11 @@ public static class Values /// public static bool IsErrorValue(object candidate) { - if (candidate is null or not ExcelErrorValue) return false; + if (candidate is null or not ExcelErrorValue) + { + return false; + } + var candidateString = candidate.ToString(); return !string.IsNullOrEmpty(candidateString) && _values.ContainsKey(candidateString); } @@ -126,7 +130,11 @@ internal static ExcelErrorValue Parse(string val) return new ExcelErrorValue(Values.ToErrorType(val)); } - if (string.IsNullOrEmpty(val)) throw new ArgumentNullException(nameof(val)); + if (string.IsNullOrEmpty(val)) + { + throw new ArgumentNullException(nameof(val)); + } + throw new ArgumentException("Not a valid error value: " + val); } @@ -166,5 +174,5 @@ private ExcelErrorValue(eErrorType type) public override int GetHashCode() => base.GetHashCode(); - public override bool Equals(object obj) => obj is ExcelErrorValue && ((ExcelErrorValue)obj).ToString() == ToString(); + public override bool Equals(object? obj) => obj is ExcelErrorValue && ((ExcelErrorValue)obj).ToString() == ToString(); } diff --git a/PanoramicData.EPPlus/FormulaParsing/Exceptions/ExcelErrorCodes.cs b/PanoramicData.EPPlus/FormulaParsing/Exceptions/ExcelErrorCodes.cs index b9b90f51e..eae7d5d87 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Exceptions/ExcelErrorCodes.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Exceptions/ExcelErrorCodes.cs @@ -48,7 +48,7 @@ public string Code public override int GetHashCode() => Code.GetHashCode(); - public override bool Equals(object obj) => obj is ExcelErrorCodes && ((ExcelErrorCodes)obj).Code.Equals(Code); + public override bool Equals(object? obj) => obj is ExcelErrorCodes && ((ExcelErrorCodes)obj).Code.Equals(Code); public static bool operator ==(ExcelErrorCodes c1, ExcelErrorCodes c2) { diff --git a/PanoramicData.EPPlus/FormulaParsing/Exceptions/UnrecognizedTokenException.cs b/PanoramicData.EPPlus/FormulaParsing/Exceptions/UnrecognizedTokenException.cs index 1e9d12ef8..f59693359 100644 --- a/PanoramicData.EPPlus/FormulaParsing/Exceptions/UnrecognizedTokenException.cs +++ b/PanoramicData.EPPlus/FormulaParsing/Exceptions/UnrecognizedTokenException.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ -using System; using OfficeOpenXml.FormulaParsing.LexicalAnalysis; +using System; namespace OfficeOpenXml.FormulaParsing.Exceptions; diff --git a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/CompileResult.cs b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/CompileResult.cs index c42fb14ed..be76ed1a1 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/CompileResult.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/CompileResult.cs @@ -28,10 +28,10 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.Excel.Functions; +using OfficeOpenXml.Utils; using System; using System.Linq; -using OfficeOpenXml.Utils; -using OfficeOpenXml.FormulaParsing.Excel.Functions; namespace OfficeOpenXml.FormulaParsing.ExpressionGraph; diff --git a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/CompileResultFactory.cs b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/CompileResultFactory.cs index 931682982..236272627 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/CompileResultFactory.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/CompileResultFactory.cs @@ -46,7 +46,11 @@ public virtual CompileResult Create(object obj) obj = ((ExcelDataProvider.IRangeInfo)obj).GetOffset(0, 0); } - if (obj == null) return new CompileResult(null, DataType.Empty); + if (obj == null) + { + return new CompileResult(null, DataType.Empty); + } + if (obj.GetType().Equals(typeof(string))) { return new CompileResult(obj, DataType.String); diff --git a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/ExcelAddressExpression.cs b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/ExcelAddressExpression.cs index 2bd3ad876..94656231e 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/ExcelAddressExpression.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/ExcelAddressExpression.cs @@ -28,10 +28,10 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ -using System; -using System.Linq; using OfficeOpenXml.FormulaParsing.ExcelUtilities; using OfficeOpenXml.FormulaParsing.Utilities; +using System; +using System.Linq; namespace OfficeOpenXml.FormulaParsing.ExpressionGraph; @@ -112,7 +112,10 @@ private CompileResult CompileSingleCell(ExcelDataProvider.IRangeInfo result) { var cell = result.FirstOrDefault(); if (cell == null) + { return CompileResult.Empty; + } + var factory = new CompileResultFactory(); var compileResult = factory.Create(cell.Value); if (_negate && compileResult.IsNumeric) diff --git a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/Expression.cs b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/Expression.cs index 47569407e..a33f0e7a9 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/Expression.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/Expression.cs @@ -28,10 +28,10 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.Excel.Operators; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.Excel.Operators; namespace OfficeOpenXml.FormulaParsing.ExpressionGraph; @@ -97,7 +97,11 @@ public virtual Expression MergeWithNext() } expression.Next = Next.Next; - if (expression.Next != null) expression.Next.Prev = expression; + if (expression.Next != null) + { + expression.Next.Prev = expression; + } + expression.Prev = Prev; } else diff --git a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/ExpressionCompiler.cs b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/ExpressionCompiler.cs index bb8bb67fb..61095ffc4 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/ExpressionCompiler.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/ExpressionCompiler.cs @@ -28,9 +28,9 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExpressionGraph.CompileStrategy; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph.CompileStrategy; namespace OfficeOpenXml.FormulaParsing.ExpressionGraph; @@ -77,13 +77,21 @@ private CompileResult PerformCompilation(string worksheet = "", int row = -1, in private IEnumerable HandleGroupedExpressions() { - if (!_expressions.Any()) return []; + if (!_expressions.Any()) + { + return []; + } + var first = _expressions.First(); var groupedExpressions = _expressions.Where(x => x.IsGroupedExpression); foreach (var groupedExpression in groupedExpressions) { var result = groupedExpression.Compile(); - if (result == CompileResult.Empty) continue; + if (result == CompileResult.Empty) + { + continue; + } + var newExp = _expressionConverter.FromCompileResult(result); newExp.Operator = groupedExpression.Operator; newExp.Prev = groupedExpression.Prev; diff --git a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/ExpressionGraphBuilder.cs b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/ExpressionGraphBuilder.cs index 117960d78..87d40be74 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/ExpressionGraphBuilder.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/ExpressionGraphBuilder.cs @@ -28,12 +28,12 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ -using System.Collections.Generic; -using System.Linq; -using System.Text; using OfficeOpenXml.FormulaParsing.Excel.Operators; using OfficeOpenXml.FormulaParsing.Exceptions; using OfficeOpenXml.FormulaParsing.LexicalAnalysis; +using System.Collections.Generic; +using System.Linq; +using System.Text; namespace OfficeOpenXml.FormulaParsing.ExpressionGraph; @@ -149,7 +149,11 @@ private void BuildEnumerableExpression(Token[] tokens, Expression parent) private void CreateAndAppendExpression(ref Expression parent, Token token) { - if (IsWaste(token)) return; + if (IsWaste(token)) + { + return; + } + if (parent != null && (token.TokenType == TokenType.Comma || token.TokenType == TokenType.SemiColon)) { diff --git a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/DefaultCompiler.cs b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/DefaultCompiler.cs index 3e04bb371..2ca17c431 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/DefaultCompiler.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/DefaultCompiler.cs @@ -28,9 +28,9 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.Excel; using OfficeOpenXml.FormulaParsing.Excel.Functions; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.ExpressionGraph.FunctionCompilers; diff --git a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/ErrorHandlingFunctionCompiler.cs b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/ErrorHandlingFunctionCompiler.cs index d7550c174..e9d84ef67 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/ErrorHandlingFunctionCompiler.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/ErrorHandlingFunctionCompiler.cs @@ -28,9 +28,9 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.Excel.Functions; using OfficeOpenXml.FormulaParsing.Exceptions; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.ExpressionGraph.FunctionCompilers; diff --git a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/FunctionCompiler.cs b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/FunctionCompiler.cs index c973a8356..408272000 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/FunctionCompiler.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/FunctionCompiler.cs @@ -28,9 +28,9 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.Excel.Functions; using OfficeOpenXml.FormulaParsing.Utilities; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.ExpressionGraph.FunctionCompilers; diff --git a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/FunctionCompilerFactory.cs b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/FunctionCompilerFactory.cs index 8d89cf308..305c626c9 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/FunctionCompilerFactory.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/FunctionCompilerFactory.cs @@ -28,11 +28,11 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ -using System; -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.Excel.Functions; using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical; using OfficeOpenXml.FormulaParsing.Utilities; +using System; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.ExpressionGraph.FunctionCompilers; @@ -60,7 +60,11 @@ private FunctionCompiler GetCompilerByType(ExcelFunction function) } public virtual FunctionCompiler Create(ExcelFunction function) { - if (function.IsLookupFuction) return new LookupFunctionCompiler(function, _context); + if (function.IsLookupFuction) + { + return new LookupFunctionCompiler(function, _context); + } + return function.IsErrorHandlingFunction ? new ErrorHandlingFunctionCompiler(function, _context) : GetCompilerByType(function); } } diff --git a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/IfErrorFunctionCompiler.cs b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/IfErrorFunctionCompiler.cs index 9e7c43ede..7cca0ea43 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/IfErrorFunctionCompiler.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/IfErrorFunctionCompiler.cs @@ -1,9 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using OfficeOpenXml.FormulaParsing.Excel.Functions; +using OfficeOpenXml.FormulaParsing.Excel.Functions; using OfficeOpenXml.FormulaParsing.Exceptions; using OfficeOpenXml.FormulaParsing.Utilities; +using System; +using System.Collections.Generic; +using System.Linq; namespace OfficeOpenXml.FormulaParsing.ExpressionGraph.FunctionCompilers; @@ -18,7 +18,11 @@ public IfErrorFunctionCompiler(ExcelFunction function, ParsingContext context) public override CompileResult Compile(IEnumerable children) { - if (children.Count() != 2) throw new ExcelErrorValueException(eErrorType.Value); + if (children.Count() != 2) + { + throw new ExcelErrorValueException(eErrorType.Value); + } + var args = new List(); Function.BeforeInvoke(Context); var firstChild = children.First(); diff --git a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/IfFunctionCompiler.cs b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/IfFunctionCompiler.cs index 0dc553272..609f934b5 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/IfFunctionCompiler.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/IfFunctionCompiler.cs @@ -28,13 +28,13 @@ * ****************************************************************************** * Mats Alm Added 2014-01-27 *******************************************************************************/ -using System; -using System.Collections.Generic; -using System.Linq; using OfficeOpenXml.FormulaParsing.Excel.Functions; using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical; using OfficeOpenXml.FormulaParsing.Exceptions; using OfficeOpenXml.FormulaParsing.Utilities; +using System; +using System.Collections.Generic; +using System.Linq; namespace OfficeOpenXml.FormulaParsing.ExpressionGraph.FunctionCompilers; @@ -50,13 +50,20 @@ public IfFunctionCompiler(ExcelFunction function, ParsingContext context) : base(function, context) { Require.That(function).Named("function").IsNotNull(); - if (function is not If) throw new ArgumentException("function must be of type If"); + if (function is not If) + { + throw new ArgumentException("function must be of type If"); + } } public override CompileResult Compile(IEnumerable children) { // 2 is allowed, Excel returns FALSE if false is the outcome of the expression - if (children.Count() < 2) throw new ExcelErrorValueException(eErrorType.Value); + if (children.Count() < 2) + { + throw new ExcelErrorValueException(eErrorType.Value); + } + var args = new List(); Function.BeforeInvoke(Context); var firstChild = children.ElementAt(0); diff --git a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/IfNaFunctionCompiler.cs b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/IfNaFunctionCompiler.cs index 41a067f7b..e127cf6f7 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/IfNaFunctionCompiler.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/IfNaFunctionCompiler.cs @@ -1,8 +1,8 @@ -using System; +using OfficeOpenXml.FormulaParsing.Excel.Functions; +using OfficeOpenXml.FormulaParsing.Exceptions; +using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.Excel.Functions; -using OfficeOpenXml.FormulaParsing.Exceptions; namespace OfficeOpenXml.FormulaParsing.ExpressionGraph.FunctionCompilers; @@ -16,7 +16,11 @@ public IfNaFunctionCompiler(ExcelFunction function, ParsingContext context) public override CompileResult Compile(IEnumerable children) { - if (children.Count() != 2) return new CompileResult(eErrorType.Value); + if (children.Count() != 2) + { + return new CompileResult(eErrorType.Value); + } + var args = new List(); Function.BeforeInvoke(Context); var firstChild = children.First(); diff --git a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/LookupFunctionCompiler.cs b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/LookupFunctionCompiler.cs index b7ded7c68..c76e4b16e 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/LookupFunctionCompiler.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionCompilers/LookupFunctionCompiler.cs @@ -28,10 +28,10 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.Excel.Functions; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.Excel.Functions; namespace OfficeOpenXml.FormulaParsing.ExpressionGraph.FunctionCompilers; diff --git a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionExpression.cs b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionExpression.cs index 9e786cc20..10cb0e811 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionExpression.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/FunctionExpression.cs @@ -28,9 +28,9 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ -using System.Linq; using OfficeOpenXml.FormulaParsing.Exceptions; using OfficeOpenXml.FormulaParsing.ExpressionGraph.FunctionCompilers; +using System.Linq; namespace OfficeOpenXml.FormulaParsing.ExpressionGraph; diff --git a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/IExpressionGraphBuilder.cs b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/IExpressionGraphBuilder.cs index b7b92bca9..1b366cc2d 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/IExpressionGraphBuilder.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ExpressionGraph/IExpressionGraphBuilder.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.LexicalAnalysis; +using System.Collections.Generic; namespace OfficeOpenXml.FormulaParsing.ExpressionGraph; diff --git a/PanoramicData.EPPlus/FormulaParsing/FormulaParser.cs b/PanoramicData.EPPlus/FormulaParsing/FormulaParser.cs index 1917533d0..4aa9292e5 100644 --- a/PanoramicData.EPPlus/FormulaParsing/FormulaParser.cs +++ b/PanoramicData.EPPlus/FormulaParsing/FormulaParser.cs @@ -28,16 +28,16 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ -using System; -using System.Collections.Generic; -using System.Linq; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; -using OfficeOpenXml.FormulaParsing.LexicalAnalysis; using OfficeOpenXml.FormulaParsing.Excel.Functions; using OfficeOpenXml.FormulaParsing.ExcelUtilities; +using OfficeOpenXml.FormulaParsing.Exceptions; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using OfficeOpenXml.FormulaParsing.LexicalAnalysis; using OfficeOpenXml.FormulaParsing.Logging; using OfficeOpenXml.FormulaParsing.Utilities; -using OfficeOpenXml.FormulaParsing.Exceptions; +using System; +using System.Collections.Generic; +using System.Linq; namespace OfficeOpenXml.FormulaParsing; diff --git a/PanoramicData.EPPlus/FormulaParsing/FormulaParserManager.cs b/PanoramicData.EPPlus/FormulaParsing/FormulaParserManager.cs index a457740d0..859e0f195 100644 --- a/PanoramicData.EPPlus/FormulaParsing/FormulaParserManager.cs +++ b/PanoramicData.EPPlus/FormulaParsing/FormulaParserManager.cs @@ -28,13 +28,13 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.Excel.Functions; +using OfficeOpenXml.FormulaParsing.Logging; +using OfficeOpenXml.FormulaParsing.Utilities; using System; using System.Collections.Generic; using System.IO; using System.Linq; -using OfficeOpenXml.FormulaParsing.Excel.Functions; -using OfficeOpenXml.FormulaParsing.Logging; -using OfficeOpenXml.FormulaParsing.Utilities; namespace OfficeOpenXml.FormulaParsing; /// diff --git a/PanoramicData.EPPlus/FormulaParsing/LexicalAnalysis/Lexer.cs b/PanoramicData.EPPlus/FormulaParsing/LexicalAnalysis/Lexer.cs index 0b05b5f0d..f776b9be3 100644 --- a/PanoramicData.EPPlus/FormulaParsing/LexicalAnalysis/Lexer.cs +++ b/PanoramicData.EPPlus/FormulaParsing/LexicalAnalysis/Lexer.cs @@ -28,8 +28,8 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ -using System.Collections.Generic; using OfficeOpenXml.FormulaParsing.Excel.Functions; +using System.Collections.Generic; //using OfficeOpenXml.FormulaParsing.Excel.Functions; namespace OfficeOpenXml.FormulaParsing.LexicalAnalysis; diff --git a/PanoramicData.EPPlus/FormulaParsing/LexicalAnalysis/SourceCodeTokenizer.cs b/PanoramicData.EPPlus/FormulaParsing/LexicalAnalysis/SourceCodeTokenizer.cs index 6e358cc3d..8e09ecaad 100644 --- a/PanoramicData.EPPlus/FormulaParsing/LexicalAnalysis/SourceCodeTokenizer.cs +++ b/PanoramicData.EPPlus/FormulaParsing/LexicalAnalysis/SourceCodeTokenizer.cs @@ -28,10 +28,10 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.Excel.Functions; using System.Collections.Generic; using System.Linq; using System.Text; -using OfficeOpenXml.FormulaParsing.Excel.Functions; namespace OfficeOpenXml.FormulaParsing.LexicalAnalysis; public class SourceCodeTokenizer : ISourceCodeTokenizer diff --git a/PanoramicData.EPPlus/FormulaParsing/LexicalAnalysis/SyntacticAnalyzer.cs b/PanoramicData.EPPlus/FormulaParsing/LexicalAnalysis/SyntacticAnalyzer.cs index a1fc51da1..29b34c09f 100644 --- a/PanoramicData.EPPlus/FormulaParsing/LexicalAnalysis/SyntacticAnalyzer.cs +++ b/PanoramicData.EPPlus/FormulaParsing/LexicalAnalysis/SyntacticAnalyzer.cs @@ -28,9 +28,9 @@ * ****************************************************************************** * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.Exceptions; using System; using System.Collections.Generic; -using OfficeOpenXml.FormulaParsing.Exceptions; namespace OfficeOpenXml.FormulaParsing.LexicalAnalysis; diff --git a/PanoramicData.EPPlus/FormulaParsing/LexicalAnalysis/TokenFactory.cs b/PanoramicData.EPPlus/FormulaParsing/LexicalAnalysis/TokenFactory.cs index a0ffee717..45d2f2272 100644 --- a/PanoramicData.EPPlus/FormulaParsing/LexicalAnalysis/TokenFactory.cs +++ b/PanoramicData.EPPlus/FormulaParsing/LexicalAnalysis/TokenFactory.cs @@ -29,13 +29,13 @@ * Mats Alm Added 2013-03-01 (Prior file history on https://github.com/swmal/ExcelFormulaParser) * Jan Källman Replaced Adress validate 2013-03-01 * *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.Excel.Functions; +using OfficeOpenXml.FormulaParsing.Utilities; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text.RegularExpressions; -using OfficeOpenXml.FormulaParsing.Excel.Functions; -using OfficeOpenXml.FormulaParsing.Utilities; namespace OfficeOpenXml.FormulaParsing.LexicalAnalysis; diff --git a/PanoramicData.EPPlus/FormulaParsing/ParsingConfiguration.cs b/PanoramicData.EPPlus/FormulaParsing/ParsingConfiguration.cs index acc6f755f..8af84ebbb 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ParsingConfiguration.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ParsingConfiguration.cs @@ -16,9 +16,9 @@ ******************************************************************************* * Mats Alm Added 2016-12-27 *******************************************************************************/ -using OfficeOpenXml.FormulaParsing.LexicalAnalysis; -using OfficeOpenXml.FormulaParsing.ExpressionGraph; using OfficeOpenXml.FormulaParsing.Excel.Functions; +using OfficeOpenXml.FormulaParsing.ExpressionGraph; +using OfficeOpenXml.FormulaParsing.LexicalAnalysis; using OfficeOpenXml.FormulaParsing.Logging; using OfficeOpenXml.FormulaParsing.Utilities; diff --git a/PanoramicData.EPPlus/FormulaParsing/ParsingScope.cs b/PanoramicData.EPPlus/FormulaParsing/ParsingScope.cs index eda865c31..85f9537b4 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ParsingScope.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ParsingScope.cs @@ -16,8 +16,8 @@ ******************************************************************************* * Mats Alm Added 2016-12-27 *******************************************************************************/ -using System; using OfficeOpenXml.FormulaParsing.ExcelUtilities; +using System; namespace OfficeOpenXml.FormulaParsing; diff --git a/PanoramicData.EPPlus/FormulaParsing/ParsingScopes.cs b/PanoramicData.EPPlus/FormulaParsing/ParsingScopes.cs index c001339de..ece0c2f7b 100644 --- a/PanoramicData.EPPlus/FormulaParsing/ParsingScopes.cs +++ b/PanoramicData.EPPlus/FormulaParsing/ParsingScopes.cs @@ -16,10 +16,10 @@ ******************************************************************************* * Mats Alm Added 2016-12-27 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExcelUtilities; using System; using System.Collections.Generic; using System.Linq; -using OfficeOpenXml.FormulaParsing.ExcelUtilities; namespace OfficeOpenXml.FormulaParsing; diff --git a/PanoramicData.EPPlus/OfficeProperties.cs b/PanoramicData.EPPlus/OfficeProperties.cs index e71ec428c..172504d9d 100644 --- a/PanoramicData.EPPlus/OfficeProperties.cs +++ b/PanoramicData.EPPlus/OfficeProperties.cs @@ -31,11 +31,11 @@ * Jan Källman License changed GPL-->LGPL 2011-12-27 * Raziq York Added Created & Modified 2014-08-20 *******************************************************************************/ +using OfficeOpenXml.Utils; using System; -using System.Xml; -using System.IO; using System.Globalization; -using OfficeOpenXml.Utils; +using System.IO; +using System.Xml; namespace OfficeOpenXml; @@ -105,7 +105,9 @@ private XmlDocument GetXmlDocument(string startXml, Uri uri, string contentType, { XmlDocument xmlDoc; if (_package.Package.PartExists(uri)) + { xmlDoc = _package.GetXmlFromUri(uri); + } else { xmlDoc = new XmlDocument(); @@ -501,7 +503,10 @@ public void SetCustomPropertyValue(string propertyName, object value) } else { - while (node.ChildNodes.Count > 0) node.RemoveChild(node.ChildNodes[0]); + while (node.ChildNodes.Count > 0) + { + node.RemoveChild(node.ChildNodes[0]); + } } XmlElement valueElem; diff --git a/PanoramicData.EPPlus/Packaging/ZipPackagePart.cs b/PanoramicData.EPPlus/Packaging/ZipPackagePart.cs index f2d9f2520..65128497a 100644 --- a/PanoramicData.EPPlus/Packaging/ZipPackagePart.cs +++ b/PanoramicData.EPPlus/Packaging/ZipPackagePart.cs @@ -28,10 +28,10 @@ ******************************************************************************* * Jan Källman Added 25-Oct-2012 *******************************************************************************/ -using System; -using System.IO; using OfficeOpenXml.Packaging.DotNetZip; using OfficeOpenXml.Packaging.Ionic.Zip; +using System; +using System.IO; namespace OfficeOpenXml.Packaging; diff --git a/PanoramicData.EPPlus/Packaging/ZipPackageRelationshipCollection.cs b/PanoramicData.EPPlus/Packaging/ZipPackageRelationshipCollection.cs index 540c758ff..63d3ac1a5 100644 --- a/PanoramicData.EPPlus/Packaging/ZipPackageRelationshipCollection.cs +++ b/PanoramicData.EPPlus/Packaging/ZipPackageRelationshipCollection.cs @@ -28,11 +28,11 @@ ******************************************************************************* * Jan Källman Added 25-Oct-2012 *******************************************************************************/ +using OfficeOpenXml.Packaging.DotNetZip; using System; using System.Collections.Generic; -using System.Text; using System.Security; -using OfficeOpenXml.Packaging.DotNetZip; +using System.Text; namespace OfficeOpenXml.Packaging; diff --git a/PanoramicData.EPPlus/RangeCollection.cs b/PanoramicData.EPPlus/RangeCollection.cs index 73b96299f..8e61bb72c 100644 --- a/PanoramicData.EPPlus/RangeCollection.cs +++ b/PanoramicData.EPPlus/RangeCollection.cs @@ -51,8 +51,8 @@ * Jan Källman License changed GPL-->LGPL 2011-12-27 *******************************************************************************/ using System; -using System.Collections.Generic; using System.Collections; +using System.Collections.Generic; namespace OfficeOpenXml; /// @@ -176,7 +176,11 @@ internal void Delete(ulong key) internal int InsertRowsUpdateIndex(ulong rowID, int rows) { var index = IndexOf(rowID); - if (index < 0) index = ~index; //No match found invert to get start cell + if (index < 0) + { + index = ~index; //No match found invert to get start cell + } + var rowAdd = (((ulong)rows) << 29); for (var i = index; i < _cells.Count; i++) { @@ -194,7 +198,11 @@ internal int InsertRowsUpdateIndex(ulong rowID, int rows) internal int InsertRows(ulong rowID, int rows) { var index = IndexOf(rowID); - if (index < 0) index = ~index; //No match found invert to get start cell + if (index < 0) + { + index = ~index; //No match found invert to get start cell + } + var rowAdd = (((ulong)rows) << 29); for (var i = index; i < _cells.Count; i++) { @@ -214,21 +222,34 @@ internal int DeleteRows(ulong rowID, int rows, bool updateCells) { var rowAdd = (((ulong)rows) << 29); var index = IndexOf(rowID); - if (index < 0) index = ~index; //No match found invert to get start cell + if (index < 0) + { + index = ~index; //No match found invert to get start cell + } + + if (index >= _cells.Count || _cellIndex[index] == null) + { + return -1; //No row above this row + } - if (index >= _cells.Count || _cellIndex[index] == null) return -1; //No row above this row while (index < _cells.Count && _cellIndex[index].RangeID < rowID + rowAdd) { Delete(_cellIndex[index].RangeID); } var updIndex = IndexOf(rowID + rowAdd); - if (updIndex < 0) updIndex = ~updIndex; //No match found invert to get start cell + if (updIndex < 0) + { + updIndex = ~updIndex; //No match found invert to get start cell + } for (var i = updIndex; i < _cells.Count; i++) { _cellIndex[i].RangeID -= rowAdd; //Change the index - if (updateCells) _cells[_cellIndex[i].ListPointer].RangeID -= rowAdd; //Change the cell/row or column object + if (updateCells) + { + _cells[_cellIndex[i].ListPointer].RangeID -= rowAdd; //Change the cell/row or column object + } } return index; @@ -244,7 +265,11 @@ internal int DeleteRows(ulong rowID, int rows, bool updateCells) private void InitSize(List _cells) { _size = 128; - while (_cells.Count > _size) _size <<= 1; + while (_cells.Count > _size) + { + _size <<= 1; + } + _cellIndex = new IndexItem[_size]; } /// diff --git a/PanoramicData.EPPlus/Sparkline/ExcelSparkline.cs b/PanoramicData.EPPlus/Sparkline/ExcelSparkline.cs index c9862ce38..5a55a1859 100644 --- a/PanoramicData.EPPlus/Sparkline/ExcelSparkline.cs +++ b/PanoramicData.EPPlus/Sparkline/ExcelSparkline.cs @@ -27,9 +27,13 @@ internal ExcelAddressBase RangeAddress //SetXmlNodeString(_fPath, value.FullAddress); if (value is ExcelNamedRange) + { SetXmlNodeString(_fPath, (value as ExcelNamedRange).Name); + } else + { SetXmlNodeString(_fPath, value.FullAddress); + } } } diff --git a/PanoramicData.EPPlus/Sparkline/ExcelSparklineColor.cs b/PanoramicData.EPPlus/Sparkline/ExcelSparklineColor.cs index 953c8eccf..a3031f529 100644 --- a/PanoramicData.EPPlus/Sparkline/ExcelSparklineColor.cs +++ b/PanoramicData.EPPlus/Sparkline/ExcelSparklineColor.cs @@ -1,8 +1,8 @@ using OfficeOpenXml.Style; using System; using System.Drawing; -using System.Xml; using System.Globalization; +using System.Xml; namespace OfficeOpenXml.Sparkline; diff --git a/PanoramicData.EPPlus/Sparkline/ExcelSparklineGroup.cs b/PanoramicData.EPPlus/Sparkline/ExcelSparklineGroup.cs index a3c0bbcec..b118a0e01 100644 --- a/PanoramicData.EPPlus/Sparkline/ExcelSparklineGroup.cs +++ b/PanoramicData.EPPlus/Sparkline/ExcelSparklineGroup.cs @@ -83,7 +83,11 @@ public ExcelRangeBase DateAxisRange get { var f = GetXmlNodeString("xm:f"); - if (string.IsNullOrEmpty(f)) return null; + if (string.IsNullOrEmpty(f)) + { + return null; + } + var a = new ExcelAddressBase(f); if (a.WorkSheet.Equals(_ws.Name, StringComparison.CurrentCultureIgnoreCase)) { diff --git a/PanoramicData.EPPlus/Style/Dxf/ExcelDxfStyle.cs b/PanoramicData.EPPlus/Style/Dxf/ExcelDxfStyle.cs index 9e95fcfc0..7e33633a4 100644 --- a/PanoramicData.EPPlus/Style/Dxf/ExcelDxfStyle.cs +++ b/PanoramicData.EPPlus/Style/Dxf/ExcelDxfStyle.cs @@ -1,7 +1,7 @@ using System; +using System.Drawing; using System.Globalization; using System.Xml; -using System.Drawing; namespace OfficeOpenXml.Style.Dxf; @@ -57,7 +57,11 @@ private ExcelDxfBorderItem GetBorderItem(XmlHelperInstance helper, string path) } private static ExcelBorderStyle GetBorderStyleEnum(string style) { - if (style == "") return ExcelBorderStyle.None; + if (style == "") + { + return ExcelBorderStyle.None; + } + var sInStyle = style[..1].ToUpper(CultureInfo.InvariantCulture) + style[1..]; try { @@ -71,7 +75,11 @@ private static ExcelBorderStyle GetBorderStyleEnum(string style) } private static ExcelFillStyle GetPatternTypeEnum(string patternType) { - if (patternType == "") return ExcelFillStyle.None; + if (patternType == "") + { + return ExcelFillStyle.None; + } + patternType = patternType[..1].ToUpper(CultureInfo.InvariantCulture) + patternType[1..]; try { @@ -131,10 +139,25 @@ protected internal override ExcelDxfStyleConditionalFormatting Clone() protected internal override void CreateNodes(XmlHelper helper, string path) { - if (Font.HasValue) Font.CreateNodes(helper, "d:font"); - if (NumberFormat.HasValue) NumberFormat.CreateNodes(helper, "d:numFmt"); - if (Fill.HasValue) Fill.CreateNodes(helper, "d:fill"); - if (Border.HasValue) Border.CreateNodes(helper, "d:border"); + if (Font.HasValue) + { + Font.CreateNodes(helper, "d:font"); + } + + if (NumberFormat.HasValue) + { + NumberFormat.CreateNodes(helper, "d:numFmt"); + } + + if (Fill.HasValue) + { + Fill.CreateNodes(helper, "d:fill"); + } + + if (Border.HasValue) + { + Border.CreateNodes(helper, "d:border"); + } } protected internal override bool HasValue => Font.HasValue || NumberFormat.HasValue || Fill.HasValue || Border.HasValue; } diff --git a/PanoramicData.EPPlus/Style/ExcelBorderItem.cs b/PanoramicData.EPPlus/Style/ExcelBorderItem.cs index 3f4b6083d..34af1a7b0 100644 --- a/PanoramicData.EPPlus/Style/ExcelBorderItem.cs +++ b/PanoramicData.EPPlus/Style/ExcelBorderItem.cs @@ -29,8 +29,8 @@ * Jan Källman Initial Release 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ -using System; using OfficeOpenXml.Style.XmlAccess; +using System; namespace OfficeOpenXml.Style; diff --git a/PanoramicData.EPPlus/Style/ExcelColor.cs b/PanoramicData.EPPlus/Style/ExcelColor.cs index 95428b049..f7a912aab 100644 --- a/PanoramicData.EPPlus/Style/ExcelColor.cs +++ b/PanoramicData.EPPlus/Style/ExcelColor.cs @@ -29,8 +29,8 @@ * Jan Källman Initial Release 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ -using System; using OfficeOpenXml.Style.XmlAccess; +using System; using System.Drawing; namespace OfficeOpenXml.Style; diff --git a/PanoramicData.EPPlus/Style/ExcelFill.cs b/PanoramicData.EPPlus/Style/ExcelFill.cs index 33a851f05..57d9c7691 100644 --- a/PanoramicData.EPPlus/Style/ExcelFill.cs +++ b/PanoramicData.EPPlus/Style/ExcelFill.cs @@ -53,7 +53,11 @@ public ExcelFillStyle PatternType } set { - if (_gradient != null) _gradient = null; + if (_gradient != null) + { + _gradient = null; + } + _ChangedEvent(this, new StyleChangeEventArgs(eStyleClass.Fill, eStyleProperty.PatternType, value, _positionID, _address)); } } @@ -68,7 +72,10 @@ public ExcelColor PatternColor if (_patternColor == null) { _patternColor = new ExcelColor(_styles, _ChangedEvent, _positionID, _address, eStyleClass.FillPatternColor, this); - if (_gradient != null) _gradient = null; + if (_gradient != null) + { + _gradient = null; + } } return _patternColor; @@ -85,7 +92,10 @@ public ExcelColor BackgroundColor if (_backgroundColor == null) { _backgroundColor = new ExcelColor(_styles, _ChangedEvent, _positionID, _address, eStyleClass.FillBackgroundColor, this); - if (_gradient != null) _gradient = null; + if (_gradient != null) + { + _gradient = null; + } } return _backgroundColor; diff --git a/PanoramicData.EPPlus/Style/ExcelGradientFill.cs b/PanoramicData.EPPlus/Style/ExcelGradientFill.cs index 930f6d4a9..330a78f29 100644 --- a/PanoramicData.EPPlus/Style/ExcelGradientFill.cs +++ b/PanoramicData.EPPlus/Style/ExcelGradientFill.cs @@ -29,8 +29,8 @@ * Jan Källman Initial Release 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ -using System; using OfficeOpenXml.Style.XmlAccess; +using System; namespace OfficeOpenXml.Style; diff --git a/PanoramicData.EPPlus/Style/ExcelRichText.cs b/PanoramicData.EPPlus/Style/ExcelRichText.cs index c1a9033e1..d940bc1d3 100644 --- a/PanoramicData.EPPlus/Style/ExcelRichText.cs +++ b/PanoramicData.EPPlus/Style/ExcelRichText.cs @@ -32,9 +32,9 @@ * Richard Tallent Remove VertAlign node if no alignment specified 2012-10-31 *******************************************************************************/ using System; -using System.Xml; using System.Drawing; using System.Globalization; +using System.Xml; namespace OfficeOpenXml.Style; @@ -75,7 +75,10 @@ public string Text elem.SetAttribute("xml:space", "preserve"); } - if (_callback != null) _callback(); + if (_callback != null) + { + _callback(); + } } } /// @@ -102,7 +105,10 @@ public bool PreserveSpace } } - if (_callback != null) _callback(); + if (_callback != null) + { + _callback(); + } } } const string BOLD_PATH = "d:rPr/d:b"; @@ -127,7 +133,10 @@ public bool Bold DeleteNode(BOLD_PATH); } - if (_callback != null) _callback(); + if (_callback != null) + { + _callback(); + } } } const string ITALIC_PATH = "d:rPr/d:i"; @@ -153,7 +162,10 @@ public bool Italic DeleteNode(ITALIC_PATH); } - if (_callback != null) _callback(); + if (_callback != null) + { + _callback(); + } } } const string STRIKE_PATH = "d:rPr/d:strike"; @@ -178,7 +190,10 @@ public bool Strike DeleteNode(STRIKE_PATH); } - if (_callback != null) _callback(); + if (_callback != null) + { + _callback(); + } } } const string UNDERLINE_PATH = "d:rPr/d:u"; @@ -203,7 +218,10 @@ public bool UnderLine DeleteNode(UNDERLINE_PATH); } - if (_callback != null) _callback(); + if (_callback != null) + { + _callback(); + } } } @@ -247,7 +265,10 @@ public ExcelVerticalAlignmentFont VerticalAlign SetXmlNodeString(VERT_ALIGN_PATH, value.ToString().ToLowerInvariant()); } - if (_callback != null) _callback(); + if (_callback != null) + { + _callback(); + } } } const string SIZE_PATH = "d:rPr/d:sz/@val"; @@ -264,7 +285,10 @@ public float Size { _collection.ConvertRichtext(); SetXmlNodeString(SIZE_PATH, value.ToString(CultureInfo.InvariantCulture)); - if (_callback != null) _callback(); + if (_callback != null) + { + _callback(); + } } } const string FONT_PATH = "d:rPr/d:rFont/@val"; @@ -281,7 +305,10 @@ public string FontName { _collection.ConvertRichtext(); SetXmlNodeString(FONT_PATH, value); - if (_callback != null) _callback(); + if (_callback != null) + { + _callback(); + } } } const string COLOR_PATH = "d:rPr/d:color/@rgb"; @@ -299,7 +326,10 @@ public Color Color { _collection.ConvertRichtext(); SetXmlNodeString(COLOR_PATH, value.ToArgb().ToString("X")/*.Substring(2, 6)*/); - if (_callback != null) _callback(); + if (_callback != null) + { + _callback(); + } } } diff --git a/PanoramicData.EPPlus/Style/ExcelRichTextCollection.cs b/PanoramicData.EPPlus/Style/ExcelRichTextCollection.cs index 9121e92b4..69be2f623 100644 --- a/PanoramicData.EPPlus/Style/ExcelRichTextCollection.cs +++ b/PanoramicData.EPPlus/Style/ExcelRichTextCollection.cs @@ -30,11 +30,11 @@ * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ using System.Collections.Generic; +using System.Drawing; +using System.Globalization; using System.Linq; using System.Text; using System.Xml; -using System.Drawing; -using System.Globalization; namespace OfficeOpenXml.Style; @@ -72,7 +72,11 @@ public ExcelRichText this[int Index] get { var item = _list[Index]; - if (_cells != null) item.SetCallback(UpdateCells); + if (_cells != null) + { + item.SetCallback(UpdateCells); + } + return item; } } @@ -165,7 +169,11 @@ public ExcelRichText Insert(int index, string text) internal void ConvertRichtext() { - if (_cells == null) return; + if (_cells == null) + { + return; + } + var isRt = _cells.Worksheet._flags.GetFlagValue(_cells._fromRow, _cells._fromCol, CellFlags.RichText); if (Count == 1 && isRt == false) { @@ -195,7 +203,10 @@ public void Clear() _list.Clear(); TopNode.RemoveAll(); UpdateCells(); - if (_cells != null) _cells.IsRichText = false; + if (_cells != null) + { + _cells.IsRichText = false; + } } /// /// Removes an item at the specific index @@ -205,7 +216,10 @@ public void RemoveAt(int Index) { TopNode.RemoveChild(_list[Index].TopNode); _list.RemoveAt(Index); - if (_cells != null && _list.Count == 0) _cells.IsRichText = false; + if (_cells != null && _list.Count == 0) + { + _cells.IsRichText = false; + } } /// /// Removes an item @@ -215,7 +229,10 @@ public void Remove(ExcelRichText Item) { TopNode.RemoveChild(Item.TopNode); _list.Remove(Item); - if (_cells != null && _list.Count == 0) _cells.IsRichText = false; + if (_cells != null && _list.Count == 0) + { + _cells.IsRichText = false; + } } //public void Insert(int index, string Text) //{ diff --git a/PanoramicData.EPPlus/Style/ExcelStyle.cs b/PanoramicData.EPPlus/Style/ExcelStyle.cs index 0bd1975dc..ce2e3b048 100644 --- a/PanoramicData.EPPlus/Style/ExcelStyle.cs +++ b/PanoramicData.EPPlus/Style/ExcelStyle.cs @@ -29,8 +29,8 @@ * Jan Källman Initial Release 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ -using System; using OfficeOpenXml.Style.XmlAccess; +using System; namespace OfficeOpenXml.Style; diff --git a/PanoramicData.EPPlus/Style/ExcelTextFont.cs b/PanoramicData.EPPlus/Style/ExcelTextFont.cs index 4184bf970..114e03389 100644 --- a/PanoramicData.EPPlus/Style/ExcelTextFont.cs +++ b/PanoramicData.EPPlus/Style/ExcelTextFont.cs @@ -30,10 +30,10 @@ * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ using System; -using System.Globalization; -using System.Xml; using System.Drawing; +using System.Globalization; using System.Runtime.Versioning; +using System.Xml; namespace OfficeOpenXml.Style; @@ -265,9 +265,24 @@ public void SetFromFont(Font Font) LatinFont = Font.Name; ComplexFont = Font.Name; Size = Font.Size; - if (Font.Bold) Bold = Font.Bold; - if (Font.Italic) Italic = Font.Italic; - if (Font.Underline) UnderLine = eUnderLineType.Single; - if (Font.Strikeout) Strike = eStrikeType.Single; + if (Font.Bold) + { + Bold = Font.Bold; + } + + if (Font.Italic) + { + Italic = Font.Italic; + } + + if (Font.Underline) + { + UnderLine = eUnderLineType.Single; + } + + if (Font.Strikeout) + { + Strike = eStrikeType.Single; + } } } diff --git a/PanoramicData.EPPlus/Style/XmlAccess/ExcelBorderItemXml.cs b/PanoramicData.EPPlus/Style/XmlAccess/ExcelBorderItemXml.cs index 673eaa6d2..a76b733df 100644 --- a/PanoramicData.EPPlus/Style/XmlAccess/ExcelBorderItemXml.cs +++ b/PanoramicData.EPPlus/Style/XmlAccess/ExcelBorderItemXml.cs @@ -61,7 +61,11 @@ internal ExcelBorderItemXml(XmlNamespaceManager nsm, XmlNode topNode) : private static ExcelBorderStyle GetBorderStyle(string style) { - if (style == "") return ExcelBorderStyle.None; + if (style == "") + { + return ExcelBorderStyle.None; + } + var sInStyle = style[..1].ToUpper(CultureInfo.InvariantCulture) + style[1..]; try { diff --git a/PanoramicData.EPPlus/Style/XmlAccess/ExcelColorXml.cs b/PanoramicData.EPPlus/Style/XmlAccess/ExcelColorXml.cs index d53e9a21f..fe9a419ee 100644 --- a/PanoramicData.EPPlus/Style/XmlAccess/ExcelColorXml.cs +++ b/PanoramicData.EPPlus/Style/XmlAccess/ExcelColorXml.cs @@ -30,8 +30,8 @@ * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ using System; -using System.Xml; using System.Globalization; +using System.Xml; namespace OfficeOpenXml.Style.XmlAccess; /// diff --git a/PanoramicData.EPPlus/Style/XmlAccess/ExcelFillXml.cs b/PanoramicData.EPPlus/Style/XmlAccess/ExcelFillXml.cs index 761843ff7..4d92f5f66 100644 --- a/PanoramicData.EPPlus/Style/XmlAccess/ExcelFillXml.cs +++ b/PanoramicData.EPPlus/Style/XmlAccess/ExcelFillXml.cs @@ -56,7 +56,11 @@ internal ExcelFillXml(XmlNamespaceManager nsm, XmlNode topNode) : private static ExcelFillStyle GetPatternType(string patternType) { - if (patternType == "") return ExcelFillStyle.None; + if (patternType == "") + { + return ExcelFillStyle.None; + } + patternType = patternType[..1].ToUpper(CultureInfo.InvariantCulture) + patternType[1..]; try { diff --git a/PanoramicData.EPPlus/Style/XmlAccess/ExcelFontXml.cs b/PanoramicData.EPPlus/Style/XmlAccess/ExcelFontXml.cs index 2618816e8..0ccc4aedf 100644 --- a/PanoramicData.EPPlus/Style/XmlAccess/ExcelFontXml.cs +++ b/PanoramicData.EPPlus/Style/XmlAccess/ExcelFontXml.cs @@ -32,8 +32,8 @@ using System; using System.Drawing; using System.Globalization; -using System.Xml; using System.Runtime.Versioning; +using System.Xml; namespace OfficeOpenXml.Style.XmlAccess; /// @@ -334,9 +334,32 @@ internal override XmlNode CreateXmlNode(XmlNode topElement) { TopNode = topElement; - if (_bold) CreateNode(boldPath); else DeleteAllNode(boldPath); - if (_italic) CreateNode(italicPath); else DeleteAllNode(italicPath); - if (_strike) CreateNode(strikePath); else DeleteAllNode(strikePath); + if (_bold) + { + CreateNode(boldPath); + } + else + { + DeleteAllNode(boldPath); + } + + if (_italic) + { + CreateNode(italicPath); + } + else + { + DeleteAllNode(italicPath); + } + + if (_strike) + { + CreateNode(strikePath); + } + else + { + DeleteAllNode(strikePath); + } if (_underlineType == ExcelUnderLineType.None) { @@ -352,17 +375,36 @@ internal override XmlNode CreateXmlNode(XmlNode topElement) SetXmlNodeString(underLinedPath + "/@val", v[..1].ToLower(CultureInfo.InvariantCulture) + v[1..]); } - if (_verticalAlign != "") SetXmlNodeString(verticalAlignPath, _verticalAlign.ToString()); - if (_size > 0) SetXmlNodeString(sizePath, _size.ToString(CultureInfo.InvariantCulture)); + if (_verticalAlign != "") + { + SetXmlNodeString(verticalAlignPath, _verticalAlign.ToString()); + } + + if (_size > 0) + { + SetXmlNodeString(sizePath, _size.ToString(CultureInfo.InvariantCulture)); + } + if (_color.Exists) { CreateNode(_colorPath); TopNode.AppendChild(_color.CreateXmlNode(TopNode.SelectSingleNode(_colorPath, NameSpaceManager))); } - if (!string.IsNullOrEmpty(_name)) SetXmlNodeString(namePath, _name); - if (_family > int.MinValue) SetXmlNodeString(familyPath, _family.ToString()); - if (_scheme != "") SetXmlNodeString(schemePath, _scheme.ToString()); + if (!string.IsNullOrEmpty(_name)) + { + SetXmlNodeString(namePath, _name); + } + + if (_family > int.MinValue) + { + SetXmlNodeString(familyPath, _family.ToString()); + } + + if (_scheme != "") + { + SetXmlNodeString(schemePath, _scheme.ToString()); + } return TopNode; } diff --git a/PanoramicData.EPPlus/Style/XmlAccess/ExcelGradientFillXml.cs b/PanoramicData.EPPlus/Style/XmlAccess/ExcelGradientFillXml.cs index 3861254b7..9fb5c7bec 100644 --- a/PanoramicData.EPPlus/Style/XmlAccess/ExcelGradientFillXml.cs +++ b/PanoramicData.EPPlus/Style/XmlAccess/ExcelGradientFillXml.cs @@ -29,8 +29,8 @@ * Jan Källman Initial Release 2009-10-01 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ -using System.Xml; using System.Globalization; +using System.Xml; namespace OfficeOpenXml.Style.XmlAccess; /// @@ -158,8 +158,16 @@ internal override XmlNode CreateXmlNode(XmlNode topNode) { TopNode = topNode; CreateNode("d:gradientFill"); - if (Type == ExcelFillGradientType.Path) SetXmlNodeString(_typePath, "path"); - if (!double.IsNaN(Degree)) SetXmlNodeString(_degreePath, Degree.ToString(CultureInfo.InvariantCulture)); + if (Type == ExcelFillGradientType.Path) + { + SetXmlNodeString(_typePath, "path"); + } + + if (!double.IsNaN(Degree)) + { + SetXmlNodeString(_degreePath, Degree.ToString(CultureInfo.InvariantCulture)); + } + if (GradientColor1 != null) { /*** Gradient color node 1***/ @@ -181,10 +189,25 @@ internal override XmlNode CreateXmlNode(XmlNode topNode) GradientColor2.CreateXmlNode(colorNode); } - if (!double.IsNaN(Top)) SetXmlNodeString(_topPath, Top.ToString("F5", CultureInfo.InvariantCulture)); - if (!double.IsNaN(Bottom)) SetXmlNodeString(_bottomPath, Bottom.ToString("F5", CultureInfo.InvariantCulture)); - if (!double.IsNaN(Left)) SetXmlNodeString(_leftPath, Left.ToString("F5", CultureInfo.InvariantCulture)); - if (!double.IsNaN(Right)) SetXmlNodeString(_rightPath, Right.ToString("F5", CultureInfo.InvariantCulture)); + if (!double.IsNaN(Top)) + { + SetXmlNodeString(_topPath, Top.ToString("F5", CultureInfo.InvariantCulture)); + } + + if (!double.IsNaN(Bottom)) + { + SetXmlNodeString(_bottomPath, Bottom.ToString("F5", CultureInfo.InvariantCulture)); + } + + if (!double.IsNaN(Left)) + { + SetXmlNodeString(_leftPath, Left.ToString("F5", CultureInfo.InvariantCulture)); + } + + if (!double.IsNaN(Right)) + { + SetXmlNodeString(_rightPath, Right.ToString("F5", CultureInfo.InvariantCulture)); + } return topNode; } diff --git a/PanoramicData.EPPlus/Style/XmlAccess/ExcelNamedStyleXml.cs b/PanoramicData.EPPlus/Style/XmlAccess/ExcelNamedStyleXml.cs index 6dd825ea1..a0d889832 100644 --- a/PanoramicData.EPPlus/Style/XmlAccess/ExcelNamedStyleXml.cs +++ b/PanoramicData.EPPlus/Style/XmlAccess/ExcelNamedStyleXml.cs @@ -128,8 +128,16 @@ internal override XmlNode CreateXmlNode(XmlNode topNode) TopNode = topNode; SetXmlNodeString(namePath, _name); SetXmlNodeString("@xfId", _styles.CellStyleXfs[StyleXfId].newID.ToString()); - if (BuildInId >= 0) SetXmlNodeString("@builtinId", BuildInId.ToString()); - if (CustomBuildin) SetXmlNodeBool(customBuiltinPath, true); + if (BuildInId >= 0) + { + SetXmlNodeString("@builtinId", BuildInId.ToString()); + } + + if (CustomBuildin) + { + SetXmlNodeBool(customBuiltinPath, true); + } + return TopNode; } } diff --git a/PanoramicData.EPPlus/Style/XmlAccess/ExcelNumberFormatXml.cs b/PanoramicData.EPPlus/Style/XmlAccess/ExcelNumberFormatXml.cs index 5b9005359..25323d06c 100644 --- a/PanoramicData.EPPlus/Style/XmlAccess/ExcelNumberFormatXml.cs +++ b/PanoramicData.EPPlus/Style/XmlAccess/ExcelNumberFormatXml.cs @@ -354,7 +354,11 @@ private void ToNetFormat(string ExcelFormat, bool forColWidth) if (DataType == eFormatType.DateTime || secCount == 3) { //Add qoutes - if (DataType == eFormatType.DateTime) SetDecimal(lstDec, sb); //Remove? + if (DataType == eFormatType.DateTime) + { + SetDecimal(lstDec, sb); //Remove? + } + lstDec = []; format = sb.ToString(); sb = new StringBuilder(); @@ -460,7 +464,9 @@ private void ToNetFormat(string ExcelFormat, bool forColWidth) } if (startPos > 0) //RemovePart + { sb.Remove(sb.Length - (pos - startPos - 1), (pos - startPos - 1)); + } var endPos = pos + 1; while (endPos < ExcelFormat.Length && @@ -503,7 +509,10 @@ private void ToNetFormat(string ExcelFormat, bool forColWidth) } //Add qoutes - if (DataType == eFormatType.DateTime) SetDecimal(lstDec, sb); //Remove? + if (DataType == eFormatType.DateTime) + { + SetDecimal(lstDec, sb); //Remove? + } // AM/PM format if (containsAmPm) @@ -513,9 +522,13 @@ private void ToNetFormat(string ExcelFormat, bool forColWidth) if (format == "") + { format = sb.ToString(); + } else + { text = sb.ToString(); + } if (forColWidth) { @@ -604,9 +617,15 @@ internal string FormatFraction(double d) listPos = index; - if (result == prevResult) break; + if (result == prevResult) + { + break; + } - if (result == d) break; + if (result == d) + { + break; + } prevResult = result; @@ -624,7 +643,11 @@ internal string FormatFraction(double d) if (numerator == denomerator || numerator == 0) { - if (numerator == denomerator) intPart++; + if (numerator == denomerator) + { + intPart++; + } + return sign + intPart.ToString(NetFormat).Replace("?", new string(' ', FractionFormat.Length)); } else diff --git a/PanoramicData.EPPlus/Style/XmlAccess/ExcelXfsXml.cs b/PanoramicData.EPPlus/Style/XmlAccess/ExcelXfsXml.cs index 4c6a65536..7aed93da6 100644 --- a/PanoramicData.EPPlus/Style/XmlAccess/ExcelXfsXml.cs +++ b/PanoramicData.EPPlus/Style/XmlAccess/ExcelXfsXml.cs @@ -30,9 +30,9 @@ * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ using System; +using System.Drawing; using System.Globalization; using System.Xml; -using System.Drawing; namespace OfficeOpenXml.Style.XmlAccess; /// @@ -51,7 +51,11 @@ internal ExcelXfs(XmlNamespaceManager nsm, XmlNode topNode, ExcelStyles styles) { _styles = styles; _xfID = GetXmlNodeInt("@xfId"); - if (_xfID == 0) isBuildIn = true; //Normal taggen + if (_xfID == 0) + { + isBuildIn = true; //Normal taggen + } + _numFmtId = GetXmlNodeInt("@numFmtId"); _fontId = GetXmlNodeInt("@fontId"); _fillId = GetXmlNodeInt("@fillId"); @@ -77,7 +81,11 @@ internal ExcelXfs(XmlNamespaceManager nsm, XmlNode topNode, ExcelStyles styles) private static ExcelHorizontalAlignment GetHorizontalAlign(string align) { - if (align == "") return ExcelHorizontalAlignment.General; + if (align == "") + { + return ExcelHorizontalAlignment.General; + } + align = align[..1].ToUpper(CultureInfo.InvariantCulture) + align[1..]; try { @@ -91,7 +99,11 @@ private static ExcelHorizontalAlignment GetHorizontalAlign(string align) private static ExcelVerticalAlignment GetVerticalAlign(string align) { - if (align == "") return ExcelVerticalAlignment.Bottom; + if (align == "") + { + return ExcelVerticalAlignment.Bottom; + } + align = align[..1].ToUpper(CultureInfo.InvariantCulture) + align[1..]; try { @@ -797,42 +809,93 @@ internal XmlNode CreateXmlNode(XmlNode topNode, bool isCellStyleXsf) if (_numFmtId >= 0) { SetXmlNodeString("@numFmtId", _numFmtId.ToString()); - if (doSetXfId) SetXmlNodeString("@applyNumberFormat", "1"); + if (doSetXfId) + { + SetXmlNodeString("@applyNumberFormat", "1"); + } } if (_fontId >= 0) { SetXmlNodeString("@fontId", _styles.Fonts[_fontId].newID.ToString()); - if (doSetXfId) SetXmlNodeString("@applyFont", "1"); + if (doSetXfId) + { + SetXmlNodeString("@applyFont", "1"); + } } if (_fillId >= 0) { SetXmlNodeString("@fillId", _styles.Fills[_fillId].newID.ToString()); - if (doSetXfId) SetXmlNodeString("@applyFill", "1"); + if (doSetXfId) + { + SetXmlNodeString("@applyFill", "1"); + } } if (_borderId >= 0) { SetXmlNodeString("@borderId", _styles.Borders[_borderId].newID.ToString()); - if (doSetXfId) SetXmlNodeString("@applyBorder", "1"); + if (doSetXfId) + { + SetXmlNodeString("@applyBorder", "1"); + } + } + + if (_horizontalAlignment != ExcelHorizontalAlignment.General) + { + SetXmlNodeString(horizontalAlignPath, SetAlignString(_horizontalAlignment)); } - if (_horizontalAlignment != ExcelHorizontalAlignment.General) SetXmlNodeString(horizontalAlignPath, SetAlignString(_horizontalAlignment)); if (doSetXfId) { SetXmlNodeString("@xfId", _styles.CellStyleXfs[_xfID].newID.ToString()); } - if (_verticalAlignment != ExcelVerticalAlignment.Bottom) SetXmlNodeString(verticalAlignPath, SetAlignString(_verticalAlignment)); - if (_wrapText) SetXmlNodeString(wrapTextPath, "1"); - if (_readingOrder != ExcelReadingOrder.ContextDependent) SetXmlNodeString(readingOrderPath, ((int)_readingOrder).ToString()); - if (_shrinkToFit) SetXmlNodeString(shrinkToFitPath, "1"); - if (_indent > 0) SetXmlNodeString(indentPath, _indent.ToString()); - if (_textRotation > 0) SetXmlNodeString(textRotationPath, _textRotation.ToString()); - if (!_locked) SetXmlNodeString(lockedPath, "0"); - if (_hidden) SetXmlNodeString(hiddenPath, "1"); - if (_quotePrefix) SetXmlNodeString(quotePrefixPath, "1"); + if (_verticalAlignment != ExcelVerticalAlignment.Bottom) + { + SetXmlNodeString(verticalAlignPath, SetAlignString(_verticalAlignment)); + } + + if (_wrapText) + { + SetXmlNodeString(wrapTextPath, "1"); + } + + if (_readingOrder != ExcelReadingOrder.ContextDependent) + { + SetXmlNodeString(readingOrderPath, ((int)_readingOrder).ToString()); + } + + if (_shrinkToFit) + { + SetXmlNodeString(shrinkToFitPath, "1"); + } + + if (_indent > 0) + { + SetXmlNodeString(indentPath, _indent.ToString()); + } + + if (_textRotation > 0) + { + SetXmlNodeString(textRotationPath, _textRotation.ToString()); + } + + if (!_locked) + { + SetXmlNodeString(lockedPath, "0"); + } + + if (_hidden) + { + SetXmlNodeString(hiddenPath, "1"); + } + + if (_quotePrefix) + { + SetXmlNodeString(quotePrefixPath, "1"); + } if ((_locked || _hidden) && doSetXfId) { diff --git a/PanoramicData.EPPlus/Table/ExcelTable.cs b/PanoramicData.EPPlus/Table/ExcelTable.cs index 8955a78c6..1cbe54102 100644 --- a/PanoramicData.EPPlus/Table/ExcelTable.cs +++ b/PanoramicData.EPPlus/Table/ExcelTable.cs @@ -29,14 +29,14 @@ * Jan Källman Added 30-AUG-2010 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ +using OfficeOpenXml.FormulaParsing.ExcelUtilities; +using OfficeOpenXml.Utils; using System; using System.Collections.Generic; +using System.Security; using System.Text; -using System.Xml; using System.Text.RegularExpressions; -using OfficeOpenXml.Utils; -using System.Security; -using OfficeOpenXml.FormulaParsing.ExcelUtilities; +using System.Xml; namespace OfficeOpenXml.Table; diff --git a/PanoramicData.EPPlus/Table/ExcelTableCollection.cs b/PanoramicData.EPPlus/Table/ExcelTableCollection.cs index 6efe5f36e..e6f79cef9 100644 --- a/PanoramicData.EPPlus/Table/ExcelTableCollection.cs +++ b/PanoramicData.EPPlus/Table/ExcelTableCollection.cs @@ -158,7 +158,10 @@ public void Delete(ExcelTable Table, bool ClearRange = false) { foreach (var table in sheet.Tables) { - if (table.Id > Table.Id) table.Id--; + if (table.Id > Table.Id) + { + table.Id--; + } } Table.WorkSheet.Workbook._nextTableID--; diff --git a/PanoramicData.EPPlus/Table/ExcelTableColumn.cs b/PanoramicData.EPPlus/Table/ExcelTableColumn.cs index 75a336024..c83a0e7bb 100644 --- a/PanoramicData.EPPlus/Table/ExcelTableColumn.cs +++ b/PanoramicData.EPPlus/Table/ExcelTableColumn.cs @@ -29,10 +29,10 @@ * Jan Källman Added 30-AUG-2010 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ +using OfficeOpenXml.Utils; using System; using System.Globalization; using System.Xml; -using OfficeOpenXml.Utils; namespace OfficeOpenXml.Table; @@ -177,7 +177,11 @@ public string TotalsRowFormula } set { - if (value.StartsWith("=")) value = value[1..]; + if (value.StartsWith("=")) + { + value = value[1..]; + } + SetXmlNodeString("@totalsRowFunction", "custom"); SetXmlNodeString(TOTALSROWFORMULA_PATH, value); _tbl.WorkSheet.SetTableTotalFunction(_tbl, this); @@ -228,7 +232,11 @@ public string CalculatedColumnFormula } set { - if (value.StartsWith("=")) value = value[1..]; + if (value.StartsWith("=")) + { + value = value[1..]; + } + SetXmlNodeString(CALCULATEDCOLUMNFORMULA_PATH, value); } } diff --git a/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotCacheDefinition.cs b/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotCacheDefinition.cs index 2cc71d653..e21d3d251 100644 --- a/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotCacheDefinition.cs +++ b/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotCacheDefinition.cs @@ -29,12 +29,12 @@ * Jan Källman Added 21-MAR-2011 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ +using OfficeOpenXml.Utils; using System; -using System.Text; -using System.Xml; using System.Linq; -using OfficeOpenXml.Utils; using System.Security; +using System.Text; +using System.Xml; namespace OfficeOpenXml.Table.PivotTable; diff --git a/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotTable.cs b/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotTable.cs index 00c4dd981..3fe39c37c 100644 --- a/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotTable.cs +++ b/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotTable.cs @@ -29,11 +29,11 @@ * Jan Källman Added 21-MAR-2011 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ +using OfficeOpenXml.Utils; using System; using System.Text; -using System.Xml; using System.Text.RegularExpressions; -using OfficeOpenXml.Utils; +using System.Xml; namespace OfficeOpenXml.Table.PivotTable; diff --git a/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotTableDataField.cs b/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotTableDataField.cs index da3cdf958..68309ad9a 100644 --- a/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotTableDataField.cs +++ b/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotTableDataField.cs @@ -29,10 +29,10 @@ * Jan Källman Added 21-MAR-2011 * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ +using OfficeOpenXml.Style.XmlAccess; using System; using System.Globalization; using System.Xml; -using OfficeOpenXml.Style.XmlAccess; namespace OfficeOpenXml.Table.PivotTable; diff --git a/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotTableField.cs b/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotTableField.cs index cf2e439f0..d4ee23874 100644 --- a/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotTableField.cs +++ b/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotTableField.cs @@ -31,8 +31,8 @@ *******************************************************************************/ using System; using System.Collections.Generic; -using System.Xml; using System.Globalization; +using System.Xml; namespace OfficeOpenXml.Table.PivotTable; @@ -392,7 +392,11 @@ public eSubTotalFunctions SubTotalFunctions { eSubTotalFunctions ret = 0; var nl = TopNode.SelectNodes("d:items/d:item/@t", NameSpaceManager); - if (nl.Count == 0) return eSubTotalFunctions.None; + if (nl.Count == 0) + { + return eSubTotalFunctions.None; + } + foreach (XmlAttribute item in nl) { try @@ -1018,7 +1022,11 @@ private void AddDateGrouping(eDateGroupBy groupBy, DateTime startDate, DateTime fields.Add(AddField(eDateGroupBy.Years, startDate, endDate, ref firstField)); } - if (fields.Count > 1) _cacheFieldHelper.SetXmlNodeString("d:fieldGroup/@par", (_table.Fields.Count - 1).ToString()); + if (fields.Count > 1) + { + _cacheFieldHelper.SetXmlNodeString("d:fieldGroup/@par", (_table.Fields.Count - 1).ToString()); + } + if (groupInterval != 1) { _cacheFieldHelper.SetXmlNodeString("d:fieldGroup/d:rangePr/@groupInterval", groupInterval.ToString()); diff --git a/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotTableFieldGroup.cs b/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotTableFieldGroup.cs index 5f75cbf9a..784091303 100644 --- a/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotTableFieldGroup.cs +++ b/PanoramicData.EPPlus/Table/PivotTable/ExcelPivotTableFieldGroup.cs @@ -30,8 +30,8 @@ * Jan Källman License changed GPL-->LGPL 2011-12-16 *******************************************************************************/ using System; -using System.Xml; using System.Globalization; +using System.Xml; namespace OfficeOpenXml.Table.PivotTable; diff --git a/PanoramicData.EPPlus/Utils/CompundDocument/CompoundDocumentFile.cs b/PanoramicData.EPPlus/Utils/CompundDocument/CompoundDocumentFile.cs index 1cd4e973e..452e9a46a 100644 --- a/PanoramicData.EPPlus/Utils/CompundDocument/CompoundDocumentFile.cs +++ b/PanoramicData.EPPlus/Utils/CompundDocument/CompoundDocumentFile.cs @@ -111,7 +111,7 @@ public static bool IsCompoundDocument(FileInfo fi) { try { - var fs = fi.OpenRead(); + using var fs = fi.OpenRead(); var b = new byte[8]; fs.ReadAtLeast(b.AsSpan(0, 8), 8, throwOnEndOfStream: false); return IsCompoundDocument(b); @@ -132,7 +132,11 @@ public static bool IsCompoundDocument(MemoryStream ms) } public static bool IsCompoundDocument(byte[] b) { - if (b == null || b.Length < 8) return false; + if (b == null || b.Length < 8) + { + return false; + } + for (var i = 0; i < 8; i++) { if (b[i] != header[i]) @@ -338,7 +342,11 @@ private static void ReadDirectory(List sectors, int index, List dirs) { - if (e._handled == true) return; + if (e._handled == true) + { + return; + } + e._handled = true; if (e.ChildID > 0) { @@ -501,7 +509,10 @@ private static int SetSiblings(int listAdd, List children, var item = children[pos]; if (item._handled) + { return currSibl; + } + item._handled = true; if (fromPos == toPos) { @@ -510,11 +521,16 @@ private static int SetSiblings(int listAdd, List children, div = pos / 2; if (div <= 0) + { div = 1; + } + var lPos = GetPos(fromPos, pos - 1); var rPos = GetPos(pos + 1, toPos); if (div == 1 && children[lPos]._handled && children[rPos]._handled) + { return pos + listAdd; + } if (lPos > -1 && lPos >= fromPos) { @@ -537,22 +553,34 @@ private static int GetPos(int fromPos, int toPos) private static bool NoGreater(List children, int pos, int lPos, int listAdd) { - if (pos - lPos <= 1) return true; + if (pos - lPos <= 1) + { + return true; + } + for (var i = lPos + 1; i <= pos; i++) { if (children[i].RightSibling != -1 && children[i].RightSibling > lPos + listAdd) + { return false; + } } return true; } private static bool NoLess(List children, int pos, int rPos, int listAdd) { - if (rPos - pos <= 1) return true; + if (rPos - pos <= 1) + { + return true; + } + for (var i = pos + 1; i <= rPos; i++) { if (children[i].LeftSibling != -1 && children[i].LeftSibling < rPos + listAdd) + { return false; + } } return true; @@ -767,7 +795,10 @@ private void AllocateFAT(BinaryWriter bw, int miniFatLength, List 0 && rest < _sectorSize) fullStreamSize += rest; + if (rest > 0 && rest < _sectorSize) + { + fullStreamSize += rest; + } } } @@ -812,7 +843,11 @@ private void AllocateFAT(BinaryWriter bw, int miniFatLength, List 0) _firstDIFATSectorLocation = sectorPos + 1; + if (_numberofDIFATSectors > 0) + { + _firstDIFATSectorLocation = sectorPos + 1; + } + for (var j = 0; j < _numberofDIFATSectors; j++) { WriteFATItem(bw, DIFAT_SECTOR); @@ -883,7 +918,9 @@ private static void WriteStreamFullSector(BinaryWriter bw, int sectorSize) { var rest = sectorSize - (bw.BaseStream.Length % sectorSize); if (rest > 0 && rest < sectorSize) + { bw.Write(new byte[rest]); + } } private void WriteHeader(BinaryWriter bw) { @@ -935,7 +972,11 @@ private static int WriteStream(BinaryWriter bw, List fat, byte[] stream, in { var rest = FATSectorSize - (stream.Length % FATSectorSize); bw.Write(stream); - if (rest > 0 && rest < FATSectorSize) bw.Write(new byte[rest]); + if (rest > 0 && rest < FATSectorSize) + { + bw.Write(new byte[rest]); + } + var ret = fat.Count; AddFAT(fat, stream.Length, FATSectorSize, 0); diff --git a/PanoramicData.EPPlus/Utils/ConvertUtil.cs b/PanoramicData.EPPlus/Utils/ConvertUtil.cs index 93107d7ef..5e3a1e86b 100644 --- a/PanoramicData.EPPlus/Utils/ConvertUtil.cs +++ b/PanoramicData.EPPlus/Utils/ConvertUtil.cs @@ -40,7 +40,10 @@ internal static bool TryParseNumericString(object candidate, out double result) internal static bool TryParseBooleanString(object candidate, out bool result) { if (candidate != null) + { return bool.TryParse(candidate.ToString(), out result); + } + result = false; return false; } @@ -201,14 +204,21 @@ internal static string ExcelEncodeString(string t) internal static string ExcelDecodeString(string t) { var match = Regex.Match(t, "(_x005F|_x[0-9A-F]{4,4}_)"); - if (!match.Success) return t; + if (!match.Success) + { + return t; + } var useNextValue = false; var ret = new StringBuilder(); var prevIndex = 0; while (match.Success) { - if (prevIndex < match.Index) ret.Append(t[prevIndex..match.Index]); + if (prevIndex < match.Index) + { + ret.Append(t[prevIndex..match.Index]); + } + if (!useNextValue && match.Value == "_x005F") { useNextValue = true; @@ -271,35 +281,51 @@ internal static string ExcelDecodeString(string t) : null; if (fromType == toType || fromType == toNullableUnderlyingType) + { return (T)value; + } // if converting to nullable struct and input is blank string, return null if (toNullableUnderlyingType != null && fromType == typeof(string) && ((string)value).Trim() == string.Empty) + { return default; + } toType = toNullableUnderlyingType ?? toType; if (toType == typeof(DateTime)) { if (value is double) + { return (T)(object)(DateTime.FromOADate((double)value)); + } if (fromType == typeof(TimeSpan)) + { return ((T)(object)(new DateTime(((TimeSpan)value).Ticks))); + } if (fromType == typeof(string)) + { return (T)(object)DateTime.Parse(value.ToString()); + } } else if (toType == typeof(TimeSpan)) { if (value is double) + { return (T)(object)(new TimeSpan(DateTime.FromOADate((double)value).Ticks)); + } if (fromType == typeof(DateTime)) + { return ((T)(object)(new TimeSpan(((DateTime)value).Ticks))); + } if (fromType == typeof(string)) + { return (T)(object)TimeSpan.Parse(value.ToString()); + } } return (T)Convert.ChangeType(value, toType); diff --git a/PanoramicData.EPPlus/Utils/VBACompression.cs b/PanoramicData.EPPlus/Utils/VBACompression.cs index 53d459683..296383c40 100644 --- a/PanoramicData.EPPlus/Utils/VBACompression.cs +++ b/PanoramicData.EPPlus/Utils/VBACompression.cs @@ -145,7 +145,10 @@ private static byte[] CompressChunk(byte[] buffer, ref int startPos) comprBuffer[cPos++] = buffer[dPos++]; } - if (dPos >= dEnd) break; + if (dPos >= dEnd) + { + break; + } } comprBuffer[flagPos] = tokenFlags; @@ -199,7 +202,10 @@ private static void DecompressChunk(MemoryStream ms, byte[] compBuffer, ref int //Decompress token var token = compBuffer[pos++]; if (pos >= endPos) + { break; + } + for (var i = 0; i < 8; i++) { //Literal token @@ -244,7 +250,9 @@ private static void DecompressChunk(MemoryStream ms, byte[] compBuffer, ref int } if (pos >= endPos) + { break; + } } } diff --git a/PanoramicData.EPPlus/VBA/ExcelVBAProject.cs b/PanoramicData.EPPlus/VBA/ExcelVBAProject.cs index 61bc46192..232e6945f 100644 --- a/PanoramicData.EPPlus/VBA/ExcelVBAProject.cs +++ b/PanoramicData.EPPlus/VBA/ExcelVBAProject.cs @@ -18,14 +18,14 @@ ******************************************************************************* * Jan Källman Added 26-MAR-2012 *******************************************************************************/ +using OfficeOpenXml.Utils; +using OfficeOpenXml.Utils.CompundDocument; using System; -using System.Linq; -using System.Text; using System.IO; -using OfficeOpenXml.Utils; +using System.Linq; using System.Security.Cryptography; +using System.Text; using System.Text.RegularExpressions; -using OfficeOpenXml.Utils.CompundDocument; namespace OfficeOpenXml.VBA; @@ -1098,7 +1098,10 @@ internal static ExcelVbaModuleAttributesCollection GetDocumentAttributes(string /// public void Remove() { - if (Part == null) return; + if (Part == null) + { + return; + } foreach (var rel in Part.GetRelationships()) { diff --git a/PanoramicData.EPPlus/VBA/ExcelVBASignature.cs b/PanoramicData.EPPlus/VBA/ExcelVBASignature.cs index 6014addf8..230d1b2b9 100644 --- a/PanoramicData.EPPlus/VBA/ExcelVBASignature.cs +++ b/PanoramicData.EPPlus/VBA/ExcelVBASignature.cs @@ -52,7 +52,11 @@ internal ExcelVbaSignature(Packaging.ZipPackagePart vbaPart) } private void GetSignature() { - if (_vbaPart == null) return; + if (_vbaPart == null) + { + return; + } + var rel = _vbaPart.GetRelationshipsByType(schemaRelVbaSignature).FirstOrDefault(); if (rel != null) { diff --git a/PanoramicData.EPPlus/VBA/ExcelVbaProtection.cs b/PanoramicData.EPPlus/VBA/ExcelVbaProtection.cs index 76d4d5e2a..1ffa2db5e 100644 --- a/PanoramicData.EPPlus/VBA/ExcelVbaProtection.cs +++ b/PanoramicData.EPPlus/VBA/ExcelVbaProtection.cs @@ -29,8 +29,8 @@ * Jan Källman Added 12-APR-2012 *******************************************************************************/ using System; -using System.Text; using System.Security.Cryptography; +using System.Text; namespace OfficeOpenXml.VBA; diff --git a/PanoramicData.EPPlus/XmlHelper.cs b/PanoramicData.EPPlus/XmlHelper.cs index 6e8bf6057..27c0ab04d 100644 --- a/PanoramicData.EPPlus/XmlHelper.cs +++ b/PanoramicData.EPPlus/XmlHelper.cs @@ -95,7 +95,11 @@ internal XmlNode CreateNode(string path, bool insertFirst, bool addNew = false) { var node = TopNode; XmlNode prependNode = null; - if (path.StartsWith('/')) path = path[1..]; + if (path.StartsWith('/')) + { + path = path[1..]; + } + var subPaths = path.Split('/'); for (var i = 0; i < subPaths.Length; i++) { @@ -118,7 +122,11 @@ internal XmlNode CreateNode(string path, bool insertFirst, bool addNew = false) if (nameSplit.Length > 1) { nodePrefix = nameSplit[0]; - if (nodePrefix[0] == '@') nodePrefix = nodePrefix[1..]; + if (nodePrefix[0] == '@') + { + nodePrefix = nodePrefix[1..]; + } + nameSpaceURI = NameSpaceManager.LookupNamespace(nodePrefix); nodeName = nameSplit[1]; }