diff options
author | Jochen Nitschke <j.nitschke+logerrit@ok.de> | 2017-01-12 02:27:09 +0100 |
---|---|---|
committer | Jochen Nitschke <j.nitschke+logerrit@ok.de> | 2017-01-12 17:09:35 +0000 |
commit | 58c5a9de2a0b985ef81557271db39c56ceb624f9 (patch) | |
tree | e585636496eb801ad8329ce564feeb5d0d09ab5d /sc | |
parent | 2fd88ab1cbb4690a770ca2ca5d66157ec4906a2e (diff) |
tdf#48140 replace CellAddress in xlsx import (4)
Change-Id: I52d7a37dd106744052d714e66fd84895aeb0a9b8
Reviewed-on: https://gerrit.libreoffice.org/33001
Reviewed-by: Jochen Nitschke <j.nitschke+logerrit@ok.de>
Tested-by: Jochen Nitschke <j.nitschke+logerrit@ok.de>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/filter/inc/formulabase.hxx | 2 | ||||
-rw-r--r-- | sc/source/filter/oox/formulabase.cxx | 5 | ||||
-rw-r--r-- | sc/source/filter/oox/formulaparser.cxx | 63 | ||||
-rw-r--r-- | sc/source/filter/oox/ooxformulaparser.cxx | 7 |
4 files changed, 18 insertions, 59 deletions
diff --git a/sc/source/filter/inc/formulabase.hxx b/sc/source/filter/inc/formulabase.hxx index 91c67c820d1b..46ddbfbb562f 100644 --- a/sc/source/filter/inc/formulabase.hxx +++ b/sc/source/filter/inc/formulabase.hxx @@ -609,7 +609,7 @@ public: /** Calls the XFormulaParser::parseFormula() function of the API parser. */ ApiTokenSequence parseFormula( const OUString& rFormula, - const css::table::CellAddress& rRefPos ); + const ScAddress& rRefPos ); private: css::uno::Reference< css::sheet::XFormulaParser > diff --git a/sc/source/filter/oox/formulabase.cxx b/sc/source/filter/oox/formulabase.cxx index 5966c083c776..b2f0ace68aef 100644 --- a/sc/source/filter/oox/formulabase.cxx +++ b/sc/source/filter/oox/formulabase.cxx @@ -1441,12 +1441,13 @@ ApiParserWrapper::ApiParserWrapper( maParserProps.setProperty( PROP_OpCodeMap, getOoxParserMap() ); } -ApiTokenSequence ApiParserWrapper::parseFormula( const OUString& rFormula, const CellAddress& rRefPos ) +ApiTokenSequence ApiParserWrapper::parseFormula( const OUString& rFormula, const ScAddress& rRefPos ) { ApiTokenSequence aTokenSeq; if( mxParser.is() ) try { - aTokenSeq = mxParser->parseFormula( rFormula, rRefPos ); + aTokenSeq = mxParser->parseFormula( rFormula, + CellAddress(rRefPos.Tab(), rRefPos.Col(), rRefPos.Row()) ); } catch( Exception& ) { diff --git a/sc/source/filter/oox/formulaparser.cxx b/sc/source/filter/oox/formulaparser.cxx index 759c1c7c1553..ff0ce24e7c80 100644 --- a/sc/source/filter/oox/formulaparser.cxx +++ b/sc/source/filter/oox/formulaparser.cxx @@ -423,20 +423,11 @@ public: /** Converts an OOXML formula string. */ virtual ApiTokenSequence importOoxFormula( - const CellAddress& rBaseAddress, - const OUString& rFormulaString ); - - virtual ApiTokenSequence importOoxFormulaSc( const ScAddress& rBaseAddress, const OUString& rFormulaString ); /** Imports and converts a BIFF12 token array from the passed stream. */ virtual ApiTokenSequence importBiff12Formula( - const CellAddress& rBaseAddress, - FormulaType eType, - SequenceInputStream& rStrm ); - - virtual ApiTokenSequence importBiff12FormulaSc( const ScAddress& rBaseAddress, FormulaType eType, SequenceInputStream& rStrm ); @@ -449,7 +440,7 @@ protected: typedef ::std::vector< WhiteSpace > WhiteSpaceVec; /** Initializes the formula parser before importing a formula. */ - void initializeImport( const CellAddress& rBaseAddress, FormulaType eType ); + void initializeImport( const ScAddress& rBaseAddress, FormulaType eType ); /** Finalizes the internal token storage after import. */ ApiTokenSequence finalizeImport(); @@ -579,31 +570,18 @@ FormulaParserImpl::FormulaParserImpl( const FormulaParser& rParent ) : maClosingSpaces.reserve( 256 ); } -ApiTokenSequence FormulaParserImpl::importOoxFormula( const CellAddress&, const OUString& ) +ApiTokenSequence FormulaParserImpl::importOoxFormula( const ScAddress&, const OUString& ) { OSL_FAIL( "FormulaParserImpl::importOoxFormula - not implemented" ); return ApiTokenSequence(); } -ApiTokenSequence FormulaParserImpl::importOoxFormulaSc( const ScAddress&, const OUString& ) -{ - OSL_FAIL( "FormulaParserImpl::importOoxFormula - not implemented" ); - return ApiTokenSequence(); -} - -ApiTokenSequence FormulaParserImpl::importBiff12Formula( const CellAddress&, FormulaType, SequenceInputStream& ) -{ - SAL_WARN("sc.filter", "FormulaParserImpl::importBiff12Formula - not implemented" ); - return ApiTokenSequence(); -} - -ApiTokenSequence FormulaParserImpl::importBiff12FormulaSc( const ScAddress&, FormulaType, SequenceInputStream& ) +ApiTokenSequence FormulaParserImpl::importBiff12Formula( const ScAddress&, FormulaType, SequenceInputStream& ) { SAL_WARN("sc.filter", "FormulaParserImpl::importBiff12Formula - not implemented" ); return ApiTokenSequence(); } - OUString FormulaParserImpl::resolveOleTarget( sal_Int32 nRefId, bool bUseRefSheets ) const { const ExternalLink* pExtLink = getExternalLinks().getExternalLink( nRefId, bUseRefSheets ).get(); @@ -613,9 +591,9 @@ OUString FormulaParserImpl::resolveOleTarget( sal_Int32 nRefId, bool bUseRefShee return OUString(); } -void FormulaParserImpl::initializeImport( const CellAddress& rBaseAddr, FormulaType eType ) +void FormulaParserImpl::initializeImport( const ScAddress& rBaseAddr, FormulaType eType ) { - maBaseAddr = ScAddress( rBaseAddr.Column, rBaseAddr.Row, rBaseAddr.Sheet ); + maBaseAddr = rBaseAddr; mbRelativeAsOffset = mb2dRefsAs3dRefs = mbSpecialTokens = false; switch( eType ) { @@ -1226,19 +1204,10 @@ public: explicit OoxFormulaParserImpl( const FormulaParser& rParent ); virtual ApiTokenSequence importOoxFormula( - const CellAddress& rBaseAddr, - const OUString& rFormulaString ) override; - - virtual ApiTokenSequence importBiff12Formula( - const CellAddress& rBaseAddr, - FormulaType eType, - SequenceInputStream& rStrm ) override; - - virtual ApiTokenSequence importOoxFormulaSc( const ScAddress& rBaseAddr, const OUString& rFormulaString ) override; - virtual ApiTokenSequence importBiff12FormulaSc( + virtual ApiTokenSequence importBiff12Formula( const ScAddress& rBaseAddr, FormulaType eType, SequenceInputStream& rStrm ) override; @@ -1288,7 +1257,7 @@ OoxFormulaParserImpl::OoxFormulaParserImpl( const FormulaParser& rParent ) : { } -ApiTokenSequence OoxFormulaParserImpl::importOoxFormula( const CellAddress& rBaseAddr, const OUString& rFormulaString ) +ApiTokenSequence OoxFormulaParserImpl::importOoxFormula( const ScAddress& rBaseAddr, const OUString& rFormulaString ) { if( mbNeedExtRefs ) { @@ -1298,20 +1267,8 @@ ApiTokenSequence OoxFormulaParserImpl::importOoxFormula( const CellAddress& rBas return finalizeTokenArray( maApiParser.parseFormula( rFormulaString, rBaseAddr ) ); } -ApiTokenSequence OoxFormulaParserImpl::importOoxFormulaSc( const ScAddress& rBaseAddr, const OUString& rFormulaString ) -{ - CellAddress aTempAddress( rBaseAddr.Tab(), rBaseAddr.Col(), rBaseAddr.Row() ); - return importOoxFormula(aTempAddress, rFormulaString); -} - // TODO: remove the importBiff12Formula function -ApiTokenSequence OoxFormulaParserImpl::importBiff12FormulaSc( const ScAddress& rBaseAddr, FormulaType eType, SequenceInputStream& rStrm ) -{ - CellAddress aTempAddress( rBaseAddr.Tab(), rBaseAddr.Col(), rBaseAddr.Row() ); - return importBiff12Formula(aTempAddress, eType, rStrm); -} - -ApiTokenSequence OoxFormulaParserImpl::importBiff12Formula( const CellAddress& rBaseAddr, FormulaType eType, SequenceInputStream& rStrm ) +ApiTokenSequence OoxFormulaParserImpl::importBiff12Formula( const ScAddress& rBaseAddr, FormulaType eType, SequenceInputStream& rStrm ) { initializeImport( rBaseAddr, eType ); @@ -1832,12 +1789,12 @@ FormulaParser::~FormulaParser() ApiTokenSequence FormulaParser::importFormula( const ScAddress& rBaseAddress, const OUString& rFormulaString ) const { - return mxImpl->importOoxFormulaSc( rBaseAddress, rFormulaString ); + return mxImpl->importOoxFormula( rBaseAddress, rFormulaString ); } ApiTokenSequence FormulaParser::importFormula( const ScAddress& rBaseAddress, FormulaType eType, SequenceInputStream& rStrm ) const { - return mxImpl->importBiff12FormulaSc( rBaseAddress, eType, rStrm ); + return mxImpl->importBiff12Formula( rBaseAddress, eType, rStrm ); } OUString FormulaParser::importOleTargetLink( const OUString& rFormulaString ) diff --git a/sc/source/filter/oox/ooxformulaparser.cxx b/sc/source/filter/oox/ooxformulaparser.cxx index fc65fdeb92a2..720c27707bc2 100644 --- a/sc/source/filter/oox/ooxformulaparser.cxx +++ b/sc/source/filter/oox/ooxformulaparser.cxx @@ -40,7 +40,7 @@ class OOXMLFormulaParserImpl : private FormulaFinalizer public: explicit OOXMLFormulaParserImpl( const Reference< XMultiServiceFactory >& rxModelFactory ); - Sequence< FormulaToken > parseFormula( const OUString& rFormula, const CellAddress& rReferencePos ); + Sequence< FormulaToken > parseFormula( const OUString& rFormula, const ScAddress& rReferencePos ); protected: virtual const FunctionInfo* resolveBadFuncName( const OUString& rTokenData ) const override; @@ -55,7 +55,7 @@ OOXMLFormulaParserImpl::OOXMLFormulaParserImpl( const Reference< XMultiServiceFa { } -Sequence< FormulaToken > OOXMLFormulaParserImpl::parseFormula( const OUString& rFormula, const CellAddress& rReferencePos ) +Sequence< FormulaToken > OOXMLFormulaParserImpl::parseFormula( const OUString& rFormula, const ScAddress& rReferencePos ) { return finalizeTokenArray( maApiParser.parseFormula( rFormula, rReferencePos ) ); } @@ -151,7 +151,8 @@ Sequence< FormulaToken > SAL_CALL OOXMLFormulaParser::parseFormula( Reference< XMultiServiceFactory > xModelFactory( mxComponent, UNO_QUERY_THROW ); mxParserImpl.reset( new OOXMLFormulaParserImpl( xModelFactory ) ); } - return mxParserImpl->parseFormula( rFormula, rReferencePos ); + return mxParserImpl->parseFormula( rFormula, + ScAddress(rReferencePos.Column, rReferencePos.Row, rReferencePos.Sheet) ); } OUString SAL_CALL OOXMLFormulaParser::printFormula( |