Bug 64256 - Chart PIE
Summary: Chart PIE
Status: RESOLVED INFORMATIONPROVIDED
Alias: None
Product: POI
Classification: Unclassified
Component: XSSF (show other bugs)
Version: 4.1.x-dev
Hardware: PC Linux
: P2 normal (vote)
Target Milestone: ---
Assignee: POI Developers List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-03-22 16:19 UTC by Francesco Baldi
Modified: 2022-08-15 16:34 UTC (History)
0 users



Attachments
image bugs and image google sheets (61.74 KB, application/vnd.rar)
2020-03-22 16:19 UTC, Francesco Baldi
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Francesco Baldi 2020-03-22 16:19:55 UTC
Created attachment 37116 [details]
image bugs and image google sheets

By opening an xlsx file generated with apache poi-ooxml 4.1.2, it enters recovery mode by deleting the pie chart.
Instead on google sheets it works!!!!!

Bye
Francesco
Comment 1 Francesco Baldi 2020-03-23 09:44:22 UTC
this is the code implemented:


private Integer generateChart(XSSFSheet worksheet, String seriesChart, String keyChart, ExcelChart excelChart, Integer indexRow, String xAxis) {
		// ExcelChart
		// excelChart=sheetData.getClass().getAnnotation(ExcelChart.class)
		XSSFDrawing drawing = worksheet.createDrawingPatriarch();
		Integer startChart = indexRow;
		indexRow += excelChart.sizeRow();
		logger.debug("Start Chart: " + startChart);
		XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, startChart, excelChart.sizeColumn(), indexRow);

		XSSFChart chart = drawing.createChart(anchor);

		XDDFChartLegend legend = chart.getOrAddLegend();
		legend.setPosition(excelChart.legendPosition());
		XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(excelChart.categoryAxis());
		XDDFValueAxis leftAxis = chart.createValueAxis(excelChart.valueAxis());
		logger.debug("-----------------xAxis: " + xAxis);
		XDDFDataSource<String> xs = XDDFDataSourcesFactory.fromStringCellRange(worksheet, CellRangeAddress.valueOf(xAxis));
		XDDFChartData chartData = chart.createData(excelChart.chartTypes(), bottomAxis, leftAxis);
		XDDFChartData.Series series = null;
		logger.debug("------------seriesChart: " + seriesChart);
		series = chartData.addSeries(xs, XDDFDataSourcesFactory.fromNumericCellRange(worksheet, CellRangeAddress.valueOf(seriesChart)));
		series.setTitle(keyChart, null);
		series.setShowLeaderLines(true);

		chartData.setVaryColors(true);

		chart.plot(chartData);

		return indexRow;

	}
Comment 2 Alain Fagot Bearez 2021-01-23 03:01:39 UTC
You can refer to the newly introduced example manipulating Doughnut chart:
src/examples/src/org/apache/poi/examples/xslf/DoughnutChartFromScratch.java

Like the Doughnut chart, the Pie chart chart does not have category axis and value axes. if you remove your lines:

		XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(excelChart.categoryAxis());
		XDDFValueAxis leftAxis = chart.createValueAxis(excelChart.valueAxis());

your example should produce a file which will not be cleaned by PowerPoint upon opening it.

I hope we can now close this issue.