Skip to content

Commit d230ecd

Browse files
authored
This closes qax-os#2126, fix sheet name error in defined name after rename sheet (qax-os#2127)
- Update unit tests
1 parent 8fdc26e commit d230ecd

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

adjust.go

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -457,20 +457,15 @@ func transformParenthesesToken(token efp.Token) string {
457457
// adjustRangeSheetName returns replaced range reference by given source and
458458
// target sheet name.
459459
func adjustRangeSheetName(rng, source, target string) string {
460+
source = escapeSheetName(source)
460461
cellRefs := strings.Split(rng, ",")
461462
for i, cellRef := range cellRefs {
462463
rangeRefs := strings.Split(cellRef, ":")
463464
for j, rangeRef := range rangeRefs {
464465
parts := strings.Split(rangeRef, "!")
465466
for k, part := range parts {
466-
singleQuote := strings.HasPrefix(part, "'") && strings.HasSuffix(part, "'")
467-
if singleQuote {
468-
part = strings.TrimPrefix(strings.TrimSuffix(part, "'"), "'")
469-
}
470-
if part == source {
471-
if part = target; singleQuote {
472-
part = "'" + part + "'"
473-
}
467+
if strings.TrimPrefix(strings.TrimSuffix(part, "'"), "'") == source {
468+
part = escapeSheetName(target)
474469
}
475470
parts[k] = part
476471
}

sheet_test.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,8 @@ func TestSetSheetName(t *testing.T) {
481481
assert.Equal(t, "sheet1", f.GetSheetName(0))
482482
// Test set sheet name with invalid sheet name
483483
assert.Equal(t, f.SetSheetName("Sheet:1", "Sheet1"), ErrSheetNameInvalid)
484+
_, err := f.NewSheet("Sheet 3")
485+
assert.NoError(t, err)
484486

485487
// Test set worksheet name with existing defined name and auto filter
486488
assert.NoError(t, f.AutoFilter("Sheet1", "A1:A2", nil))
@@ -496,8 +498,12 @@ func TestSetSheetName(t *testing.T) {
496498
Name: "Name3",
497499
RefersTo: "Sheet1!$A$1:'Sheet1'!A1:Sheet1!$A$1,Sheet1!A1:Sheet3!A1,Sheet3!A1",
498500
}))
499-
assert.NoError(t, f.SetSheetName("Sheet1", "Sheet2"))
500-
for i, expected := range []string{"'Sheet2'!$A$1:$A$2", "$B$2", "$A1$2:A2", "Sheet2!$A$1:'Sheet2'!A1:Sheet2!$A$1,Sheet2!A1:Sheet3!A1,Sheet3!A1"} {
501+
assert.NoError(t, f.SetDefinedName(&DefinedName{
502+
Name: "Name4",
503+
RefersTo: "'Sheet 3'!$A1$2:A2",
504+
}))
505+
assert.NoError(t, f.SetSheetName("Sheet1", "Sheet 2"))
506+
for i, expected := range []string{"'Sheet 2'!$A$1:$A$2", "$B$2", "$A1$2:A2", "'Sheet 2'!$A$1:'Sheet 2'!A1:'Sheet 2'!$A$1,'Sheet 2'!A1:Sheet3!A1,Sheet3!A1", "'Sheet 3'!$A1$2:A2"} {
501507
assert.Equal(t, expected, f.WorkBook.DefinedNames.DefinedName[i].Data)
502508
}
503509
}

0 commit comments

Comments
 (0)