Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
24 changes: 24 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand Down
89 changes: 74 additions & 15 deletions PanoramicData.EPPlus/CellStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
}

Expand Down Expand Up @@ -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];
Expand All @@ -842,7 +858,11 @@ internal void Delete(int fromRow, int fromCol, int rows, int columns, bool shift
{
var endRow = fromRow + rows;
var delEndRow = CellStore<T>.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);
Expand All @@ -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<T>.DeleteCells(column._pages[pagePos], fr, shift ? fr + rowsLeft : endRow, shift);
if (shift) UpdatePageOffset(column, pagePos, rowsLeft);
if (shift)
{
UpdatePageOffset(column, pagePos, rowsLeft);
}
}
}
}
Expand All @@ -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);
}
}
}
}
Expand Down Expand Up @@ -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)
{
Expand All @@ -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;

Expand Down Expand Up @@ -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)
{
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;

Expand All @@ -1957,7 +2012,11 @@ internal int Column
{
get
{
if (_colPos == -1) MoveNext();
if (_colPos == -1)
{
MoveNext();
}

return _colPos == -1 ? 0 : _cellStore._columnIndex[_colPos].Index;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -169,7 +169,9 @@ internal ExcelConditionalFormattingCollection(

// Add the new rule to the list
if (cfRule != null)
{
_rules.Add(cfRule);
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
* ******************************************************************************
* Eyal Seagull Conditional Formatting 2012-04-03
*******************************************************************************/
using OfficeOpenXml.Utils;
using OfficeOpenXml.ConditionalFormatting.Contracts;
using OfficeOpenXml.Utils;

namespace OfficeOpenXml.ConditionalFormatting;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
* ******************************************************************************
* Eyal Seagull Added 2012-04-03
*******************************************************************************/
using System.Xml;
using OfficeOpenXml.ConditionalFormatting.Contracts;
using System.Xml;

namespace OfficeOpenXml.ConditionalFormatting.Rules;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
* ******************************************************************************
* Eyal Seagull Added 2012-04-03
*******************************************************************************/
using System.Xml;
using OfficeOpenXml.ConditionalFormatting.Contracts;
using System.Xml;

namespace OfficeOpenXml.ConditionalFormatting.Rules;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
* ******************************************************************************
* Eyal Seagull Added 2012-04-03
*******************************************************************************/
using System.Xml;
using OfficeOpenXml.ConditionalFormatting.Contracts;
using System.Xml;

namespace OfficeOpenXml.ConditionalFormatting.Rules;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
* ******************************************************************************
* Eyal Seagull Added 2012-04-03
*******************************************************************************/
using System.Xml;
using OfficeOpenXml.ConditionalFormatting.Contracts;
using System.Xml;

namespace OfficeOpenXml.ConditionalFormatting.Rules;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
* ******************************************************************************
* Eyal Seagull Added 2012-04-03
*******************************************************************************/
using System.Xml;
using OfficeOpenXml.ConditionalFormatting.Contracts;
using System.Xml;

namespace OfficeOpenXml.ConditionalFormatting.Rules;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
* ******************************************************************************
* Eyal Seagull Added 2012-04-03
*******************************************************************************/
using System.Xml;
using OfficeOpenXml.ConditionalFormatting.Contracts;
using System.Xml;

namespace OfficeOpenXml.ConditionalFormatting.Rules;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
* ******************************************************************************
* Eyal Seagull Added 2012-04-03
*******************************************************************************/
using System.Xml;
using OfficeOpenXml.ConditionalFormatting.Contracts;
using System.Xml;

namespace OfficeOpenXml.ConditionalFormatting.Rules;

Expand Down
Loading