diff options
Diffstat (limited to 'xmloff/source/chart/SchXMLTools.cxx')
-rw-r--r-- | xmloff/source/chart/SchXMLTools.cxx | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/xmloff/source/chart/SchXMLTools.cxx b/xmloff/source/chart/SchXMLTools.cxx index 2c83c3e9d208..e12de82cc714 100644 --- a/xmloff/source/chart/SchXMLTools.cxx +++ b/xmloff/source/chart/SchXMLTools.cxx @@ -380,14 +380,34 @@ Reference< chart2::data::XDataSequence > CreateDataSequence( return xRet; } - try + bool bUseInternal = false; + uno::Reference<beans::XPropertySet> xPropSet(xDataProvider, uno::UNO_QUERY); + if (xPropSet.is()) { - xRet.set( xDataProvider->createDataSequenceByRangeRepresentation( lcl_ConvertRange( rRange, xDataProvider ))); - SchXMLTools::setXMLRangePropertyAtDataSequence( xRet, rRange ); + try + { + sal_Bool bVal; + uno::Any any = xPropSet->getPropertyValue("UseInternalDataProvider"); + if (any >>= bVal) + bUseInternal = static_cast<bool>(bVal); + } + catch (const beans::UnknownPropertyException&) + { + // Do nothing + } } - catch( const lang::IllegalArgumentException & ) + + if (!bUseInternal) { - OSL_FAIL( "could not create data sequence" ); + try + { + xRet.set( xDataProvider->createDataSequenceByRangeRepresentation( lcl_ConvertRange( rRange, xDataProvider ))); + SchXMLTools::setXMLRangePropertyAtDataSequence( xRet, rRange ); + } + catch( const lang::IllegalArgumentException & ) + { + OSL_FAIL( "could not create data sequence" ); + } } if( !xRet.is() && !xChartDoc->hasInternalDataProvider() && !rRange.isEmpty() ) |