diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Cells/XLCellsCollection.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Cells/XLCellsCollection.cs index fae4549..2d4d867 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Cells/XLCellsCollection.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Cells/XLCellsCollection.cs @@ -279,7 +279,7 @@ return _cellsDictionary.TryGetValue(sheetPoint, out cell) ? cell : null; } - internal void SwapRanges(XLSheetRange sheetRange1, XLSheetRange sheetRange2) + internal void SwapRanges(XLSheetRange sheetRange1, XLSheetRange sheetRange2, XLWorksheet worksheet) { Int32 rowCount = sheetRange1.LastPoint.Row - sheetRange1.FirstPoint.Row + 1; Int32 columnCount = sheetRange1.LastPoint.Column - sheetRange1.FirstPoint.Column + 1; @@ -292,21 +292,22 @@ var cell1 = GetCell(sp1); var cell2 = GetCell(sp2); - if (cell1 == null && cell2 == null) continue; + if (cell1 == null) cell1 = worksheet.Cell(sp1.Row, sp1.Column); + if (cell2 == null) cell2 = worksheet.Cell(sp2.Row, sp2.Column); - if (cell1 != null) - { + //if (cell1 != null) + //{ cell1.Address = new XLAddress(cell1.Worksheet, sp2.Row, sp2.Column, false, false); Remove(sp1); - if (cell2 != null) + //if (cell2 != null) Add(sp1, cell2); - } + //} - if (cell2 == null) continue; + //if (cell2 == null) continue; cell2.Address = new XLAddress(cell2.Worksheet, sp1.Row, sp1.Column, false, false); Remove(sp2); - if (cell1 != null) + //if (cell1 != null) Add(sp2, cell1); } } diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs index 3a6f014..56366d4 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs @@ -1703,8 +1703,6 @@ if (maxRow == XLHelper.MaxRowNumber) maxRow = LastCellUsed(true).Address.RowNumber; - // Call all cells to make sure they exist even if empty - Worksheet.Range(1, 1, maxRow, RangeAddress.LastAddress.ColumnNumber).Cells().ForEach(c=> { }); SortingRangeRows(1, maxRow); } @@ -1722,7 +1720,7 @@ var range2Sp2 = new XLSheetPoint(row2InWs, lastColumn); Worksheet.Internals.CellsCollection.SwapRanges(new XLSheetRange(range1Sp1, range1Sp2), - new XLSheetRange(range2Sp1, range2Sp2)); + new XLSheetRange(range2Sp1, range2Sp2), Worksheet); } private int SortRangeRows(int begPoint, int endPoint) @@ -1787,7 +1785,7 @@ var range2Sp2 = new XLSheetPoint(lastRow, col2InWs); Worksheet.Internals.CellsCollection.SwapRanges(new XLSheetRange(range1Sp1, range1Sp2), - new XLSheetRange(range2Sp1, range2Sp2)); + new XLSheetRange(range2Sp1, range2Sp2), Worksheet); } private int SortRangeColumns(int begPoint, int endPoint) diff --git a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/SortExample.xlsx b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/SortExample.xlsx index cfa7b7b..9301a33 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/SortExample.xlsx +++ b/ClosedXML/ClosedXML/ClosedXML_Tests/Resource/Examples/Ranges/SortExample.xlsx Binary files differ