From 106a4dc29980889c02faa526e5417b63fdce6c23 Mon Sep 17 00:00:00 2001 From: Markus Mohrhard Date: Wed, 27 May 2015 20:24:28 +0200 Subject: support R1C1 reference for hyperlinks Change-Id: Id9f3ae613128bb6f3895ade8b10ae24210439503 --- sc/source/filter/xcl97/xcl97rec.cxx | 14 ++++++++++++-- sc/source/ui/view/tabvwsh3.cxx | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) (limited to 'sc') 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 ) -- cgit v1.2.3