diff options
-rw-r--r-- | sc/source/core/tool/address.cxx | 50 |
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); } |