如何使用POI从excel 2007获取图表信息?

时间:2015-07-29 10:34:20

标签: java excel charts apache-poi xssf

我一直在尝试使用POI从excel 2007获取图表信息。

plotArea.getScatterChartList().size();

此方法一直返回0.

这是我的代码:

XSSFDrawing drawing = sheet.createDrawingPatriarch();
List<XSSFChart> chartsList = drawing.getCharts();

for (XSSFChart chart : chartsList){
    CTChart ctChart = chart.getCTChart();
    CTPlotArea plotArea = ctChart.getPlotArea();
    int size = plotArea.getScatterChartList().size();
    for (int j = 0; j<size; j++){
        List<CTScatterSer> seriesList = plotArea.getScatterChartList().get(j).getSerList();
        System.out.println("series size: " + seriesList.size());
        for (int i = 0; i<seriesList.size(); i++){
            CTScatterSer ser = seriesList.get(i);
            XmlObject serieX = ser.getXVal();
            XmlObject serieY = ser.getYVal();
            System.out.println("serie x: " + serieX.xmlText() + " serie y: " + serieY.xmlText());
            }
        }

}

1 个答案:

答案 0 :(得分:0)

有一个类似的问题,当我想得到我的plotArea的LineCharts列表时。

这对我有用: 不要使用

plotArea.getScatterChartList()

但是

plotArea.getScatterChartArray()

如果您这样做,您的代码将在

处执行例外
List<CTScatterSer> seriesList = plotArea.getScatterChartList().get(j).getSerList();

这里使用相同的解决方案,使用get ... Array()而不是get ... List()

List<CTScatterSer> seriesList = plotArea.getScatterChartArray().get(j).getSerArray();

由于某些原因我不明白得到... List()什么都不返回,但是get ... Array()工作正常。