chart2/qa/extras/chart2export.cxx | 13 +++++++++++++ chart2/qa/extras/data/odt/tdf131143.odt |binary include/oox/export/chartexport.hxx | 2 +- oox/source/export/chartexport.cxx | 10 ++++++---- 4 files changed, 20 insertions(+), 5 deletions(-)
New commits: commit 45413702b0b71ee56aee57d215b4041d3ea6067b Author: Balazs Varga <balazs.varga...@gmail.com> AuthorDate: Thu Mar 5 11:28:23 2020 +0100 Commit: László Németh <nem...@numbertext.org> CommitDate: Mon Mar 9 11:37:27 2020 +0100 tdf#131143 OOXML chart: fix missing data points of scatter chart If "values-x" property is empty, export X-Y (scatter) chart category labels in c:xVal/c:strRef/c:strCache/c:pt/c:v to avoid missing data points at next import. Change-Id: Ib5ed99bd1186bd1cfa3e2559aff1c8d214547017 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90011 Tested-by: László Németh <nem...@numbertext.org> Reviewed-by: László Németh <nem...@numbertext.org> diff --git a/chart2/qa/extras/chart2export.cxx b/chart2/qa/extras/chart2export.cxx index c3bd2283bf4e..323a026594d8 100644 --- a/chart2/qa/extras/chart2export.cxx +++ b/chart2/qa/extras/chart2export.cxx @@ -49,6 +49,7 @@ public: void testCrosses(); void testScatterChartTextXValues(); void testScatterXAxisValues(); + void testScatterXAxisCategories(); void testChartDataTable(); void testChartExternalData(); void testEmbeddingsGrabBag(); @@ -171,6 +172,7 @@ public: CPPUNIT_TEST(testCrosses); CPPUNIT_TEST(testScatterChartTextXValues); CPPUNIT_TEST(testScatterXAxisValues); + CPPUNIT_TEST(testScatterXAxisCategories); CPPUNIT_TEST(testChartDataTable); CPPUNIT_TEST(testChartExternalData); CPPUNIT_TEST(testEmbeddingsGrabBag); @@ -710,6 +712,17 @@ void Chart2ExportTest::testScatterXAxisValues() assertXPathContent(pXmlDoc, "//c:scatterChart/c:ser/c:xVal/c:numRef/c:numCache/c:pt[4]/c:v", "16"); } +void Chart2ExportTest::testScatterXAxisCategories() +{ + load("/chart2/qa/extras/data/odt/", "tdf131143.odt"); + + xmlDocPtr pXmlDoc = parseExport("word/charts/chart", "Office Open XML Text"); + CPPUNIT_ASSERT(pXmlDoc); + assertXPath(pXmlDoc, "//c:scatterChart/c:ser[1]/c:xVal/c:strRef/c:strCache/c:ptCount", "val", "4"); + assertXPathContent(pXmlDoc, "//c:scatterChart/c:ser[1]/c:xVal/c:strRef/c:strCache/c:pt[1]/c:v", "Row 1"); + assertXPathContent(pXmlDoc, "//c:scatterChart/c:ser[1]/c:xVal/c:strRef/c:strCache/c:pt[2]/c:v", "Row 2"); +} + void Chart2ExportTest::testChartDataTable() { load("/chart2/qa/extras/data/docx/", "testChartDataTable.docx"); diff --git a/chart2/qa/extras/data/odt/tdf131143.odt b/chart2/qa/extras/data/odt/tdf131143.odt new file mode 100644 index 000000000000..e8ffeaf5a962 Binary files /dev/null and b/chart2/qa/extras/data/odt/tdf131143.odt differ diff --git a/include/oox/export/chartexport.hxx b/include/oox/export/chartexport.hxx index ac22a18b8957..951819703a76 100644 --- a/include/oox/export/chartexport.hxx +++ b/include/oox/export/chartexport.hxx @@ -175,7 +175,7 @@ private: void exportSeriesText( const css::uno::Reference< css::chart2::data::XDataSequence >& xValueSeq ); void exportSeriesCategory( - const css::uno::Reference< css::chart2::data::XDataSequence >& xValueSeq ); + const css::uno::Reference< css::chart2::data::XDataSequence >& xValueSeq, sal_Int32 nValueType = XML_cat ); void exportSeriesValues( const css::uno::Reference< css::chart2::data::XDataSequence >& xValueSeq, sal_Int32 nValueType = XML_val ); void exportShapeProps( const css::uno::Reference< css::beans::XPropertySet >& xPropSet ); diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx index cf586257ccf7..aecfe3948d33 100644 --- a/oox/source/export/chartexport.cxx +++ b/oox/source/export/chartexport.cxx @@ -2304,6 +2304,8 @@ void ChartExport::exportSeries( const Reference<chart2::XChartType>& xChartType, if( xValues.is() ) exportSeriesValues( xValues, XML_xVal ); } + else if( mxCategoriesValues.is() ) + exportSeriesCategory( mxCategoriesValues, XML_xVal ); } if( eChartType == chart::TYPEID_BUBBLE ) @@ -2429,13 +2431,13 @@ void ChartExport::exportSeriesText( const Reference< chart2::data::XDataSequence pFS->endElement( FSNS( XML_c, XML_tx ) ); } -void ChartExport::exportSeriesCategory( const Reference< chart2::data::XDataSequence > & xValueSeq ) +void ChartExport::exportSeriesCategory( const Reference< chart2::data::XDataSequence > & xValueSeq, sal_Int32 nValueType ) { FSHelperPtr pFS = GetFS(); - pFS->startElement(FSNS(XML_c, XML_cat)); + pFS->startElement(FSNS(XML_c, nValueType)); OUString aCellRange = xValueSeq.is() ? xValueSeq->getSourceRangeRepresentation() : OUString(); - const Sequence< Sequence< OUString >> aFinalSplitSource = getSplitCategoriesList(aCellRange); + const Sequence< Sequence< OUString >> aFinalSplitSource = (nValueType == XML_cat) ? getSplitCategoriesList(aCellRange) : Sequence< Sequence< OUString>>(0); aCellRange = parseFormula( aCellRange ); if(aFinalSplitSource.getLength() > 1) @@ -2496,7 +2498,7 @@ void ChartExport::exportSeriesCategory( const Reference< chart2::data::XDataSequ pFS->endElement(FSNS(XML_c, XML_strRef)); } - pFS->endElement( FSNS( XML_c, XML_cat ) ); + pFS->endElement( FSNS( XML_c, nValueType ) ); } void ChartExport::exportSeriesValues( const Reference< chart2::data::XDataSequence > & xValueSeq, sal_Int32 nValueType ) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits