From 0c8dffdb6e5b61a2106bbf7a97097c8ef9bc7b78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20K=C3=A4llman?= Date: Wed, 21 Oct 2026 10:49:31 +0200 Subject: [PATCH] Fixes issue #2591 --- src/EPPlus/ExcelNamedRangeCollection.cs | 4 ++++ src/EPPlus/ExcelRangeBase.cs | 2 +- src/EPPlusTest/Issues/TableIssues.cs | 26 +++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/EPPlus/ExcelNamedRangeCollection.cs b/src/EPPlus/ExcelNamedRangeCollection.cs index 9782ed35b8..5a6774cb02 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 f9f4f873b5..4a5e772315 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 8c3bb3ff23..4ee41a5045 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); } } +}