From 4ca3ac84912ab387b27d3f6c1a288a1ba12eb730 Mon Sep 17 00:00:00 2001 From: Eike Rathke Date: Thu, 13 Jun 2019 20:25:49 +0200 Subject: Resolves: tdf#113541 handle external reference in Excel syntax ... not only OOXML. This wasn't only a problem when creating a reference by clicking or travelling to a cell in the external document, but also when editing an external reference in Excel_A1 or Excel_R1C1 reference syntax. Change-Id: Iee3d529ff9834e5013a61c2056238277f33356fe Reviewed-on: https://gerrit.libreoffice.org/73979 Reviewed-by: Eike Rathke Tested-by: Jenkins (cherry picked from commit 69903b5c5f9b9015c88931c0eb8a47b52ea3de12) Reviewed-on: https://gerrit.libreoffice.org/73988 Reviewed-by: Michael Weghorn --- sc/source/core/tool/compiler.cxx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'sc') diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx index 7ed3845f967e..edb4f9fadb0b 100644 --- a/sc/source/core/tool/compiler.cxx +++ b/sc/source/core/tool/compiler.cxx @@ -2125,11 +2125,14 @@ Label_MaskStateMachine: } else if( nMask & ScCharFlags::Char ) { - // '[' is a special case in OOXML, it can start an external - // reference ID like [1]Sheet1!A1 that needs to be scanned + // '[' is a special case in Excel syntax, it can start an + // external reference, ID in OOXML like [1]Sheet1!A1 or + // Excel_A1 [filename]Sheet!A1 or Excel_R1C1 + // [filename]Sheet!R1C1 that needs to be scanned // entirely, or can be ocTableRefOpen, of which the first // transforms an ocDBArea into an ocTableRef. - if (c == '[' && FormulaGrammar::isOOXML( meGrammar) && eLastOp != ocDBArea && maTableRefs.empty()) + if (c == '[' && FormulaGrammar::isExcelSyntax( meGrammar) + && eLastOp != ocDBArea && maTableRefs.empty()) { nMask &= ~ScCharFlags::Char; goto Label_MaskStateMachine; -- cgit