133 lines
5.3 KiB
Java
133 lines
5.3 KiB
Java
/* ====================================================================
|
|
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.xssf.usermodel.charts;
|
|
|
|
import junit.framework.TestCase;
|
|
import org.apache.poi.ss.usermodel.*;
|
|
import org.apache.poi.ss.usermodel.charts.*;
|
|
import org.apache.poi.ss.util.CellRangeAddress;
|
|
import org.apache.poi.xssf.XSSFTestDataSamples;
|
|
import org.apache.poi.xssf.usermodel.*;
|
|
|
|
import java.util.List;
|
|
|
|
/**
|
|
* Test get/set chart title.
|
|
*/
|
|
public class TestXSSFChartTitle extends TestCase {
|
|
private Workbook createWorkbookWithChart() {
|
|
Workbook wb = new XSSFWorkbook();
|
|
Sheet sheet = wb.createSheet("linechart");
|
|
final int NUM_OF_ROWS = 3;
|
|
final int NUM_OF_COLUMNS = 10;
|
|
|
|
// Create a row and put some cells in it. Rows are 0 based.
|
|
Row row;
|
|
Cell cell;
|
|
for (int rowIndex = 0; rowIndex < NUM_OF_ROWS; rowIndex++) {
|
|
row = sheet.createRow((short) rowIndex);
|
|
for (int colIndex = 0; colIndex < NUM_OF_COLUMNS; colIndex++) {
|
|
cell = row.createCell((short) colIndex);
|
|
cell.setCellValue(colIndex * (rowIndex + 1));
|
|
}
|
|
}
|
|
|
|
Drawing drawing = sheet.createDrawingPatriarch();
|
|
ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 5, 10, 15);
|
|
|
|
Chart chart = drawing.createChart(anchor);
|
|
ChartLegend legend = chart.getOrCreateLegend();
|
|
legend.setPosition(LegendPosition.TOP_RIGHT);
|
|
|
|
LineChartData data = chart.getChartDataFactory().createLineChartData();
|
|
|
|
// Use a category axis for the bottom axis.
|
|
ChartAxis bottomAxis = chart.getChartAxisFactory().createCategoryAxis(AxisPosition.BOTTOM);
|
|
ValueAxis leftAxis = chart.getChartAxisFactory().createValueAxis(AxisPosition.LEFT);
|
|
leftAxis.setCrosses(AxisCrosses.AUTO_ZERO);
|
|
|
|
ChartDataSource<Number> xs = DataSources.fromNumericCellRange(sheet, new CellRangeAddress(0, 0, 0, NUM_OF_COLUMNS - 1));
|
|
ChartDataSource<Number> ys1 = DataSources.fromNumericCellRange(sheet, new CellRangeAddress(1, 1, 0, NUM_OF_COLUMNS - 1));
|
|
ChartDataSource<Number> ys2 = DataSources.fromNumericCellRange(sheet, new CellRangeAddress(2, 2, 0, NUM_OF_COLUMNS - 1));
|
|
|
|
data.addSeries(xs, ys1);
|
|
data.addSeries(xs, ys2);
|
|
|
|
chart.plot(data, bottomAxis, leftAxis);
|
|
|
|
return wb;
|
|
}
|
|
|
|
/**
|
|
* Gets the first chart from the named sheet in the workbook.
|
|
*/
|
|
private XSSFChart getChartFromWorkbook(Workbook wb, String sheetName) {
|
|
Sheet sheet = wb.getSheet(sheetName);
|
|
if (sheet instanceof XSSFSheet) {
|
|
XSSFSheet xsheet = (XSSFSheet) sheet;
|
|
XSSFDrawing drawing = xsheet.getDrawingPatriarch();
|
|
if (drawing != null) {
|
|
List<XSSFChart> charts = drawing.getCharts();
|
|
if (charts != null && charts.size() > 0) {
|
|
return charts.get(0);
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public void testNewChart() {
|
|
Workbook wb = createWorkbookWithChart();
|
|
XSSFChart chart = getChartFromWorkbook(wb, "linechart");
|
|
assertNotNull(chart);
|
|
assertNull(chart.getTitle());
|
|
final String myTitle = "My chart title";
|
|
chart.setTitle(myTitle);
|
|
XSSFRichTextString queryTitle = chart.getTitle();
|
|
assertNotNull(queryTitle);
|
|
assertEquals(myTitle, queryTitle.toString());
|
|
}
|
|
|
|
public void testExistingChartWithTitle() {
|
|
Workbook wb = XSSFTestDataSamples.openSampleWorkbook("chartTitle_withTitle.xlsx");
|
|
XSSFChart chart = getChartFromWorkbook(wb, "Sheet1");
|
|
assertNotNull(chart);
|
|
XSSFRichTextString originalTitle = chart.getTitle();
|
|
assertNotNull(originalTitle);
|
|
final String myTitle = "My chart title";
|
|
assertFalse(myTitle.equals(originalTitle.toString()));
|
|
chart.setTitle(myTitle);
|
|
XSSFRichTextString queryTitle = chart.getTitle();
|
|
assertNotNull(queryTitle);
|
|
assertEquals(myTitle, queryTitle.toString());
|
|
}
|
|
|
|
public void testExistingChartNoTitle() {
|
|
Workbook wb = XSSFTestDataSamples.openSampleWorkbook("chartTitle_noTitle.xlsx");
|
|
XSSFChart chart = getChartFromWorkbook(wb, "Sheet1");
|
|
assertNotNull(chart);
|
|
assertNull(chart.getTitle());
|
|
final String myTitle = "My chart title";
|
|
chart.setTitle(myTitle);
|
|
XSSFRichTextString queryTitle = chart.getTitle();
|
|
assertNotNull(queryTitle);
|
|
assertEquals(myTitle, queryTitle.toString());
|
|
}
|
|
|
|
}
|