diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs index 10c058d..35d19b5 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/Ranges/XLRangeBase.cs @@ -752,6 +752,7 @@ var newCell = new XLCell(Worksheet, newKey, oldCell.Style); newCell.CopyValues(oldCell); + newCell.FormulaA1 = oldCell.FormulaA1; cellsToInsert.Add(newKey, newCell); cellsToDelete.Add(oldKey); if (oldKey.ColumnNumber < firstColumn + numberOfColumns) @@ -771,6 +772,7 @@ var newKey = new XLAddress(Worksheet, c.Address.RowNumber, newColumn, false, false); var newCell = new XLCell(Worksheet, newKey, c.Style); newCell.CopyValues(c); + newCell.FormulaA1 = c.FormulaA1; cellsToInsert.Add(newKey, newCell); cellsToDelete.Add(c.Address); if (c.Address.ColumnNumber < firstColumn + numberOfColumns) @@ -903,6 +905,7 @@ var newCell = new XLCell(Worksheet, newKey, oldCell.Style); newCell.CopyFrom(oldCell); + newCell.FormulaA1 = oldCell.FormulaA1; cellsToInsert.Add(newKey, newCell); cellsToDelete.Add(oldKey); if (oldKey.RowNumber < firstRow + numberOfRows) @@ -923,6 +926,7 @@ var newKey = new XLAddress(Worksheet, newRow, c.Address.ColumnNumber, false, false); var newCell = new XLCell(Worksheet, newKey, c.Style); newCell.CopyFrom(c); + newCell.FormulaA1 = c.FormulaA1; cellsToInsert.Add(newKey, newCell); cellsToDelete.Add(c.Address); if (c.Address.RowNumber < firstRow + numberOfRows) @@ -1016,7 +1020,7 @@ false, false); var newCell = new XLCell(Worksheet, newKey, c.Style); newCell.CopyValues(c); - //newCell.ShiftFormula(rowModifier * -1, columnModifier * -1); + newCell.FormulaA1 = c.FormulaA1; cellsToDelete.Add(c.Address); bool canInsert = shiftDeleteCells == XLShiftDeletedCells.ShiftCellsLeft diff --git a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs index 1233ede..c407725 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Excel/XLWorkbook_Save.cs @@ -2663,6 +2663,7 @@ { sheetData.RemoveChild(sheetDataRows[r.Key]); sheetDataRows.Remove(r.Key); + xlWorksheet.Internals.CellsCollection.Deleted.RemoveWhere(d => d.Row == r.Key); } var distinctRows = cellsByRow.Keys.Union(xlWorksheet.Internals.RowsCollection.Keys); @@ -2726,11 +2727,14 @@ var cellsByReference = row.Elements().ToDictionary(c => c.CellReference.Value, c => c); - foreach (XLSheetPoint c in xlWorksheet.Internals.CellsCollection.Deleted) + foreach (XLSheetPoint c in xlWorksheet.Internals.CellsCollection.Deleted.ToList()) { String key = ExcelHelper.GetColumnLetterFromNumber(c.Column) + c.Row.ToStringLookup(); if (cellsByReference.ContainsKey(key)) + { row.RemoveChild(cellsByReference[key]); + xlWorksheet.Internals.CellsCollection.Deleted.Remove(c); + } } if (!cellsByRow.ContainsKey(distinctRow)) continue; @@ -2844,6 +2848,15 @@ } } } + xlWorksheet.Internals.CellsCollection.Deleted.RemoveWhere(d => d.Row == distinctRow); + } + foreach (var r in xlWorksheet.Internals.CellsCollection.Deleted.Select(c=>c.Row).Distinct()) + { + if (sheetDataRows.ContainsKey(r)) + { + sheetData.RemoveChild(sheetDataRows[r]); + sheetDataRows.Remove(r); + } } #endregion diff --git a/ClosedXML/ClosedXML/ClosedXML/Properties/AssemblyInfo.cs b/ClosedXML/ClosedXML/ClosedXML/Properties/AssemblyInfo.cs index b424983..b11cc7d 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Properties/AssemblyInfo.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Properties/AssemblyInfo.cs @@ -31,6 +31,6 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.57.1.0")] -[assembly: AssemblyFileVersion("0.57.1.0")] +[assembly: AssemblyVersion("0.57.3.0")] +[assembly: AssemblyFileVersion("0.57.3.0")] [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ClosedXML_Tests")] \ No newline at end of file diff --git a/ClosedXML/ClosedXML/ClosedXML_Net3.5/Properties/AssemblyInfo.cs b/ClosedXML/ClosedXML/ClosedXML_Net3.5/Properties/AssemblyInfo.cs index 26d42f2..8f835bb 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Net3.5/Properties/AssemblyInfo.cs +++ b/ClosedXML/ClosedXML/ClosedXML_Net3.5/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.57.1.0")] -[assembly: AssemblyFileVersion("0.57.1.0")] +[assembly: AssemblyVersion("0.57.3.0")] +[assembly: AssemblyFileVersion("0.57.3.0")]