java - 如何使用 apache POI 检索 Power Point 幻灯片中的特定图表

标签 java apache-poi

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

    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 打开布局中的图表命名>图表标题>图表上方,然后给出任意名称。要隐藏该标题,请保持较小的字体大小并将字体颜色设置为白色。

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

关于java - 如何使用 apache POI 检索 Power Point 幻灯片中的特定图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36780129/

相关文章:

java - JMockit - 期望 - 匹配调用包含模拟对象作为参数的方法

java - 在 Java 中仅按小时和分钟比较 2 个日期?

java - 如何计算自定义纪元时间?不是 UNIX 时代

java - 如何在java中显示由JFileChooser选择的图像(所有主要格式)

java - 如何从 Spring 应用程序上下文 XML 访问数据库?

c# - NPOI 写入 XLS 而不是 XLSX

android - 在excel中复制具有范围的行公式

java - Apache POI下载后初始计算公式

java - 尝试将数据写入 JAVA 中的多个工作表时 XLSX 文件损坏

javascript - 是否可以使用 jquery/javascript 将 doc/docx 转换为 html?