Bug 57362: Properly initialize chart axis when loading a workbook which already contains a chart.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1647317 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Dominik Stadler 2014-12-22 14:16:23 +00:00
parent c116c2b2e7
commit e224d82fe5
3 changed files with 30 additions and 9 deletions

View File

@ -79,14 +79,13 @@ public final class XSSFChart extends POIXMLDocumentPart implements Chart, ChartA
*/
private CTChart chart;
List<XSSFChartAxis> axis;
List<XSSFChartAxis> axis = new ArrayList<XSSFChartAxis>();
/**
* Create a new SpreadsheetML chart
*/
protected XSSFChart() {
super();
axis = new ArrayList<XSSFChartAxis>();
createChart();
}
@ -227,13 +226,13 @@ public final class XSSFChart extends POIXMLDocumentPart implements Chart, ChartA
return categoryAxis;
}
public List<? extends XSSFChartAxis> getAxis() {
if (axis.isEmpty() && hasAxis()) {
parseAxis();
}
return axis;
}
public List<? extends XSSFChartAxis> getAxis() {
if (axis.isEmpty() && hasAxis()) {
parseAxis();
}
return axis;
}
public XSSFManualLayout getManualLayout() {
return new XSSFManualLayout(this);
}

View File

@ -17,9 +17,14 @@
package org.apache.poi.xssf.usermodel.charts;
import java.util.List;
import junit.framework.TestCase;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.charts.*;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.xssf.usermodel.*;
public final class TestXSSFChartAxis extends TestCase {
@ -111,4 +116,21 @@ public final class TestXSSFChartAxis extends TestCase {
axis.setMinorTickMark(AxisTickMark.CROSS);
assertEquals(AxisTickMark.CROSS, axis.getMinorTickMark());
}
public void testGetChartAxisBug57362() {
//Load existing excel with some chart on it having primary and secondary axis.
final Workbook workbook = XSSFTestDataSamples.openSampleWorkbook("57362.xlsx");
final Sheet sh = workbook.getSheetAt(0);
final XSSFSheet xsh = (XSSFSheet) sh;
final XSSFDrawing drawing = xsh.createDrawingPatriarch();
final XSSFChart chart = drawing.getCharts().get(0);
final List<? extends XSSFChartAxis> axisList = chart.getAxis();
assertEquals(4, axisList.size());
assertNotNull(axisList.get(0));
assertNotNull(axisList.get(1));
assertNotNull(axisList.get(2));
assertNotNull(axisList.get(3));
}
}

Binary file not shown.