poi 操作 PPT,針對 PPTX--圖表篇


poi 操作 PPT,針對 PPTX--圖表篇

接下來對 ppt 內的圖表進行操作,替換圖表的數據

原幻燈片樣式

1、讀取 PPT 模板


String filePath = "C:\\Users\\HONOR\\Desktop\\xsmb.pptx";
String exportPath = "C:\\Users\\HONOR\\Desktop\\a.pptx";


// 讀取 ppt 模板
PPTUtil pptUtil = new PPTUtil(filePath);

2、替換標題


@Test
public void testDemo() {
    // 讀取 ppt
    PPTUtil pptUtil = new PPTUtil(filePath);

    // 獲取第二頁幻燈片中的第一個圖表,該幻燈片中只有一個圖表
    XSLFChart chart = pptUtil.getChartFromSlide(pptUtil.getSlides().get(1));

    // 獲取標題
    XSLFTextShape titleShape = chart.getTitleShape();

    // 打印該圖表的標題
    System.out.println(titleShape.getText());

    // 重新設置圖表標題
    XSLFTextParagraph textParagraph = pptUtil.setChartTitle(titleShape, false);
    pptUtil.addParagraphText(textParagraph, false, "銷售統計表1-修改標題后", true, "微軟雅黑", "微軟雅黑", "18");

    // 寫入到新的文件
    pptUtil.writePPT(exportPath);
}

輸出:


銷售統計表1

設置后效果

4、替換圖表數據


@Test
public void testDemo() {
    PPTUtil pptUtil = new PPTUtil(filePath);

    // 從第二張幻燈片中獲取第一個圖表
    XSLFChart chart = pptUtil.getChartFromSlide(pptUtil.getSlides().get(1));

    // 存放數據
    List<List<String>> data = new ArrayList<List<String>>();
    List<String> tempData1 = new ArrayList<String>();
    List<String> tempData2 = new ArrayList<String>();
    // 構造數據
    for (int i = 0; i < 11; i++) {
        tempData1.add("標簽" + (i + 1));
        tempData2.add((i + 1) + "");
    }
    data.add(tempData1);
    data.add(tempData2);

    // 替換第一個柱狀圖的數據
    pptUtil.updateBarCat(pptUtil.getBarChartFromChart(chart).get(0), 0, data);  // 替換 cat
    pptUtil.updateBarDataCache(pptUtil.getBarChartFromChart(chart).get(0), 0, tempData2);   // 替換數據緩存

    // 替換第二個柱狀圖的數據
    pptUtil.updateBarCat(pptUtil.getBarChartFromChart(chart).get(0), 1, data);  // 替換 cat
    pptUtil.updateBarDataCache(pptUtil.getBarChartFromChart(chart).get(0), 1, tempData2);   // 替換數據緩存

    // 替換第一個折線圖的數據
    pptUtil.updateLineCat(pptUtil.getLineChartFromChart(chart).get(0), 0, data);    // 替換 cat
    pptUtil.updateLineDataCache(pptUtil.getLineChartFromChart(chart).get(0), 0, tempData2); // 替換數據緩存

    // 替換第二個折線圖的數據
    pptUtil.updateLineCat(pptUtil.getLineChartFromChart(chart).get(0), 1, data);    // 替換 cat
    pptUtil.updateLineDataCache(pptUtil.getLineChartFromChart(chart).get(0), 1, tempData2); // 替換數據緩存


    pptUtil.writePPT(exportPath);
}

替換后效果

這里強調一下,如下圖,因為兩個柱狀圖是屬於同一個y軸的,所以 pptUtil.getBarChartFromChart(chart).get(0) 方法就能獲取到兩個柱狀圖,只是這兩個柱狀圖是屬於同一個柱狀圖 barChart 里面的不同 serials(系列) 里面。

:如果兩個柱狀圖屬於兩個不同的軸,那么這兩個柱狀圖就在兩個不同的 barChart 里面。

PPTUtil 工具地址:https://gitee.com/livekeys/officetool.git
(目前只支持更新餅圖,折線圖,柱狀圖,雷達圖,使用方法后續繼續更新),有問題請聯系我。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM