如何使用Apache的POI以编程方式从Powerpoint演示文稿中读取图形值?
我有一个带有图表的Powerpoint演示文稿,我想使用Java和Apache的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 relations = slide.getRelations(); assert relations.size() == 3; final XSLFChart xslfChart = (XSLFChart)relations.get(2);
在调试器中检查xslfChart
变量时,您会注意到CTChartImpl chart
字段CTChartImpl chart
显示了基础XML数据,可能如下所示:
Sheet1!$E$8 y axis caption Sheet1!$A$9:$A$28 General 1200 1600 2000 ...
您可以从CTChart开始导航此树:
CTChart ctChart = xslfChart.getCTChart();
由于存在
标记,因此您可以调用关联的成员函数来访问它:
CTPlotArea plotArea = ctChart.getPlotArea();
从那里你应该能够导航
List ptList = plotArea.getScatterChartList().get(1) .getSerList().get(0) .getXVal() .getNumRef() .getNumCache() .getPtList();
现在您可以访问以下值:
ptList.get(0).getV();
参考
- OOXML-模式-1.1.jar
- ECMA-376