如何使用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