|
|
@@ -0,0 +1,132 @@ |
|
|
|
/* ==================================================================== |
|
|
|
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()); |
|
|
|
} |
|
|
|
|
|
|
|
} |