如何使用apache POI在power point slide中检索特定图表

时间:2016-04-21 20:46:40

标签: java apache-poi

我有一个带有多个图表的动力点幻灯片(多个条形图和折线图) 我需要使用apache POI库更新它们。到目前为止,我曾经每张幻灯片都有一张图表,我曾经使用下面的代码来获取图表来识别和更新这些值。

appModule.controller('mainController', function($scope) {
  var vm = this;
  vm.selected = 'red';
  vm.options = ['red', 'blue', 'yellow', 'green'];
  vm.test = function() {
    alert('Changed');
  }
});

不确定如何识别特定图表不要看到任何方法,比如我可以识别出形状

    XSLFChart chart = null;
    for(POIXMLDocumentPart part : mainSlide.getRelations()){
        if(part instanceof XSLFChart){
            chart = (XSLFChart) part;
            break;
        }
    }

我给powerpoint中的table,textbox命名,并且可以使用shapename在代码中检索但是没有看到任何图表。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我找到了一种在办公室伙伴的帮助下识别出来的方法。

首先给出电源点开放布局图表的标题>图表标题>上面的图表然后给出任何名称。隐藏该标题使字体大小变小,并将字体颜色设置为白色。

在java中添加代码,如下所示

private XSLFChart getChartObject(XSLFSlide mainSlide,String chartName) throws IOException
{
    XSLFChart chart = null;
    for(POIXMLDocumentPart part : mainSlide.getRelations()){
        if(part instanceof XSLFChart){
            chart = (XSLFChart) part;
            if(chart.getCTChart().getTitle()!=null && chart.getCTChart().getTitle().getTx()!=null){

            if(chart.getCTChart().getTitle().getTx().getRich().getPList().get(0).getRList().get(0).getT().equals(chartName))
                break;
            }
        }
    }
    return chart;
}