diff options
author | Kohei Yoshida <kohei.yoshida@suse.com> | 2012-02-27 23:41:11 -0500 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@suse.com> | 2012-02-27 23:47:00 -0500 |
commit | de6b91f57b0c5621791bea7b7f24de5b7b40e666 (patch) | |
tree | b531721df44346639c4e9cca609b6cc0bfa07e0c /sc | |
parent | 5c699635cecc9877632de5f3dc07d1942c5b6416 (diff) |
Correctly import ref type (aka display type) of data fields.
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/filter/excel/xipivot.cxx | 60 |
1 files changed, 30 insertions, 30 deletions
diff --git a/sc/source/filter/excel/xipivot.cxx b/sc/source/filter/excel/xipivot.cxx index 7284ba14edd0..0aff093aae79 100644 --- a/sc/source/filter/excel/xipivot.cxx +++ b/sc/source/filter/excel/xipivot.cxx @@ -1037,23 +1037,23 @@ void XclImpPTField::ConvertDataField( ScDPSaveData& rSaveData ) const { OSL_ENSURE( maFieldInfo.mnAxes & EXC_SXVD_AXIS_DATA, "XclImpPTField::ConvertDataField - no data field" ); OSL_ENSURE( !maDataInfoList.empty(), "XclImpPTField::ConvertDataField - no data field info" ); - if( !maDataInfoList.empty() ) - { - const String& rFieldName = GetFieldName(); - if( rFieldName.Len() > 0 ) - { - XclPTDataFieldInfoList::const_iterator aIt = maDataInfoList.begin(), aEnd = maDataInfoList.end(); + if (maDataInfoList.empty()) + return; + + rtl::OUString aFieldName = GetFieldName(); + if (aFieldName.isEmpty()) + return; - ScDPSaveDimension& rSaveDim = *rSaveData.GetNewDimensionByName( rFieldName ); - ConvertDataField( rSaveDim, *aIt ); + XclPTDataFieldInfoList::const_iterator aIt = maDataInfoList.begin(), aEnd = maDataInfoList.end(); - // multiple data fields -> clone dimension - for( ++aIt; aIt != aEnd; ++aIt ) - { - ScDPSaveDimension& rDupDim = rSaveData.DuplicateDimension( rSaveDim ); - ConvertDataFieldInfo( rDupDim, *aIt ); - } - } + ScDPSaveDimension& rSaveDim = *rSaveData.GetNewDimensionByName(aFieldName); + ConvertDataField( rSaveDim, *aIt ); + + // multiple data fields -> clone dimension + for( ++aIt; aIt != aEnd; ++aIt ) + { + ScDPSaveDimension& rDupDim = rSaveData.DuplicateDimension( rSaveDim ); + ConvertDataFieldInfo( rDupDim, *aIt ); } } @@ -1163,31 +1163,31 @@ void XclImpPTField::ConvertDataField( ScDPSaveDimension& rSaveDim, const XclPTDa void XclImpPTField::ConvertDataFieldInfo( ScDPSaveDimension& rSaveDim, const XclPTDataFieldInfo& rDataInfo ) const { // visible name - if (const rtl::OUString* pVisName = rDataInfo.GetVisName()) - if (!pVisName->isEmpty()) - rSaveDim.SetLayoutName( *pVisName ); + const rtl::OUString* pVisName = rDataInfo.GetVisName(); + if (pVisName && !pVisName->isEmpty()) + rSaveDim.SetLayoutName(*pVisName); // aggregation function rSaveDim.SetFunction( static_cast< sal_uInt16 >( rDataInfo.GetApiAggFunc() ) ); // result field reference sal_Int32 nRefType = rDataInfo.GetApiRefType(); - if( nRefType != ::com::sun::star::sheet::DataPilotFieldReferenceType::NONE ) + DataPilotFieldReference aFieldRef; + aFieldRef.ReferenceType = nRefType; + const XclImpPTField* pRefField = mrPTable.GetField(rDataInfo.mnRefField); + if (pRefField) { - DataPilotFieldReference aFieldRef; - aFieldRef.ReferenceType = nRefType; - - if( const XclImpPTField* pRefField = mrPTable.GetField( rDataInfo.mnRefField ) ) + aFieldRef.ReferenceField = pRefField->GetFieldName(); + aFieldRef.ReferenceItemType = rDataInfo.GetApiRefItemType(); + if (aFieldRef.ReferenceItemType == sheet::DataPilotFieldReferenceItemType::NAMED) { - aFieldRef.ReferenceField = pRefField->GetFieldName(); - aFieldRef.ReferenceItemType = rDataInfo.GetApiRefItemType(); - if( aFieldRef.ReferenceItemType == ::com::sun::star::sheet::DataPilotFieldReferenceItemType::NAMED ) - if (const rtl::OUString* pRefItemName = pRefField->GetItemName(rDataInfo.mnRefItem)) - aFieldRef.ReferenceItemName = *pRefItemName; + const rtl::OUString* pRefItemName = pRefField->GetItemName(rDataInfo.mnRefItem); + if (pRefItemName) + aFieldRef.ReferenceItemName = *pRefItemName; } - - rSaveDim.SetReferenceValue( &aFieldRef ); } + + rSaveDim.SetReferenceValue(&aFieldRef); } void XclImpPTField::ConvertItems( ScDPSaveDimension& rSaveDim ) const |