diff --git a/src/EPPlus/ExcelNamedRangeCollection.cs b/src/EPPlus/ExcelNamedRangeCollection.cs index 9782ed35b..5a6774cb0 100644 --- a/src/EPPlus/ExcelNamedRangeCollection.cs +++ b/src/EPPlus/ExcelNamedRangeCollection.cs @@ -257,6 +257,10 @@ internal void Delete(int rowFrom, int colFrom, int rows, int cols, Func 0 && address._toCol <= upperLimit && address._fromCol >= lowerLimint) { address = namedRange.DeleteRow(rowFrom, rows,false,false); diff --git a/src/EPPlus/ExcelRangeBase.cs b/src/EPPlus/ExcelRangeBase.cs index f9f4f873b..4a5e77231 100644 --- a/src/EPPlus/ExcelRangeBase.cs +++ b/src/EPPlus/ExcelRangeBase.cs @@ -1454,7 +1454,7 @@ public void Delete(eShiftTypeDelete shift) { WorksheetRangeDeleteHelper.DeleteColumn(_worksheet, _fromCol, Columns); } - else if (shift == eShiftTypeDelete.EntireRow || (_fromCol <= 1 && _toRow >= ExcelPackage.MaxColumns)) + else if (shift == eShiftTypeDelete.EntireRow || (_fromCol <= 1 && _toCol >= ExcelPackage.MaxColumns)) { WorksheetRangeDeleteHelper.DeleteRow(_worksheet, _fromRow, Rows); } diff --git a/src/EPPlusTest/Issues/TableIssues.cs b/src/EPPlusTest/Issues/TableIssues.cs index 8c3bb3ff2..4ee41a504 100644 --- a/src/EPPlusTest/Issues/TableIssues.cs +++ b/src/EPPlusTest/Issues/TableIssues.cs @@ -419,5 +419,31 @@ public void s997() SaveAndCleanup(package); } } + [TestMethod] + public void s2591() + { + using var package = OpenPackage("i2597.xlsx", true); + var sheet = package.Workbook.Worksheets.Add("Sheet1"); + sheet.Cells["A4"].Value = "Item"; + sheet.Cells["B4"].Value = "Flag"; + for (var row = 16300; row <= 16390; row++) + { + sheet.Cells[row, 1].Value = "Item " + row; + sheet.Cells[row, 2].Value = "Y"; + } + sheet.Cells["D16389"].Value = "next to the table"; + sheet.Tables.Add(sheet.Cells["A4:B16390"], "Table1"); + package.Workbook.Names.AddFormula("FlagColumn", "Table1[Flag]"); + + SaveAndCleanup(package, false); + // save and reopen so the name is loaded from the file + using var reopened = new ExcelPackage(new MemoryStream(package.GetAsByteArray())); + var table = reopened.Workbook.Worksheets["Sheet1"].Tables["Table1"]; + table.DeleteRow(83, 3); // the last 3 rows, 16388-16390 + sheet = reopened.Workbook.Worksheets[0]; + Assert.AreEqual(sheet.Cells["D16389"].Value, "next to the table"); + Assert.IsNull(sheet.Cells["A16388"].Value); + SaveWorkbook("i2597-resaved.xlsx", reopened); } } +}