diff options
Diffstat (limited to 'sc/source/filter/excel/xeformula.cxx')
-rw-r--r-- | sc/source/filter/excel/xeformula.cxx | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/sc/source/filter/excel/xeformula.cxx b/sc/source/filter/excel/xeformula.cxx index a11c3b2db6e9..ba02aefae85f 100644 --- a/sc/source/filter/excel/xeformula.cxx +++ b/sc/source/filter/excel/xeformula.cxx @@ -140,6 +140,7 @@ public: inline sal_uInt16 GetXclFuncIdx() const { return mrFuncInfo.mnXclFunc; } inline bool IsVolatile() const { return mrFuncInfo.IsVolatile(); } inline bool IsFixedParamCount() const { return mrFuncInfo.IsFixedParamCount(); } + inline bool IsAddInEquivalent() const { return mrFuncInfo.IsAddInEquivalent(); } inline bool IsMacroFunc() const { return mrFuncInfo.IsMacroFunc(); } inline sal_uInt8 GetSpaces() const { return mrTokData.mnSpaces; } inline const XclExpExtFuncData& GetExtFuncData() const { return maExtFuncData; } @@ -1361,8 +1362,11 @@ void XclExpFmlaCompImpl::ProcessFunction( const XclExpScToken& rTokData ) mxData->mbOk = pFuncInfo != 0; if( !mxData->mbOk ) return; + // internal functions equivalent to an existing add-in + if( pFuncInfo->IsAddInEquivalent() ) + aExtFuncData.Set( pFuncInfo->GetAddInEquivalentFuncName(), true, false ); // functions simulated by a macro call in file format - if( pFuncInfo->IsMacroFunc() ) + else if( pFuncInfo->IsMacroFunc() ) aExtFuncData.Set( pFuncInfo->GetMacroFuncName(), false, true ); XclExpFuncData aFuncData( rTokData, *pFuncInfo, aExtFuncData ); @@ -1644,8 +1648,11 @@ void XclExpFmlaCompImpl::AppendDefaultParam( XclExpFuncData& rFuncData ) break; default: { - OSL_ENSURE( rFuncData.IsMacroFunc(), "XclExpFmlaCompImpl::AppendDefaultParam - unknown opcode" ); - if( rFuncData.IsMacroFunc() ) + if( rFuncData.IsAddInEquivalent() ) + { + AppendAddInCallToken( rFuncData.GetExtFuncData() ); + } + else if( rFuncData.IsMacroFunc() ) { // Do not write the OOXML <definedName> element for new _xlfn. // prefixed functions. @@ -1655,7 +1662,10 @@ void XclExpFmlaCompImpl::AppendDefaultParam( XclExpFuncData& rFuncData ) AppendMacroCallToken( rFuncData.GetExtFuncData() ); } else + { + SAL_WARN( "sc.filter", "XclExpFmlaCompImpl::AppendDefaultParam - unknown opcode" ); AppendMissingToken(); // to keep parameter count valid + } } } |