summaryrefslogtreecommitdiff
path: root/sc/source/core/tool/address.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/core/tool/address.cxx')
-rw-r--r--sc/source/core/tool/address.cxx50
1 files changed, 41 insertions, 9 deletions
diff --git a/sc/source/core/tool/address.cxx b/sc/source/core/tool/address.cxx
index c6138534bca9..4e4185276ab5 100644
--- a/sc/source/core/tool/address.cxx
+++ b/sc/source/core/tool/address.cxx
@@ -2050,9 +2050,25 @@ template<typename T > inline void lcl_Format( T& r, SCTAB nTab, SCROW nRow, SCCO
r.append(".");
break;
+ case formula::FormulaGrammar::CONV_XL_OOX:
+ if (!aTabName.isEmpty() && aTabName[0] == '\'')
+ {
+ if (!aDocName.isEmpty())
+ {
+ lcl_string_append(r.append("'["), aDocName);
+ r.append("]");
+ lcl_string_append(r, aTabName.copy(1));
+ }
+ else
+ {
+ lcl_string_append(r, aTabName);
+ }
+ r.append("!");
+ break;
+ }
+ SAL_FALLTHROUGH;
case formula::FormulaGrammar::CONV_XL_A1:
case formula::FormulaGrammar::CONV_XL_R1C1:
- case formula::FormulaGrammar::CONV_XL_OOX:
if (!aDocName.isEmpty())
{
lcl_string_append(r.append("["), aDocName);
@@ -2136,18 +2152,34 @@ static void lcl_ScRange_Format_XL_Header( OUStringBuffer& rString, const ScRange
if( nFlags & ScRefFlags::TAB_3D )
{
OUString aTabName, aDocName;
- lcl_Split_DocTab( pDoc, rRange.aStart.Tab(), rDetails, nFlags,
- aTabName, aDocName );
- if( !aDocName.isEmpty() )
+ lcl_Split_DocTab( pDoc, rRange.aStart.Tab(), rDetails, nFlags, aTabName, aDocName );
+ switch (rDetails.eConv)
{
- rString.append("[").append(aDocName).append("]");
+ case formula::FormulaGrammar::CONV_XL_OOX:
+ if (!aTabName.isEmpty() && aTabName[0] == '\'')
+ {
+ if (!aDocName.isEmpty())
+ {
+ rString.append("'[").append(aDocName).append("]").append(aTabName.copy(1));
+ }
+ else
+ {
+ rString.append(aTabName);
+ }
+ break;
+ }
+ SAL_FALLTHROUGH;
+ default:
+ if (!aDocName.isEmpty())
+ {
+ rString.append("[").append(aDocName).append("]");
+ }
+ rString.append(aTabName);
+ break;
}
- rString.append(aTabName);
-
if( nFlags & ScRefFlags::TAB2_3D )
{
- lcl_Split_DocTab( pDoc, rRange.aEnd.Tab(), rDetails, nFlags,
- aTabName, aDocName );
+ lcl_Split_DocTab( pDoc, rRange.aEnd.Tab(), rDetails, nFlags, aTabName, aDocName );
rString.append(":");
rString.append(aTabName);
}