mirror of https://github.com/apache/poi.git
Bug 65016 - Creating a chart throws exception
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885700 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
5de42f466f
commit
825bebdbd1
|
@ -80,7 +80,9 @@ public interface XDDFDataSource<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (effectiveNumOfPoints == 0) {
|
if (effectiveNumOfPoints == 0) {
|
||||||
cache.unsetPtCount();
|
if (cache.isSetPtCount()) {
|
||||||
|
cache.unsetPtCount();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (cache.isSetPtCount()) {
|
if (cache.isSetPtCount()) {
|
||||||
cache.getPtCount().setVal(numOfPoints);
|
cache.getPtCount().setVal(numOfPoints);
|
||||||
|
|
|
@ -23,9 +23,17 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
|
|
||||||
import org.apache.poi.ooxml.POIXMLFactory;
|
import org.apache.poi.ooxml.POIXMLFactory;
|
||||||
import org.apache.poi.ooxml.POIXMLRelation;
|
import org.apache.poi.ooxml.POIXMLRelation;
|
||||||
|
import org.apache.poi.ss.util.CellRangeAddress;
|
||||||
|
import org.apache.poi.xssf.XSSFTestDataSamples;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.openxmlformats.schemas.drawingml.x2006.chart.CTChartSpace;
|
import org.openxmlformats.schemas.drawingml.x2006.chart.CTChartSpace;
|
||||||
|
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
|
||||||
class TestXDDFChart {
|
class TestXDDFChart {
|
||||||
@Test
|
@Test
|
||||||
void testConstruct() {
|
void testConstruct() {
|
||||||
|
@ -48,6 +56,39 @@ class TestXDDFChart {
|
||||||
assertEquals("rid2", ctChartSpace.getExternalData().getId());
|
assertEquals("rid2", ctChartSpace.getExternalData().getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test65016() throws IOException {
|
||||||
|
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("65016.xlsx")) {
|
||||||
|
XSSFSheet splitSheet = wb.getSheet("Splits");
|
||||||
|
|
||||||
|
XDDFChart chart = newXDDFChart();
|
||||||
|
XDDFChartLegend legend = chart.getOrAddLegend();
|
||||||
|
legend.setPosition(LegendPosition.BOTTOM);
|
||||||
|
|
||||||
|
// Use a category axis for the bottom axis.
|
||||||
|
XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM);
|
||||||
|
XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT);
|
||||||
|
leftAxis.setCrosses(AxisCrosses.AUTO_ZERO);
|
||||||
|
|
||||||
|
XDDFLineChartData data = (XDDFLineChartData) chart.createData(ChartTypes.LINE, bottomAxis, leftAxis);
|
||||||
|
|
||||||
|
// starting row 1 to include description
|
||||||
|
XDDFNumericalDataSource<Double> xs = XDDFDataSourcesFactory.fromNumericCellRange(splitSheet,
|
||||||
|
new CellRangeAddress(2, 100, 0, 0));
|
||||||
|
XDDFNumericalDataSource<Double> ys1 = XDDFDataSourcesFactory.fromNumericCellRange(splitSheet,
|
||||||
|
new CellRangeAddress(2, 100, 1, 1));
|
||||||
|
|
||||||
|
XDDFLineChartData.Series series = (XDDFLineChartData.Series) data.addSeries(xs, ys1);
|
||||||
|
assertEquals(series.categoryData.getPointCount(), xs.getPointCount());
|
||||||
|
|
||||||
|
chart.plot(data);
|
||||||
|
|
||||||
|
try (OutputStream out = new FileOutputStream("/tmp/chart20201220.xlsx")) {
|
||||||
|
wb.write(out);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private XDDFChart newXDDFChart() {
|
private XDDFChart newXDDFChart() {
|
||||||
XDDFChart xddfChart = new XDDFChart() {
|
XDDFChart xddfChart = new XDDFChart() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -67,4 +108,4 @@ class TestXDDFChart {
|
||||||
};
|
};
|
||||||
return xddfChart;
|
return xddfChart;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue