Browse Source

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
tags/REL_3_12_BETA1
Dominik Stadler 9 years ago
parent
commit
e224d82fe5

+ 8
- 9
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java 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);
}

+ 22
- 0
src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFChartAxis.java 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));
}
}

BIN
test-data/spreadsheet/57362.xlsx View File


Loading…
Cancel
Save