Kaydet (Commit) 17c2b0af authored tarafından Balazs Varga's avatar Balazs Varga Kaydeden (comit) Markus Mohrhard

tdf#94502 Fix overlap export of Stacked Bar Chart to *.xlsx

Export the Overlap value with 100% for stacked charts, because the
default overlap value of the Bar/Column chart is 0% and LibreOffice
do nothing with the overlap value in Stacked Chart case, unlike the
MS Office.

Change-Id: If4e20b88c2b1180f68a8d2b610c407d674a8498b
Reviewed-on: https://gerrit.libreoffice.org/59448Reviewed-by: 's avatarMarkus Mohrhard <markus.mohrhard@googlemail.com>
Tested-by: Jenkins
üst 47b8e414
......@@ -104,6 +104,7 @@ public:
void testChartTitlePropertiesGradientFillXLSX();
void testChartTitlePropertiesBitmapFillXLSX();
void testBarChartDataPointPropXLSX();
void testDataseriesOverlapStackedChartXLSX();
void testAxisCharacterPropertiesXLSX();
void testTitleCharacterPropertiesXLSX();
void testPlotVisOnlyXLSX();
......@@ -186,6 +187,7 @@ public:
CPPUNIT_TEST(testChartTitlePropertiesGradientFillXLSX);
CPPUNIT_TEST(testChartTitlePropertiesBitmapFillXLSX);
CPPUNIT_TEST(testBarChartDataPointPropXLSX);
CPPUNIT_TEST(testDataseriesOverlapStackedChartXLSX);
CPPUNIT_TEST(testAxisCharacterPropertiesXLSX);
CPPUNIT_TEST(testTitleCharacterPropertiesXLSX);
CPPUNIT_TEST(testPlotVisOnlyXLSX);
......@@ -1603,6 +1605,27 @@ void Chart2ExportTest::testBarChartDataPointPropXLSX()
assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:dPt[2]/c:spPr/a:ln/a:solidFill/a:srgbClr", "val", "70ad47");
}
void Chart2ExportTest::testDataseriesOverlapStackedChartXLSX()
{
load("/chart2/qa/extras/data/xlsx/", "testDataseriesOverlapStackedChart.xlsx");
// test the overlap value of a simple Stacked Column Chart
uno::Reference< chart2::XChartDocument > xChartDoc = getChartDocFromSheet( 0, mxComponent );
checkSheetForGapWidthAndOverlap(xChartDoc, 100, 0);
// test the overlap value of a Percent Stacked Bar Chart
xChartDoc = getChartDocFromSheet( 1, mxComponent );
checkSheetForGapWidthAndOverlap(xChartDoc, 100, 35);
reload("Calc Office Open XML");
xChartDoc = getChartDocFromSheet( 0, mxComponent );
checkSheetForGapWidthAndOverlap(xChartDoc, 100, 100);
xChartDoc = getChartDocFromSheet( 1, mxComponent );
checkSheetForGapWidthAndOverlap(xChartDoc, 100, 100);
}
void Chart2ExportTest::testAxisCharacterPropertiesXLSX()
{
load("/chart2/qa/extras/data/xlsx/", "axis_character_properties.xlsx");
......
......@@ -1498,9 +1498,24 @@ void ChartExport::exportBarChart( const Reference< chart2::XChartType >& xChartT
if( aBarPositionSequence.getLength() )
{
sal_Int32 nOverlap = aBarPositionSequence[0];
pFS->singleElement( FSNS( XML_c, XML_overlap ),
// Stacked/Percent Bar/Column chart Overlap-workaround
// Export the Overlap value with 100% for stacked charts,
// because the default overlap value of the Bar/Column chart is 0% and
// LibreOffice do nothing with the overlap value in Stacked charts case,
// unlike the MS Office, which is interpreted differently.
if( ( mbStacked || mbPercent ) && nOverlap != 100 )
{
nOverlap = 100;
pFS->singleElement( FSNS( XML_c, XML_overlap ),
XML_val, I32S( nOverlap ),
FSEND );
}
else // Normal bar chart
{
pFS->singleElement( FSNS( XML_c, XML_overlap ),
XML_val, I32S( nOverlap ),
FSEND );
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment