Java 如何使用ApachePOI检索power point幻灯片中的特定图表

Java 如何使用ApachePOI检索power point幻灯片中的特定图表,java,apache-poi,Java,Apache Poi,我有一个power point幻灯片,它有多个图表(多个条形图和折线图) 我需要使用ApachePOI库更新它们。到目前为止,我习惯于每张幻灯片有一张图表,我习惯于使用下面的代码来识别和更新这些值 XSLFChart chart = null; for(POIXMLDocumentPart part : mainSlide.getRelations()){ if(part instanceof XSLFChart){ chart = (XS

我有一个power point幻灯片,它有多个图表(多个条形图和折线图) 我需要使用ApachePOI库更新它们。到目前为止,我习惯于每张幻灯片有一张图表,我习惯于使用下面的代码来识别和更新这些值

    XSLFChart chart = null;
    for(POIXMLDocumentPart part : mainSlide.getRelations()){
        if(part instanceof XSLFChart){
            chart = (XSLFChart) part;
            break;
        }
    }
不知道如何识别特定的图表,看不到任何像我一样可以识别形状的方法

    for(XSLFSlide slide:ppt.getSlides()){
        for (XSLFShape shape : slide.getShapes()) {
            if (shapeName.equals(shape.getShapeName()))
                return slide;
        }

    }

我在powerpoint中为表格、文本框命名,并可以使用shapename在代码中检索,但在图表中看不到任何内容。有人能帮我吗?我在同事的帮助下想出了一个方法来识别它

首先在power point open layout>图表标题>上图中为图表指定标题,然后指定任何名称。要隐藏该标题,请保持字体大小较小,并使字体颜色为白色

在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;
}

我在同事的帮助下想出了一个方法来识别它

首先在power point open layout>图表标题>上图中为图表指定标题,然后指定任何名称。要隐藏该标题,请保持字体大小较小,并使字体颜色为白色

在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;
}