Skip to content

Commit 832bfd4

Browse files
committed
[FIX] range: invalid sheet name with special character
If we have a range with an invalid sheet name, the sheet name is not escaped with quotes when it contains special characters when converting the range back to a string. closes #7419 Task: 5125762 X-original-commit: 3c69b72 Signed-off-by: Adrien Minne (adrm) <[email protected]> Signed-off-by: Lucas Lefèvre (lul) <[email protected]>
1 parent 0379cc2 commit 832bfd4

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed

src/plugins/core/range.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ export class RangeAdapter implements CommandHandler<CoreCommand> {
405405
let sheetName: string = "";
406406
if (prefixSheet) {
407407
if (rangeImpl.invalidSheetName) {
408-
sheetName = rangeImpl.invalidSheetName;
408+
sheetName = getCanonicalSymbolName(rangeImpl.invalidSheetName);
409409
} else {
410410
sheetName = getCanonicalSymbolName(this.getters.getSheetName(rangeImpl.sheetId));
411411
}

tests/model/model_import_export.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ describe("Migrations", () => {
294294

295295
const cfs = data.sheets[1].conditionalFormats;
296296
const rule1 = cfs[0].rule as ColorScaleRule;
297-
expect(cfs[0].ranges).toEqual(["=sheetName_!A1:A2"]);
297+
expect(cfs[0].ranges).toEqual(["'=sheetName_'!A1:A2"]);
298298
expect(rule1.minimum.value).toEqual("=sheetName_!B1");
299299
expect(rule1.midpoint?.value).toEqual("=sheetName_!B1");
300300
expect(rule1.maximum.value).toEqual("=sheetName_!B1");
@@ -305,7 +305,7 @@ describe("Migrations", () => {
305305
expect(rule2.upperInflectionPoint.value).toEqual("=sheetName_!B1");
306306

307307
const rule3 = cfs[2].rule as ColorScaleRule;
308-
expect(cfs[2].ranges).toEqual(["=sheetName_!A1:A2"]);
308+
expect(cfs[2].ranges).toEqual(["'=sheetName_'!A1:A2"]);
309309
expect(rule3.minimum.value).toEqual("33");
310310
expect(rule3.midpoint?.value).toEqual("13");
311311
expect(rule3.maximum.value).toBeUndefined();

tests/range_plugin.test.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -551,11 +551,16 @@ describe("range plugin", () => {
551551
}
552552
);
553553

554+
test("invalid sheet name with special character", () => {
555+
const range = m.getters.getRangeFromSheetXC("s1", "'Invalid Sheet Name'!A1");
556+
expect(m.getters.getRangeString(range, "s1")).toBe("'Invalid Sheet Name'!A1");
557+
});
558+
554559
test.each([
555560
["s1!!!A1:A9", "'s1!!'!A1:A9"],
556561
["'s1!!'!A1:A9", "'s1!!'!A1:A9"],
557-
["s1!!!A1:s1!!!A9", "s1!!!A1:s1!!!A9"],
558-
["s1!!!A1:s1!!!A9", "s1!!!A1:s1!!!A9"],
562+
["s1!!!A1:s1!!!A9", "'s1!!!A1:s1!!'!A9"],
563+
["s1!!!A1:s1!!!A9", "'s1!!!A1:s1!!'!A9"],
559564
])(
560565
"xc with more than one exclamation mark does not throw error",
561566
(rangeString, expectedString) => {

0 commit comments

Comments
 (0)