我正在努力生成一个功率点演示。每张幻灯片都有一个图表(条形图或饼图)。我正在使用Apache POI Library和org.openxmlformats。
我可以为图形绘制数据表,但我无法为图形绘制数据标签。
实际输出 -
代码 -
CTChartSpace chartSpace = myXSLFChartShape.getMyXSLFChart().getChartSpace();
CTChart cTChart = chartSpace.addNewChart();
CTPlotArea cTPlotArea = cTChart.addNewPlotArea();
CTBarChart cTBarChart = cTPlotArea.addNewBarChart();
cTBarChart.addNewVaryColors().setVal(true);
cTBarChart.addNewBarDir().setVal(STBarDir.COL);
//int c = 0;
for (int r = 0; r < 2; r++) {
//c=1;
CTBarSer cTBarSer = cTBarChart.addNewSer();
CTStrRef cTStrRef = cTBarSer.addNewTx().addNewStrRef();
cTStrRef.setF("Label " + r);
cTStrRef.addNewStrCache().addNewPtCount().setVal(1);
CTStrVal cTStrVal = cTStrRef.getStrCache().addNewPt();
cTStrVal.setIdx(0);
cTStrVal.setV("Val" + r);
cTBarSer.addNewIdx().setVal(r);
cTStrRef = cTBarSer.addNewCat().addNewStrRef();
cTStrRef.setF("Categories");
cTStrRef.addNewStrCache().addNewPtCount().setVal(1);
for (int c = 0; c < 2; c++) {
cTStrVal = cTStrRef.getStrCache().addNewPt();
cTStrVal.setIdx(c);
cTStrVal.setV("Cat" + c);
}
CTNumRef cTNumRef = cTBarSer.addNewVal().addNewNumRef();
cTNumRef.setF("" + 0);
cTNumRef.addNewNumCache().addNewPtCount().setVal(1);
for (int c = 0; c < 2; c++) {
CTNumVal cTNumVal = cTNumRef.getNumCache().addNewPt();
cTNumVal.setIdx(c);
cTNumVal.setV("" + (10 * (c + 1)));
}
//c++;
}
// telling the BarChart that it has axes and giving them Ids
cTBarChart.addNewAxId().setVal(123456);
cTBarChart.addNewAxId().setVal(123457);
// cat axis
CTCatAx cTCatAx = cTPlotArea.addNewCatAx();
cTCatAx.addNewAxId().setVal(123456); // id of the cat axis
CTScaling cTScaling = cTCatAx.addNewScaling();
cTScaling.addNewOrientation().setVal(STOrientation.MIN_MAX);
cTCatAx.addNewDelete().setVal(false);
cTCatAx.addNewAxPos().setVal(STAxPos.B);
cTCatAx.addNewCrossAx().setVal(123457); // id of the val axis
cTCatAx.addNewTickLblPos().setVal(STTickLblPos.NEXT_TO);
// val axis
CTValAx cTValAx = cTPlotArea.addNewValAx();
cTValAx.addNewAxId().setVal(123457); // id of the val axis
cTScaling = cTValAx.addNewScaling();
cTScaling.addNewOrientation().setVal(STOrientation.MIN_MAX);
cTValAx.addNewDelete().setVal(false);
cTValAx.addNewAxPos().setVal(STAxPos.L);
cTValAx.addNewCrossAx().setVal(123456); // id of the cat axis
cTValAx.addNewTickLblPos().setVal(STTickLblPos.NEXT_TO);
cTValAx.addNewDispUnits();
// legend
CTLegend cTLegend = cTChart.addNewLegend();
cTLegend.addNewLegendPos().setVal(STLegendPos.R);
CTDTable c = cTPlotArea.addNewDTable();
c.addNewShowKeys();
如果有人可以帮助我实现目标,那将是件好事。
提前致谢。
答案 0 :(得分:0)
通过CTDLbls类可以实现为Openxmlformats库添加数据标签。找到以下代码段 -
CTDLbls dLbls = cTBarChart.addNewDLbls();
dLbls.addNewShowBubbleSize().setVal(false);
dLbls.addNewShowLegendKey().setVal(false);
dLbls.addNewShowCatName().setVal(false);
dLbls.addNewShowSerName().setVal(false);
dLbls.addNewShowPercent().setVal(false);
dLbls.addNewShowVal().setVal(true);