Skip to content

Commit 3c69b72

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 #7416 Task: 5125762 X-original-commit: d9d0f31 Signed-off-by: Lucas Lefèvre (lul) <lul@odoo.com> Signed-off-by: Adrien Minne (adrm) <adrm@odoo.com>
1 parent c8a3d2b commit 3c69b72

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
@@ -401,7 +401,7 @@ export class RangeAdapter implements CommandHandler<CoreCommand> {
401401
let sheetName: string = "";
402402
if (prefixSheet) {
403403
if (rangeImpl.invalidSheetName) {
404-
sheetName = rangeImpl.invalidSheetName;
404+
sheetName = getCanonicalSymbolName(rangeImpl.invalidSheetName);
405405
} else {
406406
sheetName = getCanonicalSymbolName(this.getters.getSheetName(rangeImpl.sheetId));
407407
}

tests/model/model_import_export.test.ts

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

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

306306
const rule3 = cfs[2].rule as ColorScaleRule;
307-
expect(cfs[2].ranges).toEqual(["=sheetName_!A1:A2"]);
307+
expect(cfs[2].ranges).toEqual(["'=sheetName_'!A1:A2"]);
308308
expect(rule3.minimum.value).toEqual("33");
309309
expect(rule3.midpoint?.value).toEqual("13");
310310
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)