123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- /*
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ====================================================================
- */
- package org.apache.poi.xddf.usermodel.chart;
-
- import static org.junit.jupiter.api.Assertions.assertEquals;
- import static org.junit.jupiter.api.Assertions.assertNotNull;
-
- import org.apache.poi.ooxml.POIXMLFactory;
- 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.openxmlformats.schemas.drawingml.x2006.chart.CTChartSpace;
-
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
-
- class TestXDDFChart {
- @Test
- void testConstruct() {
- // minimal test to cause ooxml-lite to include all the classes in poi-ooxml-lite
- XDDFChart xddfChart = newXDDFChart();
-
- assertNotNull(xddfChart.getCTChartSpace());
- assertNotNull(xddfChart.getCTPlotArea());
- }
-
- @Test
- void testSetExternalId() {
- XDDFChart xddfChart = newXDDFChart();
- CTChartSpace ctChartSpace = xddfChart.getCTChartSpace();
-
- xddfChart.setExternalId("rid1");
- assertEquals("rid1", ctChartSpace.getExternalData().getId());
-
- xddfChart.setExternalId("rid2");
- 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() {
- XDDFChart xddfChart = new XDDFChart() {
- @Override
- protected POIXMLRelation getChartRelation() {
- return null;
- }
-
- @Override
- protected POIXMLRelation getChartWorkbookRelation() {
- return null;
- }
-
- @Override
- protected POIXMLFactory getChartFactory() {
- return null;
- }
- };
- return xddfChart;
- }
- }
|