diff options
author | Eike Rathke <erack@redhat.com> | 2013-11-02 16:25:42 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2013-11-02 16:29:49 +0100 |
commit | 06a5b1ecc39bb50dadc0bcb7378455500943ece3 (patch) | |
tree | 707e7b7633779affe09df96cce7a1b6b2ae01aec /sc/source/filter/excel/xeformula.cxx | |
parent | 512a14438c4098ca2e30d0b10b6e18506c8475f1 (diff) |
resolved fdo#67536 export internal equivalents as add-in to .xls
For BIFF .xls export the internal functions that are equivalents of
known add-in functions as those add-in functions.
Change-Id: If37f616a34fdabb3fa971fddad01da3dc1f28ee9
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 + } } } |