gpt4 book ai didi

java - 如何在 Java 中使用 POI 和 org.openxmlformats 在 PPT 中为条形图添加数据标签

转载 作者:太空宇宙 更新时间:2023-11-04 10:57:43 27 4
gpt4 key购买 nike

我正在努力生成一个幻灯片演示文稿。每张幻灯片都有一个图表(条形图或饼图)。我正在使用 Apache POI 库和 org.openxmlformats。

我能够为图表绘制数据表,但无法为图表绘制数据标签。

实际输出-

请找到下面生成的没有数据标签的图表 - 奥 git _a预期输出- Img 1 without data label

代码-

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();

如果有人可以帮助我实现目标,那就太好了。提前致谢。

最佳答案

为Openxmlformats库添加数据标签可以通过CTDLbls类来实现。找到下面的代码片段 -

        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);

关于java - 如何在 Java 中使用 POI 和 org.openxmlformats 在 PPT 中为条形图添加数据标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47218804/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com