Skip to content

Commit 284345e

Browse files
authored
This closes #1749, fix incorrect adjust merged cells on remove rows (#1753)
1 parent 7b3dd03 commit 284345e

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

adjust.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -618,13 +618,15 @@ func (f *File) adjustMergeCells(ws *xlsxWorksheet, sheet string, dir adjustDirec
618618
if dir == rows {
619619
if y1 == num && y2 == num && offset < 0 {
620620
f.deleteMergeCell(ws, i)
621+
i--
621622
continue
622623
}
623624

624625
y1, y2 = f.adjustMergeCellsHelper(y1, y2, num, offset)
625626
} else {
626627
if x1 == num && x2 == num && offset < 0 {
627628
f.deleteMergeCell(ws, i)
629+
i--
628630
continue
629631
}
630632

@@ -644,8 +646,8 @@ func (f *File) adjustMergeCells(ws *xlsxWorksheet, sheet string, dir adjustDirec
644646
}
645647

646648
// adjustMergeCellsHelper provides a function for adjusting merge cells to
647-
// compare and calculate cell reference by the given pivot, operation reference and
648-
// offset.
649+
// compare and calculate cell reference by the given pivot, operation reference
650+
// and offset.
649651
func (f *File) adjustMergeCellsHelper(p1, p2, num, offset int) (int, int) {
650652
if p2 < p1 {
651653
p1, p2 = p2, p1

rows_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,15 @@ func TestRemoveRow(t *testing.T) {
353353
assert.NoError(t, f.RemoveRow(sheet1, 10))
354354
assert.NoError(t, f.SaveAs(filepath.Join("test", "TestRemoveRow.xlsx")))
355355

356+
f = NewFile()
357+
assert.NoError(t, f.MergeCell("Sheet1", "A1", "C1"))
358+
assert.NoError(t, f.MergeCell("Sheet1", "A2", "C2"))
359+
assert.NoError(t, f.RemoveRow("Sheet1", 1))
360+
mergedCells, err := f.GetMergeCells("Sheet1")
361+
assert.NoError(t, err)
362+
assert.Equal(t, "A1", mergedCells[0].GetStartAxis())
363+
assert.Equal(t, "C1", mergedCells[0].GetEndAxis())
364+
356365
// Test remove row on not exist worksheet
357366
assert.EqualError(t, f.RemoveRow("SheetN", 1), "sheet SheetN does not exist")
358367
// Test remove row with invalid sheet name

0 commit comments

Comments
 (0)