diff options
author | Noel Power <noel.power@novell.com> | 2012-06-21 16:23:09 +0100 |
---|---|---|
committer | Noel Power <noel.power@novell.com> | 2012-06-21 16:25:36 +0100 |
commit | 75c789691b3ed7a10caa4319cf58144cfaace3a7 (patch) | |
tree | a6c2c43ee2ee173d9bda38f7485bba7757271053 /sc | |
parent | 8616f227c722affcedff7632ba97644d04427c94 (diff) |
fix core dump setting preload value for some cell formula
this patch is a follow up to 6ea4e42eaa28a773ec66fee3b8f764e0dc365297 & 7fff98724bc7e3f4d3defb005aa1358d743d08ed
Change-Id: Ia286164c369526acb4dfe733b651e65a79d124d8
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/filter/oox/formulabuffer.cxx | 14 | ||||
-rw-r--r-- | sc/source/filter/oox/sheetdatacontext.cxx | 1 |
2 files changed, 9 insertions, 6 deletions
diff --git a/sc/source/filter/oox/formulabuffer.cxx b/sc/source/filter/oox/formulabuffer.cxx index f93a51722817..7d8ec1a0b749 100644 --- a/sc/source/filter/oox/formulabuffer.cxx +++ b/sc/source/filter/oox/formulabuffer.cxx @@ -20,6 +20,7 @@ #include "rangelst.hxx" #include "autonamecache.hxx" +#include "tokenuno.hxx" namespace oox { namespace xls { @@ -134,22 +135,25 @@ void FormulaBuffer::finalizeImport() void FormulaBuffer::applyCellFormulas( std::vector< TokenAddressItem >& rVector ) { + ScDocument& rDoc = getScDocument(); for ( std::vector< TokenAddressItem >::iterator it = rVector.begin(), it_end = rVector.end(); it != it_end; ++it ) { ::com::sun::star::table::CellAddress& rAddress = it->maCellAddress; ApiTokenSequence rTokens = getFormulaParser().importFormula( rAddress, it->maTokenStr ); - - Reference< XFormulaTokens > xTokens( getCell( rAddress ), UNO_QUERY ); - OSL_ENSURE( xTokens.is(), "WorksheetHelper::putFormulaTokens - missing token interface" ); - if( xTokens.is() ) xTokens->setTokens( rTokens ); + ScTokenArray aTokenArray; + ScAddress aCellPos; + ScUnoConversion::FillScAddress( aCellPos, rAddress ); + ScTokenConversion::ConvertToTokenArray( rDoc, aTokenArray, rTokens ); + ScBaseCell* pNewCell = new ScFormulaCell( &rDoc, aCellPos, &aTokenArray ); + rDoc.PutCell( aCellPos, pNewCell, sal_True ); } } void FormulaBuffer::applyCellFormulaValues( std::vector< ValueAddressPair >& rVector ) { + ScDocument& rDoc = getScDocument(); for ( std::vector< ValueAddressPair >::iterator it = rVector.begin(), it_end = rVector.end(); it != it_end; ++it ) { - ScDocument& rDoc = getScDocument(); ScAddress aCellPos; ScUnoConversion::FillScAddress( aCellPos, it->first ); ScBaseCell* pBaseCell = rDoc.GetCell( aCellPos ); diff --git a/sc/source/filter/oox/sheetdatacontext.cxx b/sc/source/filter/oox/sheetdatacontext.cxx index 37f882c598b1..7ca86d7adc93 100644 --- a/sc/source/filter/oox/sheetdatacontext.cxx +++ b/sc/source/filter/oox/sheetdatacontext.cxx @@ -190,7 +190,6 @@ void SheetDataContext::onEndElement() { if( mbValidRange && maFmlaData.isValidSharedRef( maCellData.maCellAddr ) ) { - //mrSheetData.createSharedFormula( maFmlaData.mnSharedId, mrFormulaParser.importFormula( maCellData.maCellAddr, maFormulaStr ) ); createSharedFormulaMapEntry( maCellData.maCellAddr, maFmlaData.mnSharedId, maFormulaStr ); } setCellFormula( maCellData.maCellAddr, maFmlaData.mnSharedId ); |