关于生成PPT 内图表和读取PPT模版 更新图表数据一些随笔
生成
首先要有一个PPT对象和幻灯片对象 幻灯片对象可以获取也可以有PPT对象创建
XMLSlideShow xmlSlideShow
XSLFSlide slide = xmlSlideShow.getSlides().get(0);
由PPT对象创建一个chart
XSLFChart chart = xmlSlideShow.createChart();
然后就是在workbook中创建一个数据
具体结构都可以 可以类似下面
为什么要这个 因为这个chart内部是有一个工作簿的
将这个工作簿set到chart中
chart.setWorkbook(workbook);
接下来的都跟在工作簿中创建一个chart差不多了
用这个chart来创建轴什么的如:
// 图表头
chart.setTitleText("测试文本title");
// x坐标轴 底部
XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM);
// y轴 左侧
XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT);
// 创建图表数据,第一个指定是什么图表 柱状图或者饼图,折线图都ok,
XDDFChartData data = chart.createData(ChartTypes.BAR, bottomAxis, leftAxis);
然后就是从workbook中读取数据
// 底部类别的数据源,可以从数组读,也可以从指定一个excel范围
XDDFCategoryDataSource xddfCategoryDataSource = XDDFDataSourcesFactory.fromStringCellRange(sheet, new CellRangeAddress(1, 4, 0, 0));
// 这是第一个柱状图的数据源
XDDFNumericalDataSource<Double> doubleXDDFNumericalDataSource = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(1, 4, 1, 1));
就是指定数据读取范围
然后就是将数据加到上面生成的图表数据中
data.addSeries(xddfCategoryDataSource, doubleXDDFNumericalDataSource);
//然后就是数据加到图表中 我也不知道为什么还要加 不加就没有
chart.plot(data);
然后就是写到幻灯片对象中