diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2018-07-15 00:18:58 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2018-07-15 23:05:26 +0200 |
commit | 16048ebc230880148346f02403820b7646b2649c (patch) | |
tree | d9407a48d4ab9ac8382f9b8fafb6dbedec32f85f | |
parent | 6df45ae3a85b21d984605a6656282e5feaf8dea9 (diff) |
related tdf#117816, only export cond format formula to xlsx when required
Change-Id: I7523d17e9945dfbdf0c346fff8eddd40593f946a
Reviewed-on: https://gerrit.libreoffice.org/57444
Tested-by: Jenkins
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r-- | sc/source/filter/excel/xecontent.cxx | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/sc/source/filter/excel/xecontent.cxx b/sc/source/filter/excel/xecontent.cxx index 4e0863d12e1b..04f3a9c0f2bd 100644 --- a/sc/source/filter/excel/xecontent.cxx +++ b/sc/source/filter/excel/xecontent.cxx @@ -937,6 +937,27 @@ bool IsTextRule(ScConditionMode eMode) return false; } +bool RequiresFormula(ScConditionMode eMode) +{ + if (IsTopBottomRule(eMode)) + return false; + else if (IsTextRule(eMode)) + return false; + + switch (eMode) + { + case ScConditionMode::NoError: + case ScConditionMode::Error: + case ScConditionMode::Duplicate: + case ScConditionMode::NotDuplicate: + return false; + default: + break; + } + + return true; +} + bool RequiresFixedFormula(ScConditionMode eMode) { switch(eMode) @@ -963,9 +984,9 @@ OString GetFixedFormula(ScConditionMode eMode, const ScAddress& rAddress, const switch (eMode) { case ScConditionMode::Error: - return ""; + return OString("ISERROR(" + aPos + ")") ; case ScConditionMode::NoError: - return ""; + return OString("NOT(ISERROR(" + aPos + "))") ; case ScConditionMode::BeginsWith: return OString("LEFT(" + aPos + ",LEN(\"" + rText + "\"))=\"" + rText + "\""); case ScConditionMode::EndsWith: @@ -1034,7 +1055,7 @@ void XclExpCFImpl::SaveXml( XclExpXmlStream& rStrm ) rWorksheet->writeEscaped(aFormula.getStr()); rWorksheet->endElement( XML_formula ); } - else if(!IsTextRule(eOperation) && !IsTopBottomRule(eOperation)) + else if(RequiresFormula(eOperation)) { rWorksheet->startElement( XML_formula, FSEND ); std::unique_ptr<ScTokenArray> pTokenArray(mrFormatEntry.CreateFlatCopiedTokenArray(0)); |