summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorNoel Power <noel.power@novell.com>2012-06-21 16:23:09 +0100
committerNoel Power <noel.power@novell.com>2012-06-21 16:25:36 +0100
commit75c789691b3ed7a10caa4319cf58144cfaace3a7 (patch)
treea6c2c43ee2ee173d9bda38f7485bba7757271053 /sc
parent8616f227c722affcedff7632ba97644d04427c94 (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.cxx14
-rw-r--r--sc/source/filter/oox/sheetdatacontext.cxx1
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 );