ooo-build r15448 - in trunk: . patches/dev300



Author: kyoshida
Date: Tue Mar  3 21:08:19 2009
New Revision: 15448
URL: http://svn.gnome.org/viewvc/ooo-build?rev=15448&view=rev

Log:
2009-03-03  Kohei Yoshida  <kyoshida novell com>

	* patches/dev300/chart-odf-always-calc-a1-m2.diff:
	* patches/dev300/chart-odf-always-calc-a1.diff:
	* patches/dev300/apply: adjusted for ooo310-m3.  Parts of the old patch
	have been upstreamed.



Added:
   trunk/patches/dev300/chart-odf-always-calc-a1-m2.diff
      - copied unchanged from r15445, /trunk/patches/dev300/chart-odf-always-calc-a1.diff
Modified:
   trunk/ChangeLog
   trunk/patches/dev300/apply
   trunk/patches/dev300/chart-odf-always-calc-a1.diff

Modified: trunk/patches/dev300/apply
==============================================================================
--- trunk/patches/dev300/apply	(original)
+++ trunk/patches/dev300/apply	Tue Mar  3 21:08:19 2009
@@ -839,6 +839,12 @@
 calc-filter-by-date-strip-time.diff, n#414303, i#94695, kohei
 # preserve line breaks when referencing it in formula.
 calc-multiline-formula-ref.diff, i#35913, kohei
+
+[ CalcFixes < dev300-m42 < ooo310-m3 ]
+# always store ranges in ODF using Calc A1 formula syntax.
+chart-odf-always-calc-a1-m2.diff, n#463305, kohei
+
+[ CalcFixes >= dev300-m42 >= ooo310-m3 ]
 # always store ranges in ODF using Calc A1 formula syntax.
 chart-odf-always-calc-a1.diff, n#463305, kohei
 

Modified: trunk/patches/dev300/chart-odf-always-calc-a1.diff
==============================================================================
--- trunk/patches/dev300/chart-odf-always-calc-a1.diff	(original)
+++ trunk/patches/dev300/chart-odf-always-calc-a1.diff	Tue Mar  3 21:08:19 2009
@@ -1,5 +1,5 @@
 diff --git sc/inc/rangeutl.hxx sc/inc/rangeutl.hxx
-index 7b5d77b..f83327c 100644
+index 58c00b2..d540256 100644
 --- sc/inc/rangeutl.hxx
 +++ sc/inc/rangeutl.hxx
 @@ -38,6 +38,11 @@
@@ -14,168 +14,26 @@
  //------------------------------------------------------------------------
  
  class SvStream;
-@@ -146,6 +151,7 @@ public:
- 							ScAddress& rAddress,
- 							const ::rtl::OUString& rAddressStr,
- 							const ScDocument* pDocument,
-+                            ::formula::FormulaGrammar::AddressConvention eConv,
-                             sal_Int32& nOffset,
-                             sal_Unicode cSeperator = ' ',
-                             sal_Unicode cQuote = '\'');
-@@ -153,6 +159,7 @@ public:
- 							ScRange& rRange,
- 							const ::rtl::OUString& rRangeStr,
- 							const ScDocument* pDocument,
-+                            ::formula::FormulaGrammar::AddressConvention eConv,
- 							sal_Int32& nOffset,
-                             sal_Unicode cSeperator = ' ',
-                             sal_Unicode cQuote = '\'');
-@@ -160,6 +167,7 @@ public:
- 							ScRangeList& rRangeList,
- 							const ::rtl::OUString& rRangeListStr,
- 							const ScDocument* pDocument,
-+                            ::formula::FormulaGrammar::AddressConvention eConv,
-                             sal_Unicode cSeperator = ' ',
-                             sal_Unicode cQuote = '\'');
- 
-@@ -167,6 +175,7 @@ public:
- 							ScArea& rArea,
- 							const ::rtl::OUString& rRangeStr,
- 							const ScDocument* pDocument,
-+                            ::formula::FormulaGrammar::AddressConvention eConv,
- 							sal_Int32& nOffset,
-                             sal_Unicode cSeperator = ' ',
-                             sal_Unicode cQuote = '\'');
-@@ -176,6 +185,7 @@ public:
- 							::com::sun::star::table::CellAddress& rAddress,
- 							const ::rtl::OUString& rAddressStr,
- 							const ScDocument* pDocument,
-+                            ::formula::FormulaGrammar::AddressConvention eConv,
- 							sal_Int32& nOffset,
-                             sal_Unicode cSeperator = ' ',
-                             sal_Unicode cQuote = '\'');
-@@ -183,6 +193,7 @@ public:
- 							::com::sun::star::table::CellRangeAddress& rRange,
- 							const ::rtl::OUString& rRangeStr,
- 							const ScDocument* pDocument,
-+                            ::formula::FormulaGrammar::AddressConvention eConv,
- 							sal_Int32& nOffset,
-                             sal_Unicode cSeperator = ' ',
-                             sal_Unicode cQuote = '\'');
-@@ -190,6 +201,7 @@ public:
- 							::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress >& rRangeSeq,
- 							const ::rtl::OUString& rRangeListStr,
- 							const ScDocument* pDocument,
-+                            ::formula::FormulaGrammar::AddressConvention eConv,
-                             sal_Unicode cSeperator = ' ',
-                             sal_Unicode cQuote = '\'');
- 
-@@ -198,6 +210,7 @@ public:
- 							::rtl::OUString& rString,
- 							const ScAddress& rAddress,
- 							const ScDocument* pDocument,
-+                            ::formula::FormulaGrammar::AddressConvention eConv,
-                             sal_Unicode cSeperator = ' ',
- 							sal_Bool bAppendStr = sal_False,
- 							sal_uInt16 nFormatFlags = (SCA_VALID | SCA_TAB_3D) );
-@@ -205,6 +218,7 @@ public:
- 							::rtl::OUString& rString,
- 							const ScRange& rRange,
- 							const ScDocument* pDocument,
-+                            ::formula::FormulaGrammar::AddressConvention eConv,
-                             sal_Unicode cSeperator = ' ',
- 							sal_Bool bAppendStr = sal_False,
- 							sal_uInt16 nFormatFlags = (SCA_VALID | SCA_TAB_3D) );
-@@ -212,6 +226,7 @@ public:
- 							::rtl::OUString& rString,
- 							const ScRangeList* pRangeList,
- 							const ScDocument* pDocument,
-+                            ::formula::FormulaGrammar::AddressConvention eConv,
-                             sal_Unicode cSeperator = ' ',
- 							sal_uInt16 nFormatFlags = (SCA_VALID | SCA_TAB_3D));
- 
-@@ -219,6 +234,7 @@ public:
- 							::rtl::OUString& rString,
- 							const ScArea& rArea,
- 							const ScDocument* pDocument,
-+                            ::formula::FormulaGrammar::AddressConvention eConv,
-                             sal_Unicode cSeperator = ' ',
- 							sal_Bool bAppendStr = sal_False,
- 							sal_uInt16 nFormatFlags = (SCA_VALID | SCA_TAB_3D) );
-@@ -228,6 +244,7 @@ public:
- 							::rtl::OUString& rString,
- 							const ::com::sun::star::table::CellAddress& rAddress,
- 							const ScDocument* pDocument,
-+                            ::formula::FormulaGrammar::AddressConvention eConv,
-                             sal_Unicode cSeperator = ' ',
- 							sal_Bool bAppendStr = sal_False,
- 							sal_uInt16 nFormatFlags = (SCA_VALID | SCA_TAB_3D) );
-@@ -235,6 +252,7 @@ public:
- 							::rtl::OUString& rString,
- 							const ::com::sun::star::table::CellRangeAddress& rRange,
- 							const ScDocument* pDocument,
-+                            ::formula::FormulaGrammar::AddressConvention eConv,
-                             sal_Unicode cSeperator = ' ',
- 							sal_Bool bAppendStr = sal_False,
- 							sal_uInt16 nFormatFlags = (SCA_VALID | SCA_TAB_3D) );
-@@ -242,6 +260,7 @@ public:
- 							::rtl::OUString& rString,
- 							const ::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress >& rRangeSeq,
- 							const ScDocument* pDocument,
-+                            ::formula::FormulaGrammar::AddressConvention eConv,
-                             sal_Unicode cSeperator = ' ',
- 							sal_uInt16 nFormatFlags = (SCA_VALID | SCA_TAB_3D) );
- };
 diff --git sc/source/core/tool/rangeutl.cxx sc/source/core/tool/rangeutl.cxx
-index 55a18b0..5e2c80c 100644
+index 82d07bc..84a410c 100644
 --- sc/source/core/tool/rangeutl.cxx
 +++ sc/source/core/tool/rangeutl.cxx
-@@ -456,6 +456,7 @@ sal_Bool ScRangeStringConverter::GetAddressFromString(
- 		ScAddress& rAddress,
- 		const OUString& rAddressStr,
- 		const ScDocument* pDocument,
-+        ::formula::FormulaGrammar::AddressConvention eConv,
- 		sal_Int32& nOffset,
-         sal_Unicode cSeperator,
-         sal_Unicode cQuote )
-@@ -463,7 +464,15 @@ sal_Bool ScRangeStringConverter::GetAddressFromString(
- 	OUString sToken;
- 	GetTokenByOffset( sToken, rAddressStr, nOffset, cSeperator, cQuote );
- 	if( nOffset >= 0 )
--		return ((rAddress.Parse( sToken, const_cast<ScDocument*>(pDocument), pDocument->GetAddressConvention() ) & SCA_VALID) == SCA_VALID);
-+    {
-+        if ((rAddress.Parse( sToken, const_cast<ScDocument*>(pDocument), eConv ) & SCA_VALID) == SCA_VALID)
-+            return true;
+@@ -480,6 +480,11 @@ sal_Bool ScRangeStringConverter::GetAddressFromString(
+     {
+         if ((rAddress.Parse( sToken, const_cast<ScDocument*>(pDocument), eConv ) & SCA_VALID) == SCA_VALID)
+             return true;
 +#if CHART_ADDRESS_CONV_WORKAROUND
 +        ::formula::FormulaGrammar::AddressConvention eConvUI = pDocument->GetAddressConvention();
 +        if (eConv != eConvUI)
 +            return ((rAddress.Parse(sToken, const_cast<ScDocument*>(pDocument), eConvUI) & SCA_VALID) == SCA_VALID);
 +#endif
-+    }
+     }
  	return sal_False;
  }
- 
-@@ -471,12 +480,14 @@ sal_Bool ScRangeStringConverter::GetRangeFromString(
- 		ScRange& rRange,
- 		const OUString& rRangeStr,
- 		const ScDocument* pDocument,
-+        ::formula::FormulaGrammar::AddressConvention eConv,
- 		sal_Int32& nOffset,
-         sal_Unicode cSeperator,
-         sal_Unicode cQuote )
- {
- 	OUString sToken;
- 	sal_Bool bResult(sal_False);
-+    ::formula::FormulaGrammar::AddressConvention eConvUI = pDocument->GetAddressConvention();
- 	GetTokenByOffset( sToken, rRangeStr, nOffset, cSeperator, cQuote );
- 	if( nOffset >= 0 )
- 	{
-@@ -487,7 +498,12 @@ sal_Bool ScRangeStringConverter::GetRangeFromString(
-         {
+@@ -506,6 +511,11 @@ sal_Bool ScRangeStringConverter::GetRangeFromString(
              if ( aUIString.GetChar(0) == (sal_Unicode) '.' )
                  aUIString.Erase( 0, 1 );
--            bResult = ((rRange.aStart.Parse( aUIString, const_cast<ScDocument*> (pDocument), pDocument->GetAddressConvention()) & SCA_VALID) == SCA_VALID);
-+            bResult = ((rRange.aStart.Parse( aUIString, const_cast<ScDocument*> (pDocument), eConv) & SCA_VALID) == SCA_VALID);
+             bResult = ((rRange.aStart.Parse( aUIString, const_cast<ScDocument*> (pDocument), eConv) & SCA_VALID) == SCA_VALID);
 +#if CHART_ADDRESS_CONV_WORKAROUND
 +            if (!bResult && eConv != eConvUI)
 +                bResult = ((rRange.aStart.Parse(
@@ -184,23 +42,10 @@
              rRange.aEnd = rRange.aStart;
          }
          else
-@@ -502,15 +518,28 @@ sal_Bool ScRangeStringConverter::GetRangeFromString(
-                     aUIString.GetChar((xub_StrLen)nIndex + 1) == (sal_Unicode) '.' )
-                 aUIString.Erase( (xub_StrLen)nIndex + 1, 1 );
- 
--            bResult = ((rRange.Parse(aUIString, const_cast<ScDocument*> (pDocument)) & SCA_VALID) == SCA_VALID);
-+            bResult = ((rRange.Parse(aUIString, const_cast<ScDocument*> (pDocument), eConv) & SCA_VALID) == SCA_VALID);
- 
-             // #i77703# chart ranges in the file format contain both sheet names, even for an external reference sheet.
-             // This isn't parsed by ScRange, so try to parse the two Addresses then.
-             if (!bResult)
-+            {    
-                 bResult = ((rRange.aStart.Parse( aUIString.Copy(0, (xub_StrLen)nIndex), const_cast<ScDocument*>(pDocument),
--                                pDocument->GetAddressConvention()) & SCA_VALID) == SCA_VALID) &&
-+                                eConv) & SCA_VALID) == SCA_VALID) &&
+@@ -530,6 +540,17 @@ sal_Bool ScRangeStringConverter::GetRangeFromString(
+                                 eConv) & SCA_VALID) == SCA_VALID) &&
                            ((rRange.aEnd.Parse( aUIString.Copy((xub_StrLen)nIndex+1), const_cast<ScDocument*>(pDocument),
--                                pDocument->GetAddressConvention()) & SCA_VALID) == SCA_VALID);
-+                                eConv) & SCA_VALID) == SCA_VALID);
+                                 eConv) & SCA_VALID) == SCA_VALID);
 +#if CHART_ADDRESS_CONV_WORKAROUND
 +                if (!bResult && eConv != eConvUI)
 +                {
@@ -212,851 +57,86 @@
 +                    rRange.Format(aFoo, SCA_VALID, const_cast<ScDocument*>(pDocument));
 +                }
 +#endif
-+            }
+             }
          }
      }
- 	return bResult;
-@@ -520,6 +549,7 @@ sal_Bool ScRangeStringConverter::GetRangeListFromString(
- 		ScRangeList& rRangeList,
- 		const OUString& rRangeListStr,
- 		const ScDocument* pDocument,
-+        ::formula::FormulaGrammar::AddressConvention eConv,
-         sal_Unicode cSeperator,
-         sal_Unicode cQuote )
- {
-@@ -529,7 +559,7 @@ sal_Bool ScRangeStringConverter::GetRangeListFromString(
- 	while( nOffset >= 0 )
- 	{
- 		ScRange* pRange = new ScRange;
--		if( GetRangeFromString( *pRange, rRangeListStr, pDocument, nOffset, cSeperator, cQuote ) && (nOffset >= 0) )
-+		if( GetRangeFromString( *pRange, rRangeListStr, pDocument, eConv, nOffset, cSeperator, cQuote ) && (nOffset >= 0) )
- 			rRangeList.Insert( pRange, LIST_APPEND );
-         else if (nOffset > -1)
-             bRet = sal_False;
-@@ -544,13 +574,14 @@ sal_Bool ScRangeStringConverter::GetAreaFromString(
- 		ScArea& rArea,
- 		const OUString& rRangeStr,
- 		const ScDocument* pDocument,
-+        ::formula::FormulaGrammar::AddressConvention eConv,
- 		sal_Int32& nOffset,
-         sal_Unicode cSeperator,
-         sal_Unicode cQuote )
- {
- 	ScRange aScRange;
- 	sal_Bool bResult(sal_False);
--	if( GetRangeFromString( aScRange, rRangeStr, pDocument, nOffset, cSeperator, cQuote ) && (nOffset >= 0) )
-+	if( GetRangeFromString( aScRange, rRangeStr, pDocument, eConv, nOffset, cSeperator, cQuote ) && (nOffset >= 0) )
- 	{
- 		rArea.nTab = aScRange.aStart.Tab();
- 		rArea.nColStart = aScRange.aStart.Col();
-@@ -569,13 +600,14 @@ sal_Bool ScRangeStringConverter::GetAddressFromString(
- 		table::CellAddress& rAddress,
- 		const OUString& rAddressStr,
- 		const ScDocument* pDocument,
-+        ::formula::FormulaGrammar::AddressConvention eConv,
- 		sal_Int32& nOffset,
-         sal_Unicode cSeperator,
-         sal_Unicode cQuote )
- {
- 	ScAddress aScAddress;
- 	sal_Bool bResult(sal_False);
--	if( GetAddressFromString( aScAddress, rAddressStr, pDocument, nOffset, cSeperator, cQuote ) && (nOffset >= 0) )
-+	if( GetAddressFromString( aScAddress, rAddressStr, pDocument, eConv, nOffset, cSeperator, cQuote ) && (nOffset >= 0) )
- 	{
- 		ScUnoConversion::FillApiAddress( rAddress, aScAddress );
- 		bResult = sal_True;
-@@ -587,13 +619,14 @@ sal_Bool ScRangeStringConverter::GetRangeFromString(
- 		table::CellRangeAddress& rRange,
- 		const OUString& rRangeStr,
- 		const ScDocument* pDocument,
-+        ::formula::FormulaGrammar::AddressConvention eConv,
- 		sal_Int32& nOffset,
-         sal_Unicode cSeperator,
-         sal_Unicode cQuote )
- {
- 	ScRange aScRange;
- 	sal_Bool bResult(sal_False);
--	if( GetRangeFromString( aScRange, rRangeStr, pDocument, nOffset, cSeperator, cQuote ) && (nOffset >= 0) )
-+	if( GetRangeFromString( aScRange, rRangeStr, pDocument, eConv, nOffset, cSeperator, cQuote ) && (nOffset >= 0) )
- 	{
- 		ScUnoConversion::FillApiRange( rRange, aScRange );
- 		bResult = sal_True;
-@@ -605,6 +638,7 @@ sal_Bool ScRangeStringConverter::GetRangeListFromString(
- 		uno::Sequence< table::CellRangeAddress >& rRangeSeq,
- 		const OUString& rRangeListStr,
- 		const ScDocument* pDocument,
-+        ::formula::FormulaGrammar::AddressConvention eConv,
-         sal_Unicode cSeperator,
-         sal_Unicode cQuote )
- {
-@@ -614,7 +648,7 @@ sal_Bool ScRangeStringConverter::GetRangeListFromString(
- 	sal_Int32 nOffset = 0;
- 	while( nOffset >= 0 )
- 	{
--		if( GetRangeFromString( aRange, rRangeListStr, pDocument, nOffset, cSeperator, cQuote ) && (nOffset >= 0) )
-+		if( GetRangeFromString( aRange, rRangeListStr, pDocument, eConv, nOffset, cSeperator, cQuote ) && (nOffset >= 0) )
- 		{
- 			rRangeSeq.realloc( rRangeSeq.getLength() + 1 );
- 			rRangeSeq[ rRangeSeq.getLength() - 1 ] = aRange;
-@@ -632,6 +666,7 @@ void ScRangeStringConverter::GetStringFromAddress(
- 		OUString& rString,
- 		const ScAddress& rAddress,
- 		const ScDocument* pDocument,
-+        ::formula::FormulaGrammar::AddressConvention eConv,
-         sal_Unicode cSeperator,
- 		sal_Bool bAppendStr,
- 		sal_uInt16 nFormatFlags )
-@@ -639,7 +674,7 @@ void ScRangeStringConverter::GetStringFromAddress(
- 	if (pDocument && pDocument->HasTable(rAddress.Tab()))
- 	{
- 		String sAddress;
--		rAddress.Format( sAddress, nFormatFlags, (ScDocument*) pDocument, pDocument->GetAddressConvention() );
-+		rAddress.Format( sAddress, nFormatFlags, (ScDocument*) pDocument, eConv );
- 		AssignString( rString, sAddress, bAppendStr, cSeperator );
- 	}
- }
-@@ -648,6 +683,7 @@ void ScRangeStringConverter::GetStringFromRange(
- 		OUString& rString,
- 		const ScRange& rRange,
- 		const ScDocument* pDocument,
-+        ::formula::FormulaGrammar::AddressConvention eConv,
-         sal_Unicode cSeperator,
- 		sal_Bool bAppendStr,
- 		sal_uInt16 nFormatFlags )
-@@ -658,7 +694,6 @@ void ScRangeStringConverter::GetStringFromRange(
- 		ScAddress aEndAddress( rRange.aEnd );
- 		String sStartAddress;
- 		String sEndAddress;
--        formula::FormulaGrammar::AddressConvention eConv = pDocument->GetAddressConvention();
- 		aStartAddress.Format( sStartAddress, nFormatFlags, (ScDocument*) pDocument, eConv );
- 		aEndAddress.Format( sEndAddress, nFormatFlags, (ScDocument*) pDocument, eConv );
- 		OUString sOUStartAddress( sStartAddress );
-@@ -672,6 +707,7 @@ void ScRangeStringConverter::GetStringFromRangeList(
- 		OUString& rString,
- 		const ScRangeList* pRangeList,
- 		const ScDocument* pDocument,
-+        ::formula::FormulaGrammar::AddressConvention eConv,
-         sal_Unicode cSeperator,
- 		sal_uInt16 nFormatFlags )
- {
-@@ -683,7 +719,7 @@ void ScRangeStringConverter::GetStringFromRangeList(
- 		{
- 			const ScRange* pRange = pRangeList->GetObject( nIndex );
- 			if( pRange )
--				GetStringFromRange( sRangeListStr, *pRange, pDocument, cSeperator, sal_True, nFormatFlags );
-+				GetStringFromRange( sRangeListStr, *pRange, pDocument, eConv, cSeperator, sal_True, nFormatFlags );
- 		}
- 	}
- 	rString = sRangeListStr;
-@@ -696,12 +732,13 @@ void ScRangeStringConverter::GetStringFromArea(
- 		OUString& rString,
- 		const ScArea& rArea,
- 		const ScDocument* pDocument,
-+        ::formula::FormulaGrammar::AddressConvention eConv,
-         sal_Unicode cSeperator,
- 		sal_Bool bAppendStr,
- 		sal_uInt16 nFormatFlags )
- {
- 	ScRange aRange( rArea.nColStart, rArea.nRowStart, rArea.nTab, rArea.nColEnd, rArea.nRowEnd, rArea.nTab );
--	GetStringFromRange( rString, aRange, pDocument, cSeperator, bAppendStr, nFormatFlags );
-+	GetStringFromRange( rString, aRange, pDocument, eConv, cSeperator, bAppendStr, nFormatFlags );
- }
- 
+@@ -864,6 +885,8 @@ static void lcl_appendCellRangeAddress(
  
-@@ -711,31 +748,34 @@ void ScRangeStringConverter::GetStringFromAddress(
- 		OUString& rString,
- 		const table::CellAddress& rAddress,
- 		const ScDocument* pDocument,
-+        ::formula::FormulaGrammar::AddressConvention eConv,
-         sal_Unicode cSeperator,
- 		sal_Bool bAppendStr,
- 		sal_uInt16 nFormatFlags )
+ void ScRangeStringConverter::GetStringFromXMLRangeString( OUString& rString, const OUString& rXMLRange, ScDocument* pDoc )
  {
- 	ScAddress aScAddress( static_cast<SCCOL>(rAddress.Column), static_cast<SCROW>(rAddress.Row), rAddress.Sheet );
--	GetStringFromAddress( rString, aScAddress, pDocument, cSeperator, bAppendStr, nFormatFlags );
-+	GetStringFromAddress( rString, aScAddress, pDocument, eConv, cSeperator, bAppendStr, nFormatFlags );
- }
- 
- void ScRangeStringConverter::GetStringFromRange(
- 		OUString& rString,
- 		const table::CellRangeAddress& rRange,
- 		const ScDocument* pDocument,
-+        ::formula::FormulaGrammar::AddressConvention eConv,
-         sal_Unicode cSeperator,
- 		sal_Bool bAppendStr,
- 		sal_uInt16 nFormatFlags )
- {
- 	ScRange aScRange( static_cast<SCCOL>(rRange.StartColumn), static_cast<SCROW>(rRange.StartRow), rRange.Sheet,
- 		static_cast<SCCOL>(rRange.EndColumn), static_cast<SCROW>(rRange.EndRow), rRange.Sheet );
--	GetStringFromRange( rString, aScRange, pDocument, cSeperator, bAppendStr, nFormatFlags );
-+	GetStringFromRange( rString, aScRange, pDocument, eConv, cSeperator, bAppendStr, nFormatFlags );
- }
- 
- void ScRangeStringConverter::GetStringFromRangeList(
- 		OUString& rString,
- 		const uno::Sequence< table::CellRangeAddress >& rRangeSeq,
- 		const ScDocument* pDocument,
-+        ::formula::FormulaGrammar::AddressConvention eConv,
-         sal_Unicode cSeperator,
- 		sal_uInt16 nFormatFlags )
- {
-@@ -744,7 +784,7 @@ void ScRangeStringConverter::GetStringFromRangeList(
- 	for( sal_Int32 nIndex = 0; nIndex < nCount; nIndex++ )
- 	{
- 		const table::CellRangeAddress& rRange = rRangeSeq[ nIndex ];
--		GetStringFromRange( sRangeListStr, rRange, pDocument, cSeperator, sal_True, nFormatFlags );
-+		GetStringFromRange( sRangeListStr, rRange, pDocument, eConv, cSeperator, sal_True, nFormatFlags );
- 	}
- 	rString = sRangeListStr;
- }
-diff --git sc/source/filter/excel/xechart.cxx sc/source/filter/excel/xechart.cxx
-index d986b48..457f5e6 100644
---- sc/source/filter/excel/xechart.cxx
-+++ sc/source/filter/excel/xechart.cxx
-@@ -679,7 +679,8 @@ sal_uInt16 XclExpChSourceLink::ConvertDataSequence( Reference< XDataSequence > x
-     {
-         OUString aRangeRepr = xDataSeq->getSourceRangeRepresentation();
-         ScRangeList aScRanges;
--        if( ScRangeStringConverter::GetRangeListFromString( aScRanges, aRangeRepr, GetDocPtr(), ';' ) )
-+        ScDocument* pDoc = GetDocPtr();
-+        if( ScRangeStringConverter::GetRangeListFromString( aScRanges, aRangeRepr, pDoc, ::formula::FormulaGrammar::CONV_OOO, ';' ) )
-         {
-             // split 3-dimensional ranges into single sheets
-             ScRangeList aNewScRanges;
-diff --git sc/source/filter/excel/xichart.cxx sc/source/filter/excel/xichart.cxx
-index 7976e8a..530aeca 100644
---- sc/source/filter/excel/xichart.cxx
-+++ sc/source/filter/excel/xichart.cxx
-@@ -695,7 +695,8 @@ Reference< XDataSequence > XclImpChSourceLink::CreateDataSequence( const OUStrin
-     {
-         // create the string representation of the range list
-         OUString aRangeRep;
--        ScRangeStringConverter::GetStringFromRangeList( aRangeRep, &maScRanges, GetDocPtr(), ';' );
-+        ScDocument* pDoc = GetDocPtr();
-+        ScRangeStringConverter::GetStringFromRangeList( aRangeRep, &maScRanges, pDoc, ::formula::FormulaGrammar::CONV_OOO, ';' );
- 
-         // create the data sequence
-         try
-diff --git sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx
-index 1213a43..0d01656 100644
---- sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx
-+++ sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx
-@@ -395,7 +395,7 @@ void ScChangeTrackingExportHelper::WriteFormulaCell(const ScBaseCell* pCell, con
- 	{
- 		rtl::OUString sAddress;
-         const ScDocument* pDoc = rExport.GetDocument();
--		ScRangeStringConverter::GetStringFromAddress(sAddress, pFormulaCell->aPos, pDoc);
-+		ScRangeStringConverter::GetStringFromAddress(sAddress, pFormulaCell->aPos, pDoc, ::formula::FormulaGrammar::CONV_OOO);
- 		rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_CELL_ADDRESS, sAddress);
-         const formula::FormulaGrammar::Grammar eGrammar = pDoc->GetStorageGrammar();
-         sal_uInt16 nNamespacePrefix = (eGrammar == formula::FormulaGrammar::GRAM_ODFF ? XML_NAMESPACE_OF : XML_NAMESPACE_OOOC);
-diff --git sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx
-index d48f31d..f89f89d 100644
---- sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx
-+++ sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx
-@@ -88,7 +88,7 @@ ScBaseCell* ScMyCellInfo::CreateCell(ScDocument* pDoc)
- 		{
- 			ScAddress aPos;
- 			sal_Int32 nOffset(0);
--			ScRangeStringConverter::GetAddressFromString(aPos, sFormulaAddress, pDoc, nOffset);
-+			ScRangeStringConverter::GetAddressFromString(aPos, sFormulaAddress, pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset);
- 			pCell = new ScFormulaCell(pDoc, aPos, sFormula, eGrammar, nMatrixFlag);
- 			static_cast<ScFormulaCell*>(pCell)->SetMatColsRows(static_cast<SCCOL>(nMatrixCols), static_cast<SCROW>(nMatrixRows));
- 		}
-diff --git sc/source/filter/xml/XMLConsolidationContext.cxx sc/source/filter/xml/XMLConsolidationContext.cxx
-index e04ad00..478d4fc 100644
---- sc/source/filter/xml/XMLConsolidationContext.cxx
-+++ sc/source/filter/xml/XMLConsolidationContext.cxx
-@@ -84,7 +84,7 @@ ScXMLConsolidationContext::ScXMLConsolidationContext(
- 				{
- 					sal_Int32 nOffset(0);
- 					bTargetAddr = ScRangeStringConverter::GetAddressFromString(
--						aTargetAddr, sValue, GetScImport().GetDocument(), nOffset );
-+						aTargetAddr, sValue, GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset );
- 				}
- 				break;
- 			case XML_TOK_CONSOLIDATION_ATTR_USE_LABEL:
-@@ -130,7 +130,7 @@ void ScXMLConsolidationContext::EndElement()
- 			{
- 				ppAreas[ nIndex ] = new ScArea;
- 				if ( !ScRangeStringConverter::GetAreaFromString(
--					*ppAreas[ nIndex ], sSourceList, GetScImport().GetDocument(), nOffset ) )
-+					*ppAreas[ nIndex ], sSourceList, GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset ) )
- 				{
- 					bError = sal_True;		//! handle error
- 				}
-diff --git sc/source/filter/xml/XMLDetectiveContext.cxx sc/source/filter/xml/XMLDetectiveContext.cxx
-index 5abc4e2..8eb8b03 100644
---- sc/source/filter/xml/XMLDetectiveContext.cxx
-+++ sc/source/filter/xml/XMLDetectiveContext.cxx
-@@ -157,7 +157,7 @@ ScXMLDetectiveHighlightedContext::ScXMLDetectiveHighlightedContext(
- 			{
- 				sal_Int32 nOffset(0);
- 				GetScImport().LockSolarMutex();
--				bValid = ScRangeStringConverter::GetRangeFromString( aDetectiveObj.aSourceRange, sValue, GetScImport().GetDocument(), nOffset );
-+				bValid = ScRangeStringConverter::GetRangeFromString( aDetectiveObj.aSourceRange, sValue, GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset );
- 				GetScImport().UnlockSolarMutex();
- 			}
- 			break;
-diff --git sc/source/filter/xml/XMLExportDataPilot.cxx sc/source/filter/xml/XMLExportDataPilot.cxx
-index 79c505e..0227b44 100644
---- sc/source/filter/xml/XMLExportDataPilot.cxx
-+++ sc/source/filter/xml/XMLExportDataPilot.cxx
-@@ -204,7 +204,7 @@ void ScXMLExportDataPilot::WriteDPFilter(const ScQueryParam& aQueryParam)
- 				ScRange aConditionRange(aQueryParam.nCol1, aQueryParam.nRow1, aQueryParam.nTab,
- 					aQueryParam.nCol2, aQueryParam.nRow2, aQueryParam.nTab);
- 				rtl::OUString sConditionRange;
--				ScRangeStringConverter::GetStringFromRange( sConditionRange, aConditionRange, pDoc );
-+				ScRangeStringConverter::GetStringFromRange( sConditionRange, aConditionRange, pDoc, ::formula::FormulaGrammar::CONV_OOO );
- 				rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_CONDITION_SOURCE_RANGE_ADDRESS, sConditionRange);
- 			}
- 			if (!aQueryParam.bDuplicate)
-@@ -734,7 +734,7 @@ void ScXMLExportDataPilot::WriteDataPilots(const uno::Reference <sheet::XSpreads
- 					{
- 						ScRange aOutRange((*pDPs)[i]->GetOutRange());
- 						rtl::OUString sTargetRangeAddress;
--						ScRangeStringConverter::GetStringFromRange( sTargetRangeAddress, aOutRange, pDoc );
-+						ScRangeStringConverter::GetStringFromRange( sTargetRangeAddress, aOutRange, pDoc, ::formula::FormulaGrammar::CONV_OOO );
- 						ScDocAttrIterator aAttrItr(pDoc, aOutRange.aStart.Tab(),
- 							aOutRange.aStart.Col(), aOutRange.aStart.Row(),
- 							aOutRange.aEnd.Col(), aOutRange.aEnd.Row());
-@@ -751,7 +751,7 @@ void ScXMLExportDataPilot::WriteDataPilots(const uno::Reference <sheet::XSpreads
- 								{
- 									ScAddress aButtonAddr(nCol, nButtonRow, aOutRange.aStart.Tab());
- 									ScRangeStringConverter::GetStringFromAddress(
--                                        sOUButtonList, aButtonAddr, pDoc, ' ', sal_True );
-+                                        sOUButtonList, aButtonAddr, pDoc, ::formula::FormulaGrammar::CONV_OOO, ' ', sal_True );
- 								}
- 							}
- 							pAttr = aAttrItr.GetNext(nCol, nRow1, nRow2);
-@@ -789,7 +789,7 @@ void ScXMLExportDataPilot::WriteDataPilots(const uno::Reference <sheet::XSpreads
- 						{
- 							const ScSheetSourceDesc* pSheetSource = (*pDPs)[i]->GetSheetDesc();
- 							rtl::OUString sCellRangeAddress;
--							ScRangeStringConverter::GetStringFromRange( sCellRangeAddress, pSheetSource->aSourceRange, pDoc );
-+							ScRangeStringConverter::GetStringFromRange( sCellRangeAddress, pSheetSource->aSourceRange, pDoc, ::formula::FormulaGrammar::CONV_OOO );
- 							rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_CELL_RANGE_ADDRESS, sCellRangeAddress);
- 							SvXMLElementExport aElemSCR(rExport, XML_NAMESPACE_TABLE, XML_SOURCE_CELL_RANGE, sal_True, sal_True);
- 							rExport.CheckAttrList();
-diff --git sc/source/filter/xml/XMLExportDatabaseRanges.cxx sc/source/filter/xml/XMLExportDatabaseRanges.cxx
-index 927ff68..ae7d11c 100644
---- sc/source/filter/xml/XMLExportDatabaseRanges.cxx
-+++ sc/source/filter/xml/XMLExportDatabaseRanges.cxx
-@@ -290,7 +290,7 @@ void ScXMLExportDatabaseRanges::WriteFilterDescriptor(const uno::Reference <shee
- 				if (xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_OUTPOS))) >>= aOutputPosition)
- 				{
- 					rtl::OUString sOUCellAddress;
--					ScRangeStringConverter::GetStringFromAddress( sOUCellAddress, aOutputPosition, pDoc );
-+					ScRangeStringConverter::GetStringFromAddress( sOUCellAddress, aOutputPosition, pDoc, ::formula::FormulaGrammar::CONV_OOO );
- 					rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_TARGET_RANGE_ADDRESS, sOUCellAddress);
- 				}
- 			}
-@@ -302,7 +302,7 @@ void ScXMLExportDatabaseRanges::WriteFilterDescriptor(const uno::Reference <shee
- 			if (pDBData->GetAdvancedQuerySource(aAdvSource))
- 			{
- 				rtl::OUString sOUCellAddress;
--				ScRangeStringConverter::GetStringFromRange( sOUCellAddress, aAdvSource, pDoc );
-+				ScRangeStringConverter::GetStringFromRange( sOUCellAddress, aAdvSource, pDoc, ::formula::FormulaGrammar::CONV_OOO );
- 				rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_CONDITION_SOURCE_RANGE_ADDRESS, sOUCellAddress);
- 			}
- 
-@@ -445,7 +445,7 @@ void ScXMLExportDatabaseRanges::WriteSortDescriptor(const uno::Sequence <beans::
- 		if (bCopyOutputData)
- 		{
- 			rtl::OUString sOUCellAddress;
--			ScRangeStringConverter::GetStringFromAddress( sOUCellAddress, aOutputPosition, pDoc );
-+			ScRangeStringConverter::GetStringFromAddress( sOUCellAddress, aOutputPosition, pDoc, ::formula::FormulaGrammar::CONV_OOO );
- 			rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_TARGET_RANGE_ADDRESS, sOUCellAddress);
- 		}
- //      no longer supported
-@@ -620,7 +620,7 @@ void ScXMLExportDatabaseRanges::WriteDatabaseRanges(const com::sun::star::uno::R
- 								rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_NAME, sDatabaseRangeName);
- 							table::CellRangeAddress aRangeAddress(xDatabaseRange->getDataArea());
- 							rtl::OUString sOUAddress;
--							ScRangeStringConverter::GetStringFromRange( sOUAddress, aRangeAddress, pDoc );
-+							ScRangeStringConverter::GetStringFromRange( sOUAddress, aRangeAddress, pDoc, ::formula::FormulaGrammar::CONV_OOO );
- 							rExport.AddAttribute (XML_NAMESPACE_TABLE, XML_TARGET_RANGE_ADDRESS, sOUAddress);
- 							ScDBCollection* pDBCollection = pDoc->GetDBCollection();
- 							sal_uInt16 nIndex;
-diff --git sc/source/filter/xml/XMLStylesExportHelper.cxx sc/source/filter/xml/XMLStylesExportHelper.cxx
-index deb1e33..7c23cd4 100644
---- sc/source/filter/xml/XMLStylesExportHelper.cxx
-+++ sc/source/filter/xml/XMLStylesExportHelper.cxx
-@@ -306,7 +306,7 @@ rtl::OUString ScMyValidationsContainer::GetCondition(ScXMLExport& rExport, const
- rtl::OUString ScMyValidationsContainer::GetBaseCellAddress(ScDocument* pDoc, const table::CellAddress& aCell)
- {
- 	rtl::OUString sAddress;
--	ScRangeStringConverter::GetStringFromAddress( sAddress, aCell, pDoc );
-+	ScRangeStringConverter::GetStringFromAddress( sAddress, aCell, pDoc, ::formula::FormulaGrammar::CONV_OOO );
- 	return sAddress;
- }
- 
-diff --git sc/source/filter/xml/XMLTableShapeImportHelper.cxx sc/source/filter/xml/XMLTableShapeImportHelper.cxx
-index 7f9fb3f..ddb902b 100644
---- sc/source/filter/xml/XMLTableShapeImportHelper.cxx
-+++ sc/source/filter/xml/XMLTableShapeImportHelper.cxx
-@@ -106,7 +106,7 @@ void XMLTableShapeImportHelper::finishShape(
- 				    if (IsXMLToken(aLocalName, XML_END_CELL_ADDRESS))
- 				    {
- 					    sal_Int32 nOffset(0);
--					    ScRangeStringConverter::GetAddressFromString(aEndCell, rValue, static_cast<ScXMLImport&>(mrImporter).GetDocument(), nOffset);
-+					    ScRangeStringConverter::GetAddressFromString(aEndCell, rValue, static_cast<ScXMLImport&>(mrImporter).GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset);
- 				    }
- 				    else if (IsXMLToken(aLocalName, XML_END_X))
- 					    static_cast<ScXMLImport&>(mrImporter).GetMM100UnitConverter().convertMeasure(nEndX, rValue);
-diff --git sc/source/filter/xml/XMLTableShapeResizer.cxx sc/source/filter/xml/XMLTableShapeResizer.cxx
-index f5ab80c..0751be4 100644
---- sc/source/filter/xml/XMLTableShapeResizer.cxx
-+++ sc/source/filter/xml/XMLTableShapeResizer.cxx
-@@ -75,7 +75,7 @@ void ScMyShapeResizer::CreateChartListener(ScDocument* pDoc,
- 				if (pCollection)
- 				{
- 					ScRangeListRef aRangeListRef(new ScRangeList());
--					ScRangeStringConverter::GetRangeListFromString(*aRangeListRef, *pRangeList, pDoc);
-+					ScRangeStringConverter::GetRangeListFromString(*aRangeListRef, *pRangeList, pDoc, ::formula::FormulaGrammar::CONV_OOO);
- 					if (aRangeListRef->Count())
- 					{
- 						ScChartListener* pCL(new ScChartListener(rName, pDoc, aRangeListRef ));
-diff --git sc/source/filter/xml/xmldpimp.cxx sc/source/filter/xml/xmldpimp.cxx
-index 9d79e15..9dfcd8c 100644
---- sc/source/filter/xml/xmldpimp.cxx
-+++ sc/source/filter/xml/xmldpimp.cxx
-@@ -175,7 +175,7 @@ ScXMLDataPilotTableContext::ScXMLDataPilotTableContext( ScXMLImport& rImport,
- 			case XML_TOK_DATA_PILOT_TABLE_ATTR_TARGET_RANGE_ADDRESS :
- 			{
- 				sal_Int32 nOffset(0);
--				bTargetRangeAddress = ScRangeStringConverter::GetRangeFromString( aTargetRangeAddress, sValue, pDoc, nOffset );
-+				bTargetRangeAddress = ScRangeStringConverter::GetRangeFromString( aTargetRangeAddress, sValue, pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset );
- 			}
- 			break;
- 			case XML_TOK_DATA_PILOT_TABLE_ATTR_BUTTONS :
-@@ -272,7 +272,7 @@ void ScXMLDataPilotTableContext::SetButtons()
- 		{
- 			ScAddress aScAddress;
-             sal_Int32 nAddrOffset(0);
--            if (pDoc && ScRangeStringConverter::GetAddressFromString( aScAddress, sAddress, pDoc, nAddrOffset ))
-+            if (pDoc && ScRangeStringConverter::GetAddressFromString( aScAddress, sAddress, pDoc, ::formula::FormulaGrammar::CONV_OOO, nAddrOffset ))
- 			{
- 				ScMergeFlagAttr aAttr( SC_MF_BUTTON );
- 				pDoc->ApplyAttr( aScAddress.Col(), aScAddress.Row(), aScAddress.Tab(), aAttr );
-@@ -675,7 +675,7 @@ ScXMLSourceCellRangeContext::ScXMLSourceCellRangeContext( ScXMLImport& rImport,
- 			{
- 				ScRange aSourceRangeAddress;
- 				sal_Int32 nOffset(0);
--				if (ScRangeStringConverter::GetRangeFromString( aSourceRangeAddress, sValue, GetScImport().GetDocument(), nOffset ))
-+				if (ScRangeStringConverter::GetRangeFromString( aSourceRangeAddress, sValue, GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset ))
- 					pDataPilotTable->SetSourceCellRangeAddress(aSourceRangeAddress);
- 			}
- 			break;
-diff --git sc/source/filter/xml/xmldrani.cxx sc/source/filter/xml/xmldrani.cxx
-index bf8219c..dfc87cc 100644
---- sc/source/filter/xml/xmldrani.cxx
-+++ sc/source/filter/xml/xmldrani.cxx
-@@ -292,7 +292,7 @@ void ScXMLDatabaseRangeContext::EndElement()
- 			{
- 				table::CellRangeAddress aCellRangeAddress;
- 				sal_Int32 nOffset(0);
--				if (ScRangeStringConverter::GetRangeFromString( aCellRangeAddress, sRangeAddress, pDoc, nOffset ))
-+				if (ScRangeStringConverter::GetRangeFromString( aCellRangeAddress, sRangeAddress, pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset ))
- 				{
- 					sal_Bool bInsert(sal_True);
- 					try
-diff --git sc/source/filter/xml/xmlexprt.cxx sc/source/filter/xml/xmlexprt.cxx
-index 966a1a5..09896a1 100644
---- sc/source/filter/xml/xmlexprt.cxx
-+++ sc/source/filter/xml/xmlexprt.cxx
-@@ -1423,7 +1423,7 @@ void ScXMLExport::GetColumnRowHeader(sal_Bool& rHasColumnHeader, table::CellRang
- 		rRowHeaderRange = xPrintAreas->getTitleRows();
- 		rColumnHeaderRange = xPrintAreas->getTitleColumns();
- 		uno::Sequence< table::CellRangeAddress > aRangeList( xPrintAreas->getPrintAreas() );
--		ScRangeStringConverter::GetStringFromRangeList( rPrintRanges, aRangeList, pDoc );
-+		ScRangeStringConverter::GetStringFromRangeList( rPrintRanges, aRangeList, pDoc, ::formula::FormulaGrammar::CONV_OOO );
- 	}
- }
- 
-@@ -2688,7 +2688,7 @@ void ScXMLExport::WriteShapes(const ScMyCell& rMyCell)
- 					Rectangle aEndRec(pDoc->GetMMRect(aItr->aEndAddress.Col(), aItr->aEndAddress.Row(),
- 						aItr->aEndAddress.Col(), aItr->aEndAddress.Row(), aItr->aEndAddress.Tab()));
- 					rtl::OUString sEndAddress;
--					ScRangeStringConverter::GetStringFromAddress(sEndAddress, aItr->aEndAddress, pDoc);
-+					ScRangeStringConverter::GetStringFromAddress(sEndAddress, aItr->aEndAddress, pDoc, ::formula::FormulaGrammar::CONV_OOO);
- 					AddAttribute(XML_NAMESPACE_TABLE, XML_END_CELL_ADDRESS, sEndAddress);
-                     if (bNegativePage)
-                         aEndPoint.X = -aEndRec.Right();
-@@ -2918,7 +2918,7 @@ void ScXMLExport::WriteDetective( const ScMyCell& rMyCell )
- 				{
- 					if( (aObjItr->eObjType == SC_DETOBJ_ARROW) || (aObjItr->eObjType == SC_DETOBJ_TOOTHERTAB))
- 					{
--						ScRangeStringConverter::GetStringFromRange( sString, aObjItr->aSourceRange, pDoc );
-+						ScRangeStringConverter::GetStringFromRange( sString, aObjItr->aSourceRange, pDoc, ::formula::FormulaGrammar::CONV_OOO );
- 						AddAttribute( XML_NAMESPACE_TABLE, XML_CELL_RANGE_ADDRESS, sString );
- 					}
- 					ScXMLConverter::GetStringFromDetObjType( sString, aObjItr->eObjType );
-@@ -3309,7 +3309,7 @@ void ScXMLExport::WriteScenario()
- 		AddAttribute(XML_NAMESPACE_TABLE, XML_IS_ACTIVE, aBuffer.makeStringAndClear());
- 		const ScRangeList* pRangeList = pDoc->GetScenarioRanges(static_cast<SCTAB>(nCurrentTable));
- 		rtl::OUString sRangeListStr;
--		ScRangeStringConverter::GetStringFromRangeList( sRangeListStr, pRangeList, pDoc );
-+		ScRangeStringConverter::GetStringFromRangeList( sRangeListStr, pRangeList, pDoc, ::formula::FormulaGrammar::CONV_OOO );
- 		AddAttribute(XML_NAMESPACE_TABLE, XML_SCENARIO_RANGES, sRangeListStr);
- 		if (sComment.Len())
- 			AddAttribute(XML_NAMESPACE_TABLE, XML_COMMENT, rtl::OUString(sComment));
-@@ -3351,10 +3351,10 @@ void ScXMLExport::WriteLabelRanges( const uno::Reference< container::XIndexAcces
- 		{
- 			OUString sRangeStr;
- 			table::CellRangeAddress aCellRange( xRange->getLabelArea() );
--			ScRangeStringConverter::GetStringFromRange( sRangeStr, aCellRange, pDoc );
-+			ScRangeStringConverter::GetStringFromRange( sRangeStr, aCellRange, pDoc, ::formula::FormulaGrammar::CONV_OOO );
- 			AddAttribute( XML_NAMESPACE_TABLE, XML_LABEL_CELL_RANGE_ADDRESS, sRangeStr );
- 			aCellRange = xRange->getDataArea();
--			ScRangeStringConverter::GetStringFromRange( sRangeStr, aCellRange, pDoc );
-+			ScRangeStringConverter::GetStringFromRange( sRangeStr, aCellRange, pDoc, ::formula::FormulaGrammar::CONV_OOO );
- 			AddAttribute( XML_NAMESPACE_TABLE, XML_DATA_CELL_RANGE_ADDRESS, sRangeStr );
- 			AddAttribute( XML_NAMESPACE_TABLE, XML_ORIENTATION, bColumn ? XML_COLUMN : XML_ROW );
- 			SvXMLElementExport aElem( *this, XML_NAMESPACE_TABLE, XML_LABEL_RANGE, sal_True, sal_True );
-@@ -3395,7 +3395,7 @@ void ScXMLExport::WriteNamedExpressions(const com::sun::star::uno::Reference <co
- 
- 								OUString sOUBaseCellAddress;
- 								ScRangeStringConverter::GetStringFromAddress( sOUBaseCellAddress,
--									xNamedRange->getReferencePosition(), pDoc, ' ', sal_False, SCA_ABS_3D );
-+									xNamedRange->getReferencePosition(), pDoc, ::formula::FormulaGrammar::CONV_OOO, ' ', sal_False, SCA_ABS_3D );
- 								AddAttribute(XML_NAMESPACE_TABLE, XML_BASE_CELL_ADDRESS, sOUBaseCellAddress);
- 
- 								sal_uInt16 nRangeIndex;
-@@ -3669,10 +3669,10 @@ void ScXMLExport::WriteConsolidation()
- 
- 			sStrData = OUString();
- 			for( sal_Int32 nIndex = 0; nIndex < pCons->nDataAreaCount; ++nIndex )
--				ScRangeStringConverter::GetStringFromArea( sStrData, *pCons->ppDataAreas[ nIndex ], pDoc, sal_True );
-+				ScRangeStringConverter::GetStringFromArea( sStrData, *pCons->ppDataAreas[ nIndex ], pDoc, ::formula::FormulaGrammar::CONV_OOO, sal_True );
- 			AddAttribute( XML_NAMESPACE_TABLE, XML_SOURCE_CELL_RANGE_ADDRESSES, sStrData );
- 
--			ScRangeStringConverter::GetStringFromAddress( sStrData, ScAddress( pCons->nCol, pCons->nRow, pCons->nTab ), pDoc );
-+			ScRangeStringConverter::GetStringFromAddress( sStrData, ScAddress( pCons->nCol, pCons->nRow, pCons->nTab ), pDoc, ::formula::FormulaGrammar::CONV_OOO );
- 			AddAttribute( XML_NAMESPACE_TABLE, XML_TARGET_CELL_ADDRESS, sStrData );
- 
- 			if( pCons->bByCol && !pCons->bByRow )
-@@ -3742,7 +3742,7 @@ void ScXMLExport::GetChangeTrackViewSettings(uno::Sequence<beans::PropertyValue>
- 				pChangeProps[SC_SHOW_CHANGES_BY_RANGES].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ShowChangesByRanges"));
- 				pChangeProps[SC_SHOW_CHANGES_BY_RANGES].Value <<= pViewSettings->HasRange();
- 				rtl::OUString sRangeList;
--				ScRangeStringConverter::GetStringFromRangeList(sRangeList, &(pViewSettings->GetTheRangeList()), GetDocument());
-+				ScRangeStringConverter::GetStringFromRangeList(sRangeList, &(pViewSettings->GetTheRangeList()), GetDocument(), ::formula::FormulaGrammar::CONV_OOO);
- 				pChangeProps[SC_SHOW_CHANGES_BY_RANGES_LIST].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ShowChangesByRangesList"));
- 				pChangeProps[SC_SHOW_CHANGES_BY_RANGES_LIST].Value <<= sRangeList;
- 
-diff --git sc/source/filter/xml/xmlfilti.cxx sc/source/filter/xml/xmlfilti.cxx
-index fabfb5c..6e29479 100644
---- sc/source/filter/xml/xmlfilti.cxx
-+++ sc/source/filter/xml/xmlfilti.cxx
-@@ -84,7 +84,7 @@ ScXMLFilterContext::ScXMLFilterContext( ScXMLImport& rImport,
- 			{
- 				ScRange aScRange;
- 				sal_Int32 nOffset(0);
--				if (ScRangeStringConverter::GetRangeFromString( aScRange, sValue, pDoc, nOffset ))
-+				if (ScRangeStringConverter::GetRangeFromString( aScRange, sValue, pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset ))
- 				{
- 					ScUnoConversion::FillApiAddress( aOutputPosition, aScRange.aStart );
- 					bCopyOutputData = sal_True;
-@@ -94,7 +94,7 @@ ScXMLFilterContext::ScXMLFilterContext( ScXMLImport& rImport,
- 			case XML_TOK_FILTER_ATTR_CONDITION_SOURCE_RANGE_ADDRESS :
- 			{
- 				sal_Int32 nOffset(0);
--				if (ScRangeStringConverter::GetRangeFromString( aConditionSourceRangeAddress, sValue, pDoc, nOffset ))
-+				if (ScRangeStringConverter::GetRangeFromString( aConditionSourceRangeAddress, sValue, pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset ))
- 					bConditionSourceRange = sal_True;
- 			}
- 			break;
-@@ -444,7 +444,7 @@ ScXMLDPFilterContext::ScXMLDPFilterContext( ScXMLImport& rImport,
- 			{
- 				ScRange aScRange;
- 				sal_Int32 nOffset(0);
--				if (ScRangeStringConverter::GetRangeFromString( aScRange, sValue, pDoc, nOffset ))
-+				if (ScRangeStringConverter::GetRangeFromString( aScRange, sValue, pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset ))
- 				{
- 					aOutputPosition = aScRange.aStart;
- 					bCopyOutputData = sal_True;
-@@ -454,7 +454,7 @@ ScXMLDPFilterContext::ScXMLDPFilterContext( ScXMLImport& rImport,
- 			case XML_TOK_FILTER_ATTR_CONDITION_SOURCE_RANGE_ADDRESS :
- 			{
- 				sal_Int32 nOffset(0);
--				if(ScRangeStringConverter::GetRangeFromString( aConditionSourceRangeAddress, sValue, pDoc, nOffset ))
-+				if(ScRangeStringConverter::GetRangeFromString( aConditionSourceRangeAddress, sValue, pDoc, ::formula::FormulaGrammar::CONV_OOO, nOffset ))
- 					bConditionSourceRange = sal_True;
- 			}
- 			break;
-diff --git sc/source/filter/xml/xmlimprt.cxx sc/source/filter/xml/xmlimprt.cxx
-index 59e279e..db5ebfc 100644
---- sc/source/filter/xml/xmlimprt.cxx
-+++ sc/source/filter/xml/xmlimprt.cxx
-@@ -2179,7 +2179,7 @@ void ScXMLImport::SetChangeTrackingViewSettings(const com::sun::star::uno::Seque
-                     if ((rChangeProps[i].Value >>= sRanges) && sRanges.getLength())
-                     {
-                         ScRangeList aRangeList;
--                        ScRangeStringConverter::GetRangeListFromString(aRangeList, sRanges, GetDocument());
-+                        ScRangeStringConverter::GetRangeListFromString(aRangeList, sRanges, GetDocument(), ::formula::FormulaGrammar::CONV_OOO);
-                         pViewSettings->SetTheRangeList(aRangeList);
-                     }
-                 }
-@@ -2678,8 +2678,8 @@ void ScXMLImport::SetLabelRanges()
-                     sal_Int32 nOffset1(0);
-                     sal_Int32 nOffset2(0);
- 
--                    if (ScRangeStringConverter::GetRangeFromString( aLabelRange, (*aItr)->sLabelRangeStr, GetDocument(), nOffset1 ) &&
--                        ScRangeStringConverter::GetRangeFromString( aDataRange, (*aItr)->sDataRangeStr, GetDocument(), nOffset2 ))
-+                    if (ScRangeStringConverter::GetRangeFromString( aLabelRange, (*aItr)->sLabelRangeStr, GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset1 ) &&
-+                        ScRangeStringConverter::GetRangeFromString( aDataRange, (*aItr)->sDataRangeStr, GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset2 ))
-                     {
-                         if ( (*aItr)->bColumnOrientation )
-                             xColRanges->addNew( aLabelRange, aDataRange );
-@@ -2714,7 +2714,7 @@ void ScXMLImport::SetNamedRanges()
-                 {
-                     sal_Int32 nOffset(0);
-                     if (ScRangeStringConverter::GetAddressFromString(
--                        aCellAddress, (*aItr)->sBaseCellAddress, GetDocument(), nOffset ))
-+                        aCellAddress, (*aItr)->sBaseCellAddress, GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset ))
-                     {
-                         try
-                         {
-@@ -2755,7 +2755,7 @@ void ScXMLImport::SetNamedRanges()
-                 {
-                     sal_Int32 nOffset(0);
-                     if (ScRangeStringConverter::GetAddressFromString(
--                        aCellAddress, (*aItr)->sBaseCellAddress, GetDocument(), nOffset ))
-+                        aCellAddress, (*aItr)->sBaseCellAddress, GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset ))
-                     {
-                         uno::Reference <sheet::XNamedRange> xNamedRange(xNamedRanges->getByName((*aItr)->sName), uno::UNO_QUERY);
-                         if (xNamedRange.is())
-diff --git sc/source/filter/xml/xmlsceni.cxx sc/source/filter/xml/xmlsceni.cxx
-index 525c6de..566c510 100644
---- sc/source/filter/xml/xmlsceni.cxx
-+++ sc/source/filter/xml/xmlsceni.cxx
-@@ -114,7 +114,7 @@ ScXMLTableScenarioContext::ScXMLTableScenarioContext(
- 			case XML_TOK_TABLE_SCENARIO_ATTR_SCENARIO_RANGES:
- 			{
- 				ScRangeStringConverter::GetRangeListFromString(
--					aScenarioRanges, sValue, GetScImport().GetDocument() );
-+					aScenarioRanges, sValue, GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO );
- 			}
- 			break;
- 			case XML_TOK_TABLE_SCENARIO_ATTR_COMMENT:
-diff --git sc/source/filter/xml/xmlsorti.cxx sc/source/filter/xml/xmlsorti.cxx
-index a2cddb8..fa65d38 100644
---- sc/source/filter/xml/xmlsorti.cxx
-+++ sc/source/filter/xml/xmlsorti.cxx
-@@ -93,7 +93,7 @@ ScXMLSortContext::ScXMLSortContext( ScXMLImport& rImport,
- 			{
- 				ScRange aScRange;
- 				sal_Int32 nOffset(0);
--				if (ScRangeStringConverter::GetRangeFromString( aScRange, sValue, GetScImport().GetDocument(), nOffset ))
-+				if (ScRangeStringConverter::GetRangeFromString( aScRange, sValue, GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset ))
- 				{
- 					ScUnoConversion::FillApiAddress( aOutputPosition, aScRange.aStart );
- 					bCopyOutputData = sal_True;
-diff --git sc/source/filter/xml/xmlstyle.cxx sc/source/filter/xml/xmlstyle.cxx
-index 6ef1632..555962d 100644
---- sc/source/filter/xml/xmlstyle.cxx
-+++ sc/source/filter/xml/xmlstyle.cxx
-@@ -708,8 +708,9 @@ void ScXMLAutoStylePoolP::exportStyleContent(
- 											    rScXMLExport.AddAttribute(XML_NAMESPACE_STYLE, XML_CONDITION, sCondition);
-                                                 rScXMLExport.AddAttribute(XML_NAMESPACE_STYLE, XML_APPLY_STYLE_NAME, rScXMLExport.EncodeStyleName( sStyleName ));
- 											    OUString sOUBaseAddress;
-+                                                ScDocument* pDoc = rScXMLExport.GetDocument();
- 											    ScRangeStringConverter::GetStringFromAddress( sOUBaseAddress,
--												    xSheetCondition->getSourcePosition(), rScXMLExport.GetDocument() );
-+												    xSheetCondition->getSourcePosition(), pDoc, ::formula::FormulaGrammar::CONV_OOO );
- 											    rScXMLExport.AddAttribute(XML_NAMESPACE_STYLE, XML_BASE_CELL_ADDRESS, sOUBaseAddress);
- 											    SvXMLElementExport aMElem(rScXMLExport, XML_NAMESPACE_STYLE, XML_MAP, sal_True, sal_True);
- 										    }
-@@ -762,7 +763,7 @@ void ScXMLAutoStylePoolP::exportStyleContent(
- 											    rScXMLExport.AddAttribute(XML_NAMESPACE_STYLE, XML_APPLY_STYLE_NAME, rScXMLExport.EncodeStyleName( sStyleName ));
- 											    OUString sOUBaseAddress;
- 											    ScRangeStringConverter::GetStringFromAddress( sOUBaseAddress,
--												    xSheetCondition->getSourcePosition(), rScXMLExport.GetDocument() );
-+												    xSheetCondition->getSourcePosition(), rScXMLExport.GetDocument(), ::formula::FormulaGrammar::CONV_OOO );
- 											    rScXMLExport.AddAttribute(XML_NAMESPACE_STYLE, XML_BASE_CELL_ADDRESS, sOUBaseAddress);
- 											    SvXMLElementExport aMElem(rScXMLExport, XML_NAMESPACE_STYLE, XML_MAP, sal_True, sal_True);
- 										    }
-diff --git sc/source/filter/xml/xmltabi.cxx sc/source/filter/xml/xmltabi.cxx
-index f665b56..fc09927 100644
---- sc/source/filter/xml/xmltabi.cxx
-+++ sc/source/filter/xml/xmltabi.cxx
-@@ -331,7 +331,7 @@ void ScXMLTableContext::EndElement()
- 			if( xPrintAreas.is() )
- 			{
- 				uno::Sequence< table::CellRangeAddress > aRangeList;
--				ScRangeStringConverter::GetRangeListFromString( aRangeList, sPrintRanges, pDoc );
-+				ScRangeStringConverter::GetRangeListFromString( aRangeList, sPrintRanges, pDoc, ::formula::FormulaGrammar::CONV_OOO );
- 				xPrintAreas->setPrintAreas( aRangeList );
- 			}
- 		}
-diff --git sc/source/ui/unoobj/chart2uno.cxx sc/source/ui/unoobj/chart2uno.cxx
-index 763cc1a..fb44a37 100644
---- sc/source/ui/unoobj/chart2uno.cxx
-+++ sc/source/ui/unoobj/chart2uno.cxx
-@@ -1008,7 +1008,7 @@ uno::Reference< chart2::data::XDataSequence > SAL_CALL
-         return xResult;
- 
- 	ScRangeListRef aRangeList = new ScRangeList();
--    if (ScRangeStringConverter::GetRangeListFromString( *aRangeList, aRangeRepresentation, m_pDocument, ';' ))
-+    if (ScRangeStringConverter::GetRangeListFromString( *aRangeList, aRangeRepresentation, m_pDocument, ::formula::FormulaGrammar::CONV_OOO, ';' ))
-         xResult.set(new ScChart2DataSequence(m_pDocument, this, aRangeList));
- 
-     return xResult;
-@@ -1042,23 +1042,122 @@ rtl::OUString SAL_CALL ScChart2DataProvider::convertRangeToXML( const rtl::OUStr
-     if( m_pDocument )
-     {
-         ScRangeList aList;
--        if( !ScRangeStringConverter::GetRangeListFromString(aList, sRangeRepresentation, m_pDocument, ';'))
-+        if( !ScRangeStringConverter::GetRangeListFromString(aList, sRangeRepresentation, m_pDocument, m_pDocument->GetAddressConvention(), ';'))
-             throw lang::IllegalArgumentException();
--        ScRangeStringConverter::GetStringFromRangeList(sRet, &aList, m_pDocument);
-+        ScRangeStringConverter::GetStringFromRangeList(sRet, &aList, m_pDocument, ::formula::FormulaGrammar::CONV_OOO);
-     }
- 
-     return sRet;
- }
- 
-+static bool lcl_parseSingleRangeToken(
-+    ScRange& rRange, const rtl::OUString& rToken, ScDocument* pDoc, ::formula::FormulaGrammar::AddressConvention eConv,
-+    const sal_Unicode cQuote, bool bOldSyntaxWorkAround)
-+{
-+    sal_Int32 nSepPos = ScRangeStringConverter::IndexOf(rToken, ':', 0, cQuote);
-+    if (nSepPos >= 0)
-+    {
-+        // Cell range
-+        rtl::OUString aBeginCell = rToken.copy(0, nSepPos);
-+        rtl::OUString aEndCell   = rToken.copy(nSepPos+1);
-+
-+        if (!aBeginCell.getLength() || !aEndCell.getLength())
-+            // both cell addresses must exist for this to work.
-+            return false;
-+
-+        if (bOldSyntaxWorkAround && aEndCell.getStr()[0] == '.')
-+        {
-+            // workaround for old syntax (probably pre-chart2 age?)
-+            // e.g. Sheet1.A1:.B2
-+            sal_Int32 nDotPos = ScRangeStringConverter::IndexOf(aBeginCell, sal_Unicode('.'), 0, cQuote);
-+            rtl::OUString aTabName = aBeginCell.copy(0, nDotPos);
-+            aEndCell = aTabName + aEndCell;
-+        }
-+        USHORT nRes = rRange.aStart.Parse(aBeginCell, pDoc, eConv);
-+        if ((nRes & SCA_VALID) != SCA_VALID)
-+            return false;
-+
-+        nRes = rRange.aEnd.Parse(aEndCell, pDoc, eConv);
-+        if ((nRes & SCA_VALID) != SCA_VALID)
-+            return false;
-+    }
-+    else
-+    {
-+        USHORT nRes = rRange.aStart.Parse(rToken, pDoc, eConv);
-+        if ((nRes & SCA_VALID) != SCA_VALID)
-+            return false;
-+
-+        rRange.aEnd = rRange.aStart;
-+    }
-+    return true;
-+}
-+
- rtl::OUString SAL_CALL ScChart2DataProvider::convertRangeFromXML( const rtl::OUString& sXMLRange )
-     throw ( uno::RuntimeException, lang::IllegalArgumentException )
- {
--    // #i74062# When loading flat XML, this is called before the referenced sheets are in the document,
--    // so the conversion has to take place directly with the strings, without looking up the sheets.
--
++    FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention();
++    const OUString aRangeSep = GetScCompilerNativeSymbol(ocSep);
      const sal_Unicode cSep = ' ';
      const sal_Unicode cQuote = '\'';
  
-+    if (m_pDocument)
-+    {
-+        ::formula::FormulaGrammar::AddressConvention eConvUI = m_pDocument->GetAddressConvention();
-+        ScRange aRange;
-+
-+        rtl::OUString aRetStr;
-+        sal_Int32 nOffset = 0;
-+        bool bFirst = true;
-+
-+        while (nOffset >= 0)
-+        {
-+            rtl::OUString aToken;
-+            ScRangeStringConverter::GetTokenByOffset(aToken, sXMLRange, nOffset, cSep, cQuote);
-+            if (nOffset < 0)
-+                // No more tokens to process.
-+                break;
-+
-+            // Chart always saves ranges using CONV_OOO convention.
-+            bool bSuccess = lcl_parseSingleRangeToken(aRange, aToken, m_pDocument, ::formula::FormulaGrammar::CONV_OOO, cQuote, true);
+@@ -903,13 +926,37 @@ void ScRangeStringConverter::GetStringFromXMLRangeString( OUString& rString, con
+             rtl::OUString aBuf;
+             USHORT nRet = aCell1.Parse(aBeginCell, pDoc, FormulaGrammar::CONV_OOO, &aExtInfo1);
+             if ((nRet & SCA_VALID) != SCA_VALID)
++            {    
+                 // first cell is invalid.
++#if CHART_ADDRESS_CONV_WORKAROUND
++                if (eConv == FormulaGrammar::CONV_OOO)
++                    continue;
 +
-+            if (bSuccess)
-+            {
-+                String aNewToken;
-+                aRange.Format(aNewToken, SCA_ABS_3D, m_pDocument, ::formula::FormulaGrammar::CONV_OOO);
-+                if (bFirst)
-+                    bFirst = false;
-+                else
-+                    aRetStr += rtl::OUString::createFromAscii(";");
-+                aRetStr += aNewToken;
-+                continue;
++                nRet = aCell1.Parse(aBeginCell, pDoc, eConv, &aExtInfo1);
++                if ((nRet & SCA_VALID) != SCA_VALID)
++                    // first cell is really invalid.
++                    continue;
++#else
+                 continue;
++#endif
 +            }
-+
-+            if (eConvUI == ::formula::FormulaGrammar::CONV_OOO)
-+                // convertion failed !
-+                continue;
-+
+ 
+             nRet = aCell2.Parse(aEndCell, pDoc, FormulaGrammar::CONV_OOO, &aExtInfo2);
+             if ((nRet & SCA_VALID) != SCA_VALID)
++            {    
+                 // second cell is invalid.
 +#if CHART_ADDRESS_CONV_WORKAROUND
-+            // Chart always expressed a range as [start cell] : [end cell]
-+            // regardless of address conventions when stored in ODF.  This means,
-+            // for example, Sheet1!A1:A3 in Excel A1 syntax was expressed as
-+            // Sheet1!A1:Sheet1!A3.
-+            bSuccess = lcl_parseSingleRangeToken(aRange, aToken, m_pDocument, eConvUI, cQuote, false);
-+            if (!bSuccess)
-+                continue;
++                if (eConv == FormulaGrammar::CONV_OOO)
++                    continue;
 +
-+            String aNewToken;
-+            aRange.Format(aNewToken, SCA_ABS_3D, m_pDocument, ::formula::FormulaGrammar::CONV_OOO);
-+            if (bFirst)
-+                bFirst = false;
-+            else
-+                aRetStr += rtl::OUString::createFromAscii(";");
-+            aRetStr += aNewToken;
++                nRet = aCell2.Parse(aEndCell, pDoc, eConv, &aExtInfo2);
++                if ((nRet & SCA_VALID) != SCA_VALID)
++                    // second cell is really invalid.
++                    continue;
++#else
+                 continue;
 +#endif
-+        }
-+        return aRetStr;
-+    }
-+
-+    // #i74062# When loading flat XML, this is called before the referenced sheets are in the document,
-+    // so the conversion has to take place directly with the strings, without looking up the sheets.
-+
-     rtl::OUStringBuffer sRet;
-     sal_Int32 nOffset = 0;
-     while( nOffset >= 0 )
-diff --git sc/source/ui/unoobj/docuno.cxx sc/source/ui/unoobj/docuno.cxx
-index 20fa9a3..58540df 100644
---- sc/source/ui/unoobj/docuno.cxx
-+++ sc/source/ui/unoobj/docuno.cxx
-@@ -2224,7 +2224,8 @@ uno::Sequence < uno::Reference< table::XCellRange > > SAL_CALL ScTableSheetsObj:
-     uno::Sequence < uno::Reference < table::XCellRange > > xRet;
++            }
  
- 	ScRangeList aRangeList;
--    if (ScRangeStringConverter::GetRangeListFromString( aRangeList, aRange, pDocShell->GetDocument(), ';' ))
-+    ScDocument* pDoc = pDocShell->GetDocument();
-+    if (ScRangeStringConverter::GetRangeListFromString( aRangeList, aRange, pDoc, ::formula::FormulaGrammar::CONV_OOO, ';' ))
-     {
- 	    sal_Int32 nCount = aRangeList.Count();
-         if (nCount)
-diff --git sc/source/ui/view/tabview3.cxx sc/source/ui/view/tabview3.cxx
-index dc18acd..cd722eb 100644
---- sc/source/ui/view/tabview3.cxx
-+++ sc/source/ui/view/tabview3.cxx
-@@ -2240,8 +2240,9 @@ void ScTabView::DoChartSelection(
-     {
-         Color aSelColor( rHilightRanges[i].PreferredColor );
-         ScRangeList aRangeList;
-+        ScDocument* pDoc = aViewData.GetDocShell()->GetDocument();
-         if( ScRangeStringConverter::GetRangeListFromString(
--                aRangeList, rHilightRanges[i].RangeRepresentation, aViewData.GetDocShell()->GetDocument(), ';' ))
-+                aRangeList, rHilightRanges[i].RangeRepresentation, pDoc, pDoc->GetAddressConvention(), ';' ))
-         {
-             for ( ScRangePtr p = aRangeList.First(); p; p = aRangeList.Next())
-             {
+             if (aExtInfo1.mnFileId != aExtInfo2.mnFileId || aExtInfo1.mbExternal != aExtInfo2.mbExternal)
+                 // external info inconsistency.
+@@ -920,7 +967,7 @@ void ScRangeStringConverter::GetStringFromXMLRangeString( OUString& rString, con
+             if (bFirst)
+                 bFirst = false;
+             else
+-                aRetStr.appendAscii(";");
++                aRetStr.append(aRangeSep);
+ 
+             lcl_appendCellRangeAddress(aRetStr, pDoc, aCell1, aCell2, aExtInfo1, aExtInfo2);
+         }
+@@ -931,14 +978,22 @@ void ScRangeStringConverter::GetStringFromXMLRangeString( OUString& rString, con
+             ScAddress aCell;
+             USHORT nRet = aCell.Parse(aToken, pDoc, ::formula::FormulaGrammar::CONV_OOO, &aExtInfo);
+             if ((nRet & SCA_VALID) != SCA_VALID)
++            {
++#if CHART_ADDRESS_CONV_WORKAROUND
++                nRet = aCell.Parse(aToken, pDoc, eConv, &aExtInfo);
++                if ((nRet & SCA_VALID) != SCA_VALID)
++                    continue;
++#else
+                 continue;
++#endif
++            }
+ 
+             // Looks good!
+ 
+             if (bFirst)
+                 bFirst = false;
+             else
+-                aRetStr.appendAscii(";");
++                aRetStr.appendAscii(aRangeSep);
+ 
+             lcl_appendCellAddress(aRetStr, pDoc, aCell, aExtInfo);
+         }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]