diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2015-05-27 20:24:28 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2015-05-27 20:41:45 +0200 |
commit | 106a4dc29980889c02faa526e5417b63fdce6c23 (patch) | |
tree | c5c281809391df0dd95a05a452928334eeccf945 /sc | |
parent | 5142c9226318019200ed6e055b4eb1503bd002db (diff) |
support R1C1 reference for hyperlinks
Change-Id: Id9f3ae613128bb6f3895ade8b10ae24210439503
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/filter/xcl97/xcl97rec.cxx | 14 | ||||
-rw-r--r-- | sc/source/ui/view/tabvwsh3.cxx | 14 |
2 files changed, 24 insertions, 4 deletions
diff --git a/sc/source/filter/xcl97/xcl97rec.cxx b/sc/source/filter/xcl97/xcl97rec.cxx index 46deb7e9c2b6..f3e0af36d06c 100644 --- a/sc/source/filter/xcl97/xcl97rec.cxx +++ b/sc/source/filter/xcl97/xcl97rec.cxx @@ -1065,7 +1065,12 @@ sal_uInt16 parseRange(const OUString& rString, ScRange& rRange, ScDocument* pDoc return nResult; // try excel a1 - return rRange.Parse(rString, pDoc, formula::FormulaGrammar::CONV_XL_A1); + nResult = rRange.Parse(rString, pDoc, formula::FormulaGrammar::CONV_XL_A1); + if (nResult & SCA_VALID) + return nResult; + + // try r1c1 + return rRange.Parse(rString, pDoc, formula::FormulaGrammar::CONV_XL_R1C1); } sal_uInt16 parseAddress(const OUString& rString, ScAddress& rAddress, ScDocument* pDoc) @@ -1082,7 +1087,12 @@ sal_uInt16 parseAddress(const OUString& rString, ScAddress& rAddress, ScDocument return nResult; // try excel a1 - return rAddress.Parse(rString, pDoc, formula::FormulaGrammar::CONV_XL_A1); + nResult = rAddress.Parse(rString, pDoc, formula::FormulaGrammar::CONV_XL_A1); + if ( (nResult & SCA_VALID) ) + return nResult; + + // try r1c1 + return rAddress.Parse(rString, pDoc, formula::FormulaGrammar::CONV_XL_R1C1); } bool transformURL(const OUString& rOldURL, OUString& rNewURL, ScDocument* pDoc) diff --git a/sc/source/ui/view/tabvwsh3.cxx b/sc/source/ui/view/tabvwsh3.cxx index 30972e66422e..8fdce4451234 100644 --- a/sc/source/ui/view/tabvwsh3.cxx +++ b/sc/source/ui/view/tabvwsh3.cxx @@ -82,8 +82,13 @@ static sal_uInt16 lcl_ParseRange(ScRange& rScRange, const OUString& aAddress, Sc if ( (nResult & SCA_VALID) ) return nResult; + // try the default calc address convention + nResult = rScRange.Parse(aAddress, pDoc, formula::FormulaGrammar::CONV_XL_A1); + if ( (nResult & SCA_VALID) ) + return nResult; + // try excel a1 - return rScRange.Parse(aAddress, pDoc, ScAddress::Details(formula::FormulaGrammar::CONV_XL_A1, 0, 0)); + return rScRange.Parse(aAddress, pDoc, formula::FormulaGrammar::CONV_XL_R1C1); } static sal_uInt16 lcl_ParseAddress(ScAddress& rScAddress, const OUString& aAddress, ScDocument* pDoc, sal_uInt16 /* nSlot */) @@ -99,8 +104,13 @@ static sal_uInt16 lcl_ParseAddress(ScAddress& rScAddress, const OUString& aAddre if ( (nResult & SCA_VALID) ) return nResult; + // try the default calc address convention + nResult = rScAddress.Parse(aAddress, pDoc, formula::FormulaGrammar::CONV_XL_A1); + if ( (nResult & SCA_VALID) ) + return nResult; + // try excel a1 - return rScAddress.Parse(aAddress, pDoc, ScAddress::Details(formula::FormulaGrammar::CONV_XL_A1, 0, 0)); + return rScAddress.Parse(aAddress, pDoc, formula::FormulaGrammar::CONV_XL_R1C1); } void ScTabViewShell::Execute( SfxRequest& rReq ) |