gpt4 book ai didi

java - 如何使用 Apache POI 以编程方式从 Powerpoint 演示文稿中读取图形值?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:18 26 4
gpt4 key购买 nike

我有一个带有图形的 Powerpoint 演示文稿,我想使用 Java 和 Apache's POI 访问它.当我使用 Powerpoint 编辑图表数据时,会打开一个包含这些值的 Excel 窗口,我想从我的 Java 应用程序访问这些值。

如何以编程方式访问图形的值?

最佳答案

在第一部分,我们需要导航到 XSLFChart对象:

final String filename = "resources/fptbenchmark/Powerpoint Import.pptx";
final XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(filename));

final XSLFSlide slide = ppt.getSlides()[5];

幻灯片包含不同的部分 ( getRelations() ) 其中之一应该包含 XSLFChart :

final List<POIXMLDocumentPart> relations = slide.getRelations();
assert relations.size() == 3;

final XSLFChart xslfChart = (XSLFChart)relations.get(2);

当您检查 xslfChart您会注意到调试器中的变量那场CTChartImpl chart显示底层 XML 数据,其中可能看起来像这样:

<xml-fragment xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<c:autoTitleDeleted val="0"/>
<c:plotArea>
<c:scatterChart>
<c:ser>
<c:tx>
<c:strRef>
<c:f>Sheet1!$E$8</c:f>
<c:strCache>
<c:ptCount val="1"/>
<c:pt idx="0">
<c:v>y axis caption</c:v>
</c:pt>
</c:strCache>
</c:strRef>
</c:tx>
<c:xVal>
<c:numRef>
<c:f>Sheet1!$A$9:$A$28</c:f>
<c:numCache>
<c:formatCode>General</c:formatCode>
<c:ptCount val="20"/>
<c:pt idx="0">
<c:v>1200</c:v>
</c:pt>
<c:pt idx="1">
<c:v>1600</c:v>
</c:pt>
<c:pt idx="2">
<c:v>2000</c:v>
</c:pt>
...

您可以从 CTChart 开始浏览这棵树:

CTChart ctChart = xslfChart.getCTChart();

因为有一个<c:plotArea>标签,你调用关联的成员函数来访问它:

CTPlotArea plotArea = ctChart.getPlotArea();

从那里你应该能够导航

List<CTNumVal> ptList = plotArea.getScatterChartList().get(1)
.getSerList().get(0)
.getXVal()
.getNumRef()
.getNumCache()
.getPtList();

现在您可以访问这些值:

ptList.get(0).getV();

引用资料

关于java - 如何使用 Apache POI 以编程方式从 Powerpoint 演示文稿中读取图形值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20324586/

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