diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2012-06-03 08:08:24 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2012-06-11 08:01:24 +0200 |
commit | 2f4ff04f7178226901377709bb6f851dfa103109 (patch) | |
tree | 8962e9c2f28819ddd26e6388ef1091d0152f70d0 | |
parent | c13c0ac9773dfd36ad98d02dc472388ac8b98c74 (diff) |
export more conditional formats
Change-Id: I334c8416e74df39bc2a5832b6accf1dba38c245f
-rw-r--r-- | sc/source/filter/xml/xmlexprt.cxx | 73 |
1 files changed, 69 insertions, 4 deletions
diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx index 5040e59769b6..0afdab06915c 100644 --- a/sc/source/filter/xml/xmlexprt.cxx +++ b/sc/source/filter/xml/xmlexprt.cxx @@ -3837,10 +3837,75 @@ void ScXMLExport::ExportConditionalFormat(SCTAB nTab) for(ScConditionalFormatList::const_iterator itr = pCondFormatList->begin(); itr != pCondFormatList->end(); ++itr) { + rtl::OUString sRanges; + const ScRangeList* pRangeList = itr->GetRangeInfo(); + ScRangeStringConverter::GetStringFromRangeList( sRanges, pRangeList, pDoc, formula::FormulaGrammar::CONV_ODF ); + AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TARGET_RANGE_ADDRESS, sRanges); SvXMLElementExport aElementCondFormat(*this, XML_NAMESPACE_CALC_EXT, XML_CONDITIONAL_FORMAT, true, true); - rtl::OUString sRangeList; - //ScRangeStringConverter::GetStringFromRangeList( sRanges, rRangeList, pDoc, FormulaGrammar::CONV_OOO ); - AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TARGET_RANGE_ADDRESS, sRangeList); + sal_Int32 nEntries = itr->Count(); + for(sal_Int32 i = 0; i < nEntries; ++i) + { + const ScCondFormatEntry* pEntry = itr->GetEntry(i); + rtl::OUStringBuffer aCond; + switch(pEntry->GetOperation()) + { + case SC_COND_EQUAL: + aCond.append('='); + aCond.append(pEntry->GetExpression(pEntry->GetSrcPos(), 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)); + break; + case SC_COND_GREATER: + aCond.append('>'); + aCond.append(pEntry->GetExpression(pEntry->GetSrcPos(), 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)); + break; + case SC_COND_EQGREATER: + aCond.append(">="); + aCond.append(pEntry->GetExpression(pEntry->GetSrcPos(), 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)); + break; + case SC_COND_BETWEEN: + aCond.append(rtl::OUString("between(")); + aCond.append(pEntry->GetExpression(pEntry->GetSrcPos(), 0, 0, formula::FormulaGrammar::GRAM_ODFF)); + aCond.append(','); + aCond.append(pEntry->GetExpression(pEntry->GetSrcPos(), 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(','); + aCond.append(pEntry->GetExpression(pEntry->GetSrcPos(), 1, 0, formula::FormulaGrammar::GRAM_ODFF)); + aCond.append(')'); + break; + case SC_COND_DUPLICATE: + aCond.append("duplicate"); + break; + case SC_COND_NOTDUPLICATE: + aCond.append("unique"); + break; + case SC_COND_DIRECT: + aCond.append("formula-is("); + aCond.append(pEntry->GetExpression(pEntry->GetSrcPos(), 0, 0, formula::FormulaGrammar::GRAM_ODFF)); + aCond.append(')'); + break; + case SC_COND_NONE: + continue; + } + rtl::OUString sStyle = pEntry->GetStyle(); + AddAttribute(XML_NAMESPACE_CALC_EXT, XML_APPLY_STYLE_NAME, sStyle); + AddAttribute(XML_NAMESPACE_CALC_EXT, XML_VALUE, aCond.makeStringAndClear()); + SvXMLElementExport aElementCondEntry(*this, XML_NAMESPACE_CALC_EXT, XML_CONDITION, true, true); + } } } @@ -3851,7 +3916,7 @@ void ScXMLExport::ExportConditionalFormat(SCTAB nTab) { rtl::OUString sRangeList; const ScRangeList& rRangeList = itr->GetRange(); - ScRangeStringConverter::GetStringFromRangeList( sRangeList, &rRangeList, pDoc, FormulaGrammar::CONV_OOO ); + ScRangeStringConverter::GetStringFromRangeList( sRangeList, &rRangeList, pDoc, formula::FormulaGrammar::CONV_ODF ); AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TARGET_RANGE_ADDRESS, sRangeList); SvXMLElementExport aElementColFormat(*this, XML_NAMESPACE_CALC_EXT, XML_CONDITIONAL_FORMAT, true, true); |