[Libreoffice-commits] core.git: Branch 'libreoffice-4-2' - sc/source
Markus Mohrhard
markus.mohrhard at collabora.co.uk
Tue Feb 18 14:47:36 CET 2014
sc/source/filter/excel/xepivot.cxx | 11 ++++++-----
sc/source/filter/inc/xepivot.hxx | 3 ++-
2 files changed, 8 insertions(+), 6 deletions(-)
New commits:
commit 42d0502dc1cfb66b9b14fc9346778bf905eae085
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sun Feb 16 22:07:20 2014 +0100
multiple pivot tables on same sheet OOXML fix (part1), related #i83250#
This just fixes the generation of the pivot table file and the
relationship. It crashed in a dbgutil build because we tried to
overwrite the same stream for each pivot table on one sheet.
Change-Id: If2c9541e38b483ead75fff32d5f6d9e16970e702
Reviewed-on: https://gerrit.libreoffice.org/8097
Tested-by: Kohei Yoshida <libreoffice at kohei.us>
Reviewed-by: Kohei Yoshida <libreoffice at kohei.us>
diff --git a/sc/source/filter/excel/xepivot.cxx b/sc/source/filter/excel/xepivot.cxx
index f29cc24..5759d0b 100644
--- a/sc/source/filter/excel/xepivot.cxx
+++ b/sc/source/filter/excel/xepivot.cxx
@@ -1243,13 +1243,14 @@ void XclExpPTField::WriteSxvdex( XclExpStream& rStrm ) const
// ============================================================================
-XclExpPivotTable::XclExpPivotTable( const XclExpRoot& rRoot, const ScDPObject& rDPObj, const XclExpPivotCache& rPCache ) :
+XclExpPivotTable::XclExpPivotTable( const XclExpRoot& rRoot, const ScDPObject& rDPObj, const XclExpPivotCache& rPCache, size_t nId ) :
XclExpRoot( rRoot ),
mrPCache( rPCache ),
maDataOrientField( *this, EXC_SXIVD_DATA ),
mnOutScTab( 0 ),
mbValid( false ),
- mbFilterBtn( false )
+ mbFilterBtn( false ),
+ mnId( nId )
{
const ScRange& rOutScRange = rDPObj.GetOutRange();
if( GetAddressConverter().ConvertRange( maPTInfo.maOutXclRange, rOutScRange, true ) )
@@ -1352,8 +1353,8 @@ void XclExpPivotTable::SaveXml( XclExpXmlStream& rStrm )
if( !mbValid )
return;
sax_fastparser::FSHelperPtr aPivotTableDefinition = rStrm.CreateOutputStream(
- XclXmlUtils::GetStreamName( "xl/", "pivotTables/pivotTable", mnOutScTab+1),
- XclXmlUtils::GetStreamName( "../", "pivotTables/pivotTable", mnOutScTab+1),
+ XclXmlUtils::GetStreamName( "xl/", "pivotTables/pivotTable", mnId + 1),
+ XclXmlUtils::GetStreamName( "../", "pivotTables/pivotTable", mnId + 1),
rStrm.GetCurrentStream()->getOutputStream(),
"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml",
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotTable");
@@ -1849,7 +1850,7 @@ void XclExpPivotTableManager::CreatePivotTables()
for( size_t nDPObj = 0, nCount = pDPColl->GetCount(); nDPObj < nCount; ++nDPObj )
if( ScDPObject* pDPObj = (*pDPColl)[ nDPObj ] )
if( const XclExpPivotCache* pPCache = CreatePivotCache( *pDPObj ) )
- maPTableList.AppendNewRecord( new XclExpPivotTable( GetRoot(), *pDPObj, *pPCache ) );
+ maPTableList.AppendNewRecord( new XclExpPivotTable( GetRoot(), *pDPObj, *pPCache, nDPObj ) );
}
XclExpRecordRef XclExpPivotTableManager::CreatePivotCachesRecord()
diff --git a/sc/source/filter/inc/xepivot.hxx b/sc/source/filter/inc/xepivot.hxx
index efcbbab..6f5a9a4 100644
--- a/sc/source/filter/inc/xepivot.hxx
+++ b/sc/source/filter/inc/xepivot.hxx
@@ -344,7 +344,7 @@ class XclExpPivotTable : public XclExpRecordBase, protected XclExpRoot
{
public:
explicit XclExpPivotTable( const XclExpRoot& rRoot,
- const ScDPObject& rDPObj, const XclExpPivotCache& rPCache );
+ const ScDPObject& rDPObj, const XclExpPivotCache& rPCache, size_t nId );
/** Returns a pivot cache field. */
const XclExpPCField* GetCacheField( sal_uInt16 nCacheIdx ) const;
@@ -422,6 +422,7 @@ private:
SCTAB mnOutScTab; /// Sheet index of the output range.
bool mbValid; /// true = The pivot table is valid for export.
bool mbFilterBtn; /// true = DataPilot has filter button.
+ size_t mnId; /// Stream ID
};
// ============================================================================
More information about the Libreoffice-commits
mailing list