The source for the chart is on the 2nd sheet named “Données”, on the line 29 to 34.
chartIndex = charts.add(ChartType.COLUMN_3_D_STACKED, 2, 1, 21, 6);
chart = charts.get(chartIndex);
//Change TickLabels position from horizontal position to vertical one
chart.getCategoryAxis().getTickLabels().setRotationAngle(45);
//Setting TickLabels font size to 7
chart.getCategoryAxis().getTickLabels().getFont().setSize(7);
serieses = chart.getNSeries();
int ligneFinTabPourc = 34;
int ligneDebTabPourcData = 30;
String rangeValue = “Données!H”+ligneDebTabPourcData+":H" + ligneFinTabPourc;
serieIndex = serieses.add(rangeValue, true);
serie = serieses.get(serieIndex);
serie.getBorder().setVisible(false);
serie.setName(“Sous recommandation importance Majeur”);
serie.getDataLabels().setShowValue(false);
serie.getDataLabels().setShowPercentage(true);
serie.getArea().setForegroundColor(Color.getRed());
rangeValue = “Données!I”+ligneDebTabPourcData+":I" + ligneFinTabPourc;
serieIndex = serieses.add(rangeValue, true);
serie = serieses.get(serieIndex);
serie.getBorder().setVisible(false);
serie.setName(“Sous recommandation importance Haute”);
serie.getDataLabels().setShowValue(false);
serie.getDataLabels().setShowPercentage(true);
serie.getArea().setForegroundColor(Color.getOrange());
rangeValue = “Données!J”+ligneDebTabPourcData+":J" + ligneFinTabPourc;
serieIndex = serieses.add(rangeValue, true);
serie = serieses.get(serieIndex);
serie.getBorder().setVisible(false);
serie.setName(“Sous recommandation importance Moyenne”);
serie.getDataLabels().setShowValue(false);
serie.getDataLabels().setShowPercentage(true);
serie.getArea().setForegroundColor(Color.fromArgb(0, 176, 240));
rangeValue = “Données!K”+ligneDebTabPourcData+":K" + ligneFinTabPourc;
serieIndex = serieses.add(rangeValue, true);
serie = serieses.get(serieIndex);
serie.getBorder().setVisible(false);
serie.setName(“Sous recommandation importance Faible”);
serie.getDataLabels().setShowValue(false);
serie.getDataLabels().setShowPercentage(true);
serie.getArea().setForegroundColor(Color.fromArgb(146, 208, 80));
rangeValue = “Données!G”+ligneDebTabPourcData+":G" + ligneFinTabPourc;
serieIndex = serieses.add(rangeValue, true);
serie = serieses.get(serieIndex);
serie.getBorder().setVisible(false);
serie.setName(“Mission”);
serie.getDataLabels().setShowValue(true);
serie.getDataLabels().setShowPercentage(true);
serie.getDataLabels().getFont().setBold(true);
serie.getDataLabels().getFont().setSize(8);
serie.getDataLabels().getBorder().setVisible(false);
serie.getArea().setForegroundColor(Color.getTransparent());
serie.getArea().setBackgroundColor(Color.getTransparent());
serie.getArea().getFillFormat().setType(FillType.NONE);
serie.getBorder().setVisible(false);
rangeValue = “Données!A”+ligneDebTabPourcData+":A" + ligneFinTabPourc;
serieses.setCategoryData(rangeValue);
//permet d’évaluer les formules de la feuille excel pour pouvoir les afficher en label du graphe
workbook.calculateFormula();
//affichage des labels sauf la dernière “pile/stack”
DataLabels datalabels;
for (int i = 0; i < chart.getNSeries().getCount()-1; i++){
for (int j = 0 ; j < chart.getNSeries().get(i).getPoints().getCount() ; j++){
String temp = cells2.get((ligneDebTabPourcData+j-1),(i+2)).getStringValue();
if (!temp.equals(“0%”)){ //hidden labels at 0%
//Get the data labels in the data series of the first data point.
datalabels = chart.getNSeries().get(i).getPoints().get(j).getDataLabels();
//Change the text of the label. (ATTENTION cell A1 = 0,0)
datalabels.setText(temp);
datalabels.getFont().setColor(Color.getWhite());
datalabels.getFont().setBold(true);
datalabels.getFont().setSize(8);
//allow the display of the value
datalabels.setShowValue(true);
}
}
}
//Format color & background & …
chart.getPlotArea().getArea().setForegroundColor(Color.getWhite());
chart.getPlotArea().getBorder().setVisible(false);
chart.getChartArea().getArea().setForegroundColor(Color.getWhite());
chart.getWalls().getBorder().setVisible(false);
chart.getWalls().setFormatting(FormattingType.NONE);
chart.getFloor().setFormatting(FormattingType.NONE);
chart.getFloor().getBorder().setVisible(false);
chart.getValueAxis().getMajorGridLines().setVisible(false);
//max de l’axe à 100%
// chart.getPlotArea().getBorder().setAutoScaling(true);
chart.getValueAxis().setMaxValue(new Integer(1));
chart.setShowLegend(false);
chart.setShowDataTable(false);