diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2012-06-06 05:41:42 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2012-06-11 08:01:25 +0200 |
commit | c41ee0d526c6d105d53cace1c81e43a9cc519c2d (patch) | |
tree | 7b0e4b2c41ed5dfdd9108664cbae7096ed1fbb5d /sc | |
parent | 306f586453aa90eb29ae95770f84a13ead056b7c (diff) |
fix cond format import from ods
Change-Id: I974c46fad862edd320b54d4c7e72807dd715dfb1
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/filter/xml/XMLConverter.cxx | 32 | ||||
-rw-r--r-- | sc/source/filter/xml/XMLConverter.hxx | 2 | ||||
-rw-r--r-- | sc/source/filter/xml/xmlcondformat.cxx | 131 | ||||
-rw-r--r-- | sc/source/filter/xml/xmlcondformat.hxx | 9 | ||||
-rw-r--r-- | sc/source/filter/xml/xmlexprt.cxx | 27 | ||||
-rw-r--r-- | sc/source/filter/xml/xmlimprt.cxx | 24 | ||||
-rw-r--r-- | sc/source/filter/xml/xmlimprt.hxx | 16 | ||||
-rw-r--r-- | sc/source/filter/xml/xmlstyli.cxx | 2 |
8 files changed, 209 insertions, 34 deletions
diff --git a/sc/source/filter/xml/XMLConverter.cxx b/sc/source/filter/xml/XMLConverter.cxx index aa67e5502b2a..b475c174e694 100644 --- a/sc/source/filter/xml/XMLConverter.cxx +++ b/sc/source/filter/xml/XMLConverter.cxx @@ -546,19 +546,6 @@ void lclSkipExpression( const sal_Unicode*& rpcString, const sal_Unicode* pcEnd, @param cEndChar The termination character following the expression. */ -OUString lclGetExpression( const sal_Unicode*& rpcString, const sal_Unicode* pcEnd, sal_Unicode cEndChar ) -{ - OUString aExp; - const sal_Unicode* pcExpStart = rpcString; - lclSkipExpression( rpcString, pcEnd, cEndChar ); - if( rpcString < pcEnd ) - { - aExp = OUString( pcExpStart, static_cast< sal_Int32 >( rpcString - pcExpStart ) ).trim(); - ++rpcString; - } - return aExp; -} - /** Tries to skip an empty pair of parentheses (which may contain whitespace characters). @@ -634,7 +621,7 @@ void ScXMLConditionHelper::parseCondition( // format is <condition>(<expression>) if( (pcString < pcEnd) && (*pcString == '(') ) { - rParseResult.maOperand1 = lclGetExpression( ++pcString, pcEnd, ')' ); + rParseResult.maOperand1 = getExpression( ++pcString, pcEnd, ')' ); if( !rParseResult.maOperand1.isEmpty() ) rParseResult.meToken = pCondInfo->meToken; } @@ -644,10 +631,10 @@ void ScXMLConditionHelper::parseCondition( // format is <condition>(<expression1>,<expression2>) if( (pcString < pcEnd) && (*pcString == '(') ) { - rParseResult.maOperand1 = lclGetExpression( ++pcString, pcEnd, ',' ); + rParseResult.maOperand1 = getExpression( ++pcString, pcEnd, ',' ); if( !rParseResult.maOperand1.isEmpty() ) { - rParseResult.maOperand2 = lclGetExpression( pcString, pcEnd, ')' ); + rParseResult.maOperand2 = getExpression( pcString, pcEnd, ')' ); if( !rParseResult.maOperand2.isEmpty() ) rParseResult.meToken = pCondInfo->meToken; } @@ -658,6 +645,19 @@ void ScXMLConditionHelper::parseCondition( } } +OUString ScXMLConditionHelper::getExpression( const sal_Unicode*& rpcString, const sal_Unicode* pcEnd, sal_Unicode cEndChar ) +{ + OUString aExp; + const sal_Unicode* pcExpStart = rpcString; + lclSkipExpression( rpcString, pcEnd, cEndChar ); + if( rpcString < pcEnd ) + { + aExp = OUString( pcExpStart, static_cast< sal_Int32 >( rpcString - pcExpStart ) ).trim(); + ++rpcString; + } + return aExp; +} + // ============================================================================ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/xml/XMLConverter.hxx b/sc/source/filter/xml/XMLConverter.hxx index 995e3e86e91a..2a07969d2d0a 100644 --- a/sc/source/filter/xml/XMLConverter.hxx +++ b/sc/source/filter/xml/XMLConverter.hxx @@ -164,6 +164,8 @@ public: const ::rtl::OUString& rAttribute, sal_Int32 nStartIndex ); + static rtl::OUString getExpression(const sal_Unicode*& rpcString, const sal_Unicode* pcEnd, sal_Unicode cEndChar ); + private: ScXMLConditionHelper(); ~ScXMLConditionHelper(); diff --git a/sc/source/filter/xml/xmlcondformat.cxx b/sc/source/filter/xml/xmlcondformat.cxx index 673ee00b9597..6aa55ccd5028 100644 --- a/sc/source/filter/xml/xmlcondformat.cxx +++ b/sc/source/filter/xml/xmlcondformat.cxx @@ -41,12 +41,14 @@ #include "scitems.hxx" #include "patattr.hxx" #include "svl/intitem.hxx" +#include "XMLConverter.hxx" ScXMLConditionalFormatsContext::ScXMLConditionalFormatsContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName): SvXMLImportContext( rImport, nPrfx, rLName ) { + GetScImport().SetNewCondFormatData(); GetScImport().GetDocument()->SetCondFormList(new ScConditionalFormatList(), GetScImport().GetTables().GetCurrentSheet()); } @@ -115,6 +117,9 @@ SvXMLImportContext* ScXMLConditionalFormatContext::CreateChildContext( sal_uInt1 SvXMLImportContext* pContext = NULL; switch (nToken) { + case XML_TOK_CONDFORMAT_CONDITION: + pContext = new ScXMLCondContext( GetScImport(), nPrefix, rLocalName, xAttrList, mpFormat ); + break; case XML_TOK_CONDFORMAT_COLORSCALE: pContext = new ScXMLColorScaleFormatContext( GetScImport(), nPrefix, rLocalName, mpFormat ); break; @@ -284,6 +289,132 @@ void ScXMLDataBarFormatContext::EndElement() namespace { +void GetConditionData(const rtl::OUString& rValue, ScConditionMode& eMode, rtl::OUString& rExpr1, rtl::OUString& rExpr2) +{ + if(rValue.indexOf("unique") == 0) + { + eMode = SC_COND_NOTDUPLICATE; + } + else if(rValue.indexOf("duplicate") == 0) + { + eMode = SC_COND_DUPLICATE; + } + else if(rValue.indexOf("between") == 0) + { + const sal_Unicode* pStr = rValue.getStr(); + const sal_Unicode* pStart = pStr + 7; + const sal_Unicode* pEnd = pStr + rValue.getLength(); + rExpr1 = ScXMLConditionHelper::getExpression( pStart, pEnd, ','); + rExpr2 = ScXMLConditionHelper::getExpression( pStart, pEnd, ')'); + eMode = SC_COND_BETWEEN; + } + else if(rValue.indexOf("not-between") == 0) + { + const sal_Unicode* pStr = rValue.getStr(); + const sal_Unicode* pStart = pStr + 12; + const sal_Unicode* pEnd = pStr + rValue.getLength(); + rExpr1 = ScXMLConditionHelper::getExpression( pStart, pEnd, ','); + rExpr2 = ScXMLConditionHelper::getExpression( pStart, pEnd, ')'); + eMode = SC_COND_NOTBETWEEN; + } + else if(rValue.indexOf("<=") == 0) + { + rExpr1 = rValue.copy(2); + eMode = SC_COND_EQLESS; + } + else if(rValue.indexOf(">=") == 0) + { + rExpr1 = rValue.copy(2); + eMode = SC_COND_EQGREATER; + } + else if(rValue.indexOf("!=") == 0) + { + rExpr1 = rValue.copy(2); + eMode = SC_COND_NOTEQUAL; + } + else if(rValue.indexOf("<") == 0) + { + rExpr1 = rValue.copy(1); + eMode = SC_COND_LESS; + } + else if(rValue.indexOf("=") == 0) + { + rExpr1 = rValue.copy(1); + eMode = SC_COND_EQUAL; + } + else if(rValue.indexOf(">") == 0) + { + rExpr1 = rValue.copy(1); + eMode = SC_COND_GREATER; + } + else if(rValue.indexOf("formula-is") == 0) + { + const sal_Unicode* pStr = rValue.getStr(); + const sal_Unicode* pStart = pStr + 11; + const sal_Unicode* pEnd = pStr + rValue.getLength(); + rExpr1 = ScXMLConditionHelper::getExpression( pStart, pEnd, ','); + eMode = SC_COND_DIRECT; + } + else + eMode = SC_COND_NONE; +} + +} + +ScXMLCondContext::ScXMLCondContext( ScXMLImport& rImport, sal_uInt16 nPrfx, + const ::rtl::OUString& rLName, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList>& xAttrList, + ScConditionalFormat* pFormat ): + SvXMLImportContext( rImport, nPrfx, rLName ) +{ + rtl::OUString sExpression; + rtl::OUString sStyle; + rtl::OUString sAddress; + + sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0); + const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetConditionAttrMap(); + for( sal_Int16 i=0; i < nAttrCount; ++i ) + { + const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i )); + rtl::OUString aLocalName; + sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName( + sAttrName, &aLocalName )); + const rtl::OUString& sValue(xAttrList->getValueByIndex( i )); + + switch( rAttrTokenMap.Get( nPrefix, aLocalName ) ) + { + case XML_TOK_CONDITION_VALUE: + sExpression = sValue; + break; + case XML_TOK_CONDITION_APPLY_STYLE_NAME: + sStyle = sValue; + case XML_TOK_CONDITION_BASE_CELL_ADDRESS: + sAddress = sValue; + default: + break; + } + } + + rtl::OUString aExpr1; + rtl::OUString aExpr2; + ScConditionMode eMode; + GetConditionData(sExpression, eMode, aExpr1, aExpr2); + ScAddress aPos; + sal_Int32 nIndex = 0; + ScRangeStringConverter::GetAddressFromString(aPos, sAddress, GetScImport().GetDocument(), formula::FormulaGrammar::CONV_ODF, nIndex); + + ScCondFormatEntry* pFormatEntry = new ScCondFormatEntry(eMode, aExpr1, aExpr2, GetScImport().GetDocument(), aPos, sStyle, + rtl::OUString(), rtl::OUString(), formula::FormulaGrammar::GRAM_ODFF, formula::FormulaGrammar::GRAM_ODFF); + + pFormat->AddEntry(pFormatEntry); +} + +void ScXMLCondContext::EndElement() +{ + +} + +namespace { + void setColorEntryType(const rtl::OUString& rType, ScColorScaleEntry* pEntry, const rtl::OUString rFormula, ScXMLImport& rImport) { diff --git a/sc/source/filter/xml/xmlcondformat.hxx b/sc/source/filter/xml/xmlcondformat.hxx index 80926ccb3b37..8d84a15f574a 100644 --- a/sc/source/filter/xml/xmlcondformat.hxx +++ b/sc/source/filter/xml/xmlcondformat.hxx @@ -169,17 +169,18 @@ public: virtual void EndElement(); }; -class ScXMLConditionContext : public SvXMLImportContext +class ScXMLCondContext : public SvXMLImportContext { const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } public: - ScXMLConditionContext( ScXMLImport& rImport, sal_uInt16 nPrfx, + ScXMLCondContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName, const ::com::sun::star::uno::Reference< - ::com::sun::star::xml::sax::XAttributeList>& xAttrList); + ::com::sun::star::xml::sax::XAttributeList>& xAttrList, + ScConditionalFormat* pFormat); - virtual ~ScXMLConditionContext() {} + virtual ~ScXMLCondContext() {} virtual void EndElement(); }; diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx index 71caee8acadc..bb4d6fc863ed 100644 --- a/sc/source/filter/xml/xmlexprt.cxx +++ b/sc/source/filter/xml/xmlexprt.cxx @@ -3842,44 +3842,45 @@ void ScXMLExport::ExportConditionalFormat(SCTAB nTab) { const ScCondFormatEntry* pEntry = static_cast<const ScCondFormatEntry*>(pFormatEntry); rtl::OUStringBuffer aCond; + ScAddress aPos = pEntry->GetSrcPos(); switch(pEntry->GetOperation()) { case SC_COND_EQUAL: aCond.append('='); - aCond.append(pEntry->GetExpression(pEntry->GetSrcPos(), 0, 0, formula::FormulaGrammar::GRAM_ODFF)); + aCond.append(pEntry->GetExpression(aPos, 0, 0, formula::FormulaGrammar::GRAM_ODFF)); break; case SC_COND_LESS: aCond.append('<'); - aCond.append(pEntry->GetExpression(pEntry->GetSrcPos(), 0, 0, formula::FormulaGrammar::GRAM_ODFF)); + aCond.append(pEntry->GetExpression(aPos, 0, 0, formula::FormulaGrammar::GRAM_ODFF)); break; case SC_COND_GREATER: aCond.append('>'); - aCond.append(pEntry->GetExpression(pEntry->GetSrcPos(), 0, 0, formula::FormulaGrammar::GRAM_ODFF)); + aCond.append(pEntry->GetExpression(aPos, 0, 0, formula::FormulaGrammar::GRAM_ODFF)); break; case SC_COND_EQLESS: aCond.append("<="); - aCond.append(pEntry->GetExpression(pEntry->GetSrcPos(), 0, 0, formula::FormulaGrammar::GRAM_ODFF)); + aCond.append(pEntry->GetExpression(aPos, 0, 0, formula::FormulaGrammar::GRAM_ODFF)); break; case SC_COND_EQGREATER: aCond.append(">="); - aCond.append(pEntry->GetExpression(pEntry->GetSrcPos(), 0, 0, formula::FormulaGrammar::GRAM_ODFF)); + aCond.append(pEntry->GetExpression(aPos, 0, 0, formula::FormulaGrammar::GRAM_ODFF)); break; case SC_COND_NOTEQUAL: aCond.append("!="); - aCond.append(pEntry->GetExpression(pEntry->GetSrcPos(), 0, 0, formula::FormulaGrammar::GRAM_ODFF)); + aCond.append(pEntry->GetExpression(aPos, 0, 0, formula::FormulaGrammar::GRAM_ODFF)); break; case SC_COND_BETWEEN: aCond.append(rtl::OUString("between(")); - aCond.append(pEntry->GetExpression(pEntry->GetSrcPos(), 0, 0, formula::FormulaGrammar::GRAM_ODFF)); + aCond.append(pEntry->GetExpression(aPos, 0, 0, formula::FormulaGrammar::GRAM_ODFF)); aCond.append(','); - aCond.append(pEntry->GetExpression(pEntry->GetSrcPos(), 1, 0, formula::FormulaGrammar::GRAM_ODFF)); + aCond.append(pEntry->GetExpression(aPos, 1, 0, formula::FormulaGrammar::GRAM_ODFF)); aCond.append(')'); break; case SC_COND_NOTBETWEEN: aCond.append(rtl::OUString("not-between(")); - aCond.append(pEntry->GetExpression(pEntry->GetSrcPos(), 0, 0, formula::FormulaGrammar::GRAM_ODFF)); + aCond.append(pEntry->GetExpression(aPos, 0, 0, formula::FormulaGrammar::GRAM_ODFF)); aCond.append(','); - aCond.append(pEntry->GetExpression(pEntry->GetSrcPos(), 1, 0, formula::FormulaGrammar::GRAM_ODFF)); + aCond.append(pEntry->GetExpression(aPos, 1, 0, formula::FormulaGrammar::GRAM_ODFF)); aCond.append(')'); break; case SC_COND_DUPLICATE: @@ -3890,7 +3891,7 @@ void ScXMLExport::ExportConditionalFormat(SCTAB nTab) break; case SC_COND_DIRECT: aCond.append("formula-is("); - aCond.append(pEntry->GetExpression(pEntry->GetSrcPos(), 0, 0, formula::FormulaGrammar::GRAM_ODFF)); + aCond.append(pEntry->GetExpression(aPos, 0, 0, formula::FormulaGrammar::GRAM_ODFF)); aCond.append(')'); break; case SC_COND_NONE: @@ -3899,6 +3900,10 @@ void ScXMLExport::ExportConditionalFormat(SCTAB nTab) rtl::OUString sStyle = pEntry->GetStyle(); AddAttribute(XML_NAMESPACE_CALC_EXT, XML_APPLY_STYLE_NAME, sStyle); AddAttribute(XML_NAMESPACE_CALC_EXT, XML_VALUE, aCond.makeStringAndClear()); + + rtl::OUString sBaseAddress; + ScRangeStringConverter::GetStringFromAddress( sBaseAddress, aPos, pDoc,formula::FormulaGrammar::CONV_ODF ); + AddAttribute(XML_NAMESPACE_CALC_EXT, XML_BASE_CELL_ADDRESS, sBaseAddress); SvXMLElementExport aElementCondEntry(*this, XML_NAMESPACE_CALC_EXT, XML_CONDITION, true, true); } else if(pFormatEntry->GetType() == condformat::COLORSCALE) diff --git a/sc/source/filter/xml/xmlimprt.cxx b/sc/source/filter/xml/xmlimprt.cxx index 219345d3d350..5d1d99a9376f 100644 --- a/sc/source/filter/xml/xmlimprt.cxx +++ b/sc/source/filter/xml/xmlimprt.cxx @@ -618,6 +618,7 @@ const SvXMLTokenMap& ScXMLImport::GetCondFormatTokenMap() { { XML_NAMESPACE_CALC_EXT, XML_COLOR_SCALE, XML_TOK_CONDFORMAT_COLORSCALE }, { XML_NAMESPACE_CALC_EXT, XML_DATA_BAR, XML_TOK_CONDFORMAT_DATABAR }, + { XML_NAMESPACE_CALC_EXT, XML_CONDITION, XML_TOK_CONDFORMAT_CONDITION }, XML_TOKEN_MAP_END }; @@ -643,6 +644,24 @@ const SvXMLTokenMap& ScXMLImport::GetCondFormatAttrMap() return *pCondFormatAttrMap; } +const SvXMLTokenMap& ScXMLImport::GetConditionAttrMap() +{ + if( !pConditionAttrMap ) + { + static SvXMLTokenMapEntry aConditionAttrTokenMap[] = + { + { XML_NAMESPACE_CALC_EXT, XML_VALUE, XML_TOK_CONDITION_VALUE }, + { XML_NAMESPACE_CALC_EXT, XML_APPLY_STYLE_NAME, XML_TOK_CONDITION_APPLY_STYLE_NAME }, + { XML_NAMESPACE_CALC_EXT, XML_BASE_CELL_ADDRESS, XML_TOK_CONDITION_BASE_CELL_ADDRESS }, + XML_TOKEN_MAP_END + }; + + pConditionAttrMap = new SvXMLTokenMap( aConditionAttrTokenMap ); + } + + return *pConditionAttrMap; +} + const SvXMLTokenMap& ScXMLImport::GetColorScaleTokenMap() { if( !pColorScaleTokenMap ) @@ -1853,6 +1872,7 @@ ScXMLImport::ScXMLImport( pCondFormatsTokenMap( 0 ), pCondFormatTokenMap( 0 ), pCondFormatAttrMap( 0 ), + pConditionAttrMap( 0 ), pColorScaleTokenMap( 0 ), pColorScaleEntryAttrTokenMap( 0 ), pDataBarTokenMap( 0 ), @@ -1934,7 +1954,8 @@ ScXMLImport::ScXMLImport( bNullDateSetted(false), bSelfImportingXMLSet(false), bLatinDefaultStyle(false), - bFromWrapper(false) + bFromWrapper(false), + mbHasNewCondFormatData(false) { pStylesImportHelper = new ScMyStylesImportHelper(*this); @@ -1988,6 +2009,7 @@ ScXMLImport::~ScXMLImport() throw() delete pCondFormatsTokenMap; delete pCondFormatTokenMap; delete pCondFormatAttrMap; + delete pConditionAttrMap; delete pColorScaleTokenMap; delete pColorScaleEntryAttrTokenMap; delete pDataBarTokenMap; diff --git a/sc/source/filter/xml/xmlimprt.hxx b/sc/source/filter/xml/xmlimprt.hxx index b94752f21e84..541987b59c8a 100644 --- a/sc/source/filter/xml/xmlimprt.hxx +++ b/sc/source/filter/xml/xmlimprt.hxx @@ -159,7 +159,8 @@ enum ScXMLCondFormatsTokens enum ScXMLCondFormatTokens { XML_TOK_CONDFORMAT_COLORSCALE, - XML_TOK_CONDFORMAT_DATABAR + XML_TOK_CONDFORMAT_DATABAR, + XML_TOK_CONDFORMAT_CONDITION }; enum ScXMLCondFormatAttrTokens @@ -167,6 +168,13 @@ enum ScXMLCondFormatAttrTokens XML_TOK_CONDFORMAT_TARGET_RANGE }; +enum ScXMLConditionAttrTokens +{ + XML_TOK_CONDITION_VALUE, + XML_TOK_CONDITION_APPLY_STYLE_NAME, + XML_TOK_CONDITION_BASE_CELL_ADDRESS +}; + enum ScXMLColorScaleFormatTokens { XML_TOK_COLORSCALE_COLORSCALEENTRY @@ -769,6 +777,7 @@ class ScXMLImport: public SvXMLImport SvXMLTokenMap *pCondFormatsTokenMap; SvXMLTokenMap *pCondFormatTokenMap; SvXMLTokenMap *pCondFormatAttrMap; + SvXMLTokenMap *pConditionAttrMap; SvXMLTokenMap *pColorScaleTokenMap; SvXMLTokenMap *pColorScaleEntryAttrTokenMap; SvXMLTokenMap *pDataBarTokenMap; @@ -863,6 +872,7 @@ class ScXMLImport: public SvXMLImport bool bSelfImportingXMLSet; bool bLatinDefaultStyle; // latin-only number format in default style? bool bFromWrapper; // called from ScDocShell / ScXMLImportWrapper? + bool mbHasNewCondFormatData; protected: @@ -930,6 +940,7 @@ public: const SvXMLTokenMap& GetCondFormatsTokenMap(); const SvXMLTokenMap& GetCondFormatTokenMap(); const SvXMLTokenMap& GetCondFormatAttrMap(); + const SvXMLTokenMap& GetConditionAttrMap(); const SvXMLTokenMap& GetColorScaleTokenMap(); const SvXMLTokenMap& GetColorScaleEntryAttrMap(); const SvXMLTokenMap& GetDataBarTokenMap(); @@ -1044,6 +1055,9 @@ public: void ProgressBarIncrement(bool bEditCell, sal_Int32 nInc = 1); + void SetNewCondFormatData() { mbHasNewCondFormatData = true; } + bool HasNewCondFormatData() { return mbHasNewCondFormatData; } + private: void AddStyleRange(const com::sun::star::table::CellRangeAddress& rCellRange); void SetStyleToRanges(); diff --git a/sc/source/filter/xml/xmlstyli.cxx b/sc/source/filter/xml/xmlstyli.cxx index 45e82c5028db..460f642c93a8 100644 --- a/sc/source/filter/xml/xmlstyli.cxx +++ b/sc/source/filter/xml/xmlstyli.cxx @@ -521,7 +521,7 @@ void XMLTableStyleContext::FillPropertySet( sal_Int32 nNumFmt = GetNumberFormat(); if (nNumFmt >= 0) AddProperty(CTF_SC_NUMBERFORMAT, uno::makeAny(nNumFmt)); - if (!bConditionalFormatCreated && (aMaps.size() > 0)) + if (!GetScImport().HasNewCondFormatData() && !bConditionalFormatCreated && (!aMaps.empty())) { aConditionalFormat = rPropSet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_CONDXML))); std::vector<ScXMLMapContent>::iterator aItr(aMaps.begin()); |