diff options
Diffstat (limited to 'xmloff/source/chart/SchXMLTools.cxx')
-rw-r--r-- | xmloff/source/chart/SchXMLTools.cxx | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/xmloff/source/chart/SchXMLTools.cxx b/xmloff/source/chart/SchXMLTools.cxx index 31c1ac161b1a..2282d1dba2f0 100644 --- a/xmloff/source/chart/SchXMLTools.cxx +++ b/xmloff/source/chart/SchXMLTools.cxx @@ -36,6 +36,7 @@ #include <com/sun/star/chart2/data/XDataProvider.hpp> #include <com/sun/star/chart2/data/XDataReceiver.hpp> #include <com/sun/star/chart2/data/XRangeXMLConversion.hpp> +#include <com/sun/star/chart2/data/XPivotChartDataProvider.hpp> #include <com/sun/star/chart2/XChartDocument.hpp> #include <com/sun/star/chart2/XCoordinateSystemContainer.hpp> #include <com/sun/star/chart2/XRegressionCurveContainer.hpp> @@ -488,11 +489,21 @@ void CreateCategories( bRangeConverted = true; } } - Reference< chart2::data::XDataSequence > xSeq( - xDataProvider->createDataSequenceByRangeRepresentation( aConvertedRange )); - xLabeledSeq->setValues( xSeq ); - if( bRangeConverted ) - setXMLRangePropertyAtDataSequence( xSeq, rRangeAddress ); + + Reference<chart2::data::XDataSequence> xSequence; + Reference<chart2::data::XPivotChartDataProvider> xPivotChartProvider(xDataProvider, uno::UNO_QUERY); + if (xPivotChartProvider.is()) + { + xSequence.set(xPivotChartProvider->createDataSequenceOfCategories()); + } + else + { + xSequence.set(xDataProvider->createDataSequenceByRangeRepresentation(aConvertedRange)); + if (bRangeConverted) + setXMLRangePropertyAtDataSequence(xSequence, rRangeAddress); + } + xLabeledSeq->setValues(xSequence); + } catch( const lang::IllegalArgumentException & ex ) { |