summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2012-11-24 15:51:09 +0100
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2012-11-24 15:56:56 +0100
commitd1def6b029ad941d0b2cbecd8f682ae0d33ddd79 (patch)
treea5bcadfb7311fcad2fc541f6c84b9d41b04fb59d
parent5c522cf5836b7263981a8f9de38af54c64ef873a (diff)
don't make 2D refs 3D refs in the cond format import, fdo#36379
Change-Id: I1c190e29ab26fab7e3ae109ea3135d7654a7cb9a
-rw-r--r--sc/source/filter/excel/excform8.cxx18
-rw-r--r--sc/source/filter/excel/xicontent.cxx4
-rw-r--r--sc/source/filter/inc/formel.hxx3
3 files changed, 14 insertions, 11 deletions
diff --git a/sc/source/filter/excel/excform8.cxx b/sc/source/filter/excel/excform8.cxx
index 35cb3a89d71e..95b4d37f3f9b 100644
--- a/sc/source/filter/excel/excform8.cxx
+++ b/sc/source/filter/excel/excform8.cxx
@@ -158,7 +158,8 @@ ConvErr ExcelToSc8::Convert( const ScTokenArray*& rpTokArray, XclImpStream& aIn,
sal_Bool bError = false;
sal_Bool bArrayFormula = false;
TokenId nMerk0;
- const bool bRangeName = eFT == FT_RangeName;
+ const bool bCondFormat = eFT == FT_CondFormat;
+ const bool bRangeName = eFT == FT_RangeName || bCondFormat;
const bool bSharedFormula = eFT == FT_SharedFormula;
const bool bRNorSF = bRangeName || bSharedFormula;
@@ -510,7 +511,7 @@ ConvErr ExcelToSc8::Convert( const ScTokenArray*& rpTokArray, XclImpStream& aIn,
aSRD.nRow = nRow & 0x3FFF;
aSRD.nRelTab = 0;
aSRD.SetTabRel( sal_True );
- aSRD.SetFlag3D( bRangeName );
+ aSRD.SetFlag3D( bRangeName && !bCondFormat );
ExcRelToScRel8( nRow, nCol, aSRD, bRangeName );
@@ -544,8 +545,8 @@ ConvErr ExcelToSc8::Convert( const ScTokenArray*& rpTokArray, XclImpStream& aIn,
rSRef1.nRelTab = rSRef2.nRelTab = 0;
rSRef1.SetTabRel( sal_True );
rSRef2.SetTabRel( sal_True );
- rSRef1.SetFlag3D( bRangeName );
- rSRef2.SetFlag3D( bRangeName );
+ rSRef1.SetFlag3D( bRangeName && !bCondFormat );
+ rSRef2.SetFlag3D( bRangeName && !bCondFormat );
ExcRelToScRel8( nRowFirst, nColFirst, aCRD.Ref1, bRangeName );
ExcRelToScRel8( nRowLast, nColLast, aCRD.Ref2, bRangeName );
@@ -945,7 +946,8 @@ ConvErr ExcelToSc8::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sa
{
sal_uInt8 nOp, nLen;
sal_Bool bError = false;
- const bool bRangeName = eFT == FT_RangeName;
+ const bool bCondFormat = eFT == FT_CondFormat;
+ const bool bRangeName = eFT == FT_RangeName || bCondFormat;
const bool bSharedFormula = eFT == FT_SharedFormula;
const bool bRNorSF = bRangeName || bSharedFormula;
@@ -1065,7 +1067,7 @@ ConvErr ExcelToSc8::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sa
aSRD.nRow = nRow & 0x3FFF;
aSRD.nRelTab = 0;
aSRD.SetTabRel( sal_True );
- aSRD.SetFlag3D( bRangeName );
+ aSRD.SetFlag3D( bRangeName && !bCondFormat );
ExcRelToScRel8( nRow, nCol, aSRD, bRangeName );
@@ -1086,8 +1088,8 @@ ConvErr ExcelToSc8::Convert( _ScRangeListTabs& rRangeList, XclImpStream& aIn, sa
rSRef1.nRelTab = rSRef2.nRelTab = 0;
rSRef1.SetTabRel( sal_True );
rSRef2.SetTabRel( sal_True );
- rSRef1.SetFlag3D( bRangeName );
- rSRef2.SetFlag3D( bRangeName );
+ rSRef1.SetFlag3D( bRangeName && !bCondFormat );
+ rSRef2.SetFlag3D( bRangeName && !bCondFormat );
ExcRelToScRel8( nRowFirst, nColFirst, aCRD.Ref1, bRangeName );
ExcRelToScRel8( nRowLast, nColLast, aCRD.Ref2, bRangeName );
diff --git a/sc/source/filter/excel/xicontent.cxx b/sc/source/filter/excel/xicontent.cxx
index edd47173f524..33cac5ad8db1 100644
--- a/sc/source/filter/excel/xicontent.cxx
+++ b/sc/source/filter/excel/xicontent.cxx
@@ -611,7 +611,7 @@ void XclImpCondFormat::ReadCF( XclImpStream& rStrm )
{
const ScTokenArray* pTokArr = 0;
rFmlaConv.Reset( rPos );
- rFmlaConv.Convert( pTokArr, rStrm, nFmlaSize1, false, FT_RangeName );
+ rFmlaConv.Convert( pTokArr, rStrm, nFmlaSize1, false, FT_CondFormat );
// formula converter owns pTokArr -> create a copy of the token array
if( pTokArr )
xTokArr1.reset( pTokArr->Clone() );
@@ -624,7 +624,7 @@ void XclImpCondFormat::ReadCF( XclImpStream& rStrm )
{
const ScTokenArray* pTokArr = 0;
rFmlaConv.Reset( rPos );
- rFmlaConv.Convert( pTokArr, rStrm, nFmlaSize2, false, FT_RangeName );
+ rFmlaConv.Convert( pTokArr, rStrm, nFmlaSize2, false, FT_CondFormat );
// formula converter owns pTokArr -> create a copy of the token array
if( pTokArr )
pTokArr2.reset( pTokArr->Clone() );
diff --git a/sc/source/filter/inc/formel.hxx b/sc/source/filter/inc/formel.hxx
index 04fc46a64270..418fe14bb2b1 100644
--- a/sc/source/filter/inc/formel.hxx
+++ b/sc/source/filter/inc/formel.hxx
@@ -58,7 +58,8 @@ enum FORMULA_TYPE
{
FT_CellFormula,
FT_RangeName,
- FT_SharedFormula
+ FT_SharedFormula,
+ FT_CondFormat
};
class _ScRangeListTabs