poi生成饼状图时如何设置百分比的小数位数和饼块颜色?
代码如下
for (int i = 0; i < assessments.size(); i++) {
Assessment assessment1 = assessments.get(i);
int numberLine = 0;
numberLine = newNameList1.size();
//绘制柱状图
XSSFDrawing pieChartDrawing = sheet.createDrawingPatriarch();
int number4 = (i+1) * numberLine;
int number5 = i * numberLine;
int newLineNumber = number + 5;
int newNumber1 = number+35;
XSSFClientAnchor pieChartAnchor = pieChartDrawing.createAnchor(0, 0, 0, 0, number5, newLineNumber, number4, newNumber1);
XSSFChart pieChart = pieChartDrawing.createChart(pieChartAnchor);
pieChart.setTitleText(assessment1.getEmployeeName()+"得分详情");
// 标题是否覆盖图表
pieChart.setTitleOverlay(false);
// 图例位置
XDDFChartLegend pieChatLegend = pieChart.getOrAddLegend();
pieChatLegend.setPosition(LegendPosition.TOP_RIGHT);
XDDFCategoryDataSource pieChartCountries = XDDFDataSourcesFactory.fromArray(newNames);
int row3 = 3 + i;
int newFinalLine = 1+numberLine;
XDDFNumericalDataSource<Double> pieChartValues = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(row3, row3, 2, newFinalLine));
XDDFChartData pieData = pieChart.createData(ChartTypes.PIE, null, null);
pieData.setVaryColors(true);
pieData.addSeries(pieChartCountries
, pieChartValues);
pieChart.plot(pieData);
CTDLbls dLbls = pieChart.getCTChart().getPlotArea().getPieChartArray(0).getSerArray(0).addNewDLbls();
dLbls.addNewShowVal().setVal(false);
dLbls.addNewShowLegendKey().setVal(false);
dLbls.addNewShowCatName().setVal(false);// 类别名称
dLbls.addNewShowSerName().setVal(false);
dLbls.addNewShowPercent().setVal(true);// 百分比
dLbls.addNewShowLeaderLines().setVal(true);// 引导线
dLbls.setSeparator("\n");// 分隔符为分行符
dLbls.addNewDLblPos().setVal(STDLblPos.Enum.forString("inEnd"));// 数据标签内
}
导出来后如下图