sc/source/filter/excel/xeformula.cxx | 4 +++- sc/source/filter/excel/xename.cxx | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-)
New commits: commit 4500514571e389dec40f90d9d40dc568d5e4c490 Author: László Németh <nem...@numbertext.org> AuthorDate: Mon May 9 14:30:59 2022 +0200 Commit: László Németh <nem...@numbertext.org> CommitDate: Tue May 10 09:09:52 2022 +0200 tdf#148993 XLS export: fix broken formula regression Exported XLS documents lost their formulas opened in MSO. Regression from commit 12ee423c7549ddd2b86dfc3fc6fed2c617dcca7f "tdf#144397 tdf#144636 XLSX: cache external named ranges and their formulas". Change-Id: I009630a41b29bb21349711cc07d0ed181f816374 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134075 Tested-by: László Németh <nem...@numbertext.org> Reviewed-by: László Németh <nem...@numbertext.org> (cherry picked from commit ac9de05cc79e76392891c18814e8f120178ccf38) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134063 Tested-by: Jenkins diff --git a/sc/source/filter/excel/xeformula.cxx b/sc/source/filter/excel/xeformula.cxx index e4e3ec402e89..6c6e7e29f18e 100644 --- a/sc/source/filter/excel/xeformula.cxx +++ b/sc/source/filter/excel/xeformula.cxx @@ -612,7 +612,9 @@ void XclExpFmlaCompImpl::Init( XclFormulaType eType, const ScTokenArray& rScTokA // token array iterator (use cloned token array if present) mxData->maTokArrIt.Init( mxData->mxOwnScTokArr ? *mxData->mxOwnScTokArr : rScTokArr, false ); mxData->mpRefLog = pRefLog; - mxData->mpScBasePos = pScBasePos; + // Only for OOXML + if (GetOutput() == EXC_OUTPUT_XML_2007) + mxData->mpScBasePos = pScBasePos; } } diff --git a/sc/source/filter/excel/xename.cxx b/sc/source/filter/excel/xename.cxx index 513daf2795f0..4bf336a16d09 100644 --- a/sc/source/filter/excel/xename.cxx +++ b/sc/source/filter/excel/xename.cxx @@ -648,7 +648,9 @@ sal_uInt16 XclExpNameManagerImpl::CreateName( SCTAB nTab, const ScRangeData& rRa } else { - xTokArr = GetFormulaCompiler().CreateFormula( EXC_FMLATYPE_NAME, *pScTokArr, &rRangeData.GetPos() ); + bool bOOXML = GetOutput() == EXC_OUTPUT_XML_2007; + xTokArr = GetFormulaCompiler().CreateFormula( EXC_FMLATYPE_NAME, *pScTokArr, bOOXML ? + &rRangeData.GetPos() : nullptr ); sSymbol = rRangeData.GetSymbol( (GetOutput() == EXC_OUTPUT_BINARY) ? formula::FormulaGrammar::GRAM_ENGLISH_XL_A1 : formula::FormulaGrammar::GRAM_OOXML); }