poi 操作 PPT,針對 PPTX--表格簡單操作


poi 操作 PPT,針對 PPTX--表格簡單操作

一些對於 PPT 內表格的簡單操作

1、對模板 ppt 內的表格進行操作

對下面幻燈片中表格的表格進行操作,對第三行中各單元格進行不同的操作

幻燈片修改前

代碼


@Test
public void testDemo10() {
    PPTUtil pptUtil = new PPTUtil(filePath);
    XSLFTable table = pptUtil.getTableFromSlide(pptUtil.getSlides().get(1));    // 從指定的幻燈片中獲取表格元素
    XSLFTableRow tableRow = pptUtil.getTableRows(table).get(2); // 獲取第三行

    pptUtil.setCellColor(tableRow.getCells().get(0), "#ff0000");    // 字體顏色
    pptUtil.setCellFontfamily(tableRow.getCells().get(1), "宋體");    // 字體
    pptUtil.setCellFontWesternFontfamily(tableRow.getCells().get(1), "宋體"); // 西文字體
    pptUtil.setCellFontSize(tableRow.getCells().get(2), "18");  // 字體大小
    pptUtil.setCellFillColor(tableRow.getCells().get(3), "#ff0000");    // 單元格填充顏色
    pptUtil.setCellBold(tableRow.getCells().get(4), true);  // 單元格文本是否加粗
    pptUtil.setCellStrike(tableRow.getCells().get(5), true);    // 單元格文本是否加刪除線
    pptUtil.setCellItalic(tableRow.getCells().get(6), true);    // 單元格文本是否斜體
    pptUtil.setCellUnderline(tableRow.getCells().get(7), true); // 單元格文本是否加下划線
    pptUtil.setCellHorizontalAlign(tableRow.getCells().get(8), "left"); // 單元格水平對齊方式
    pptUtil.setCellVerticalAlign(tableRow.getCells().get(9), "top");    // 單元格垂直對齊方式

    // 在最后 一個單元格中添加一個段落
    XSLFTextParagraph textParagraph = pptUtil.addCellParagraph(tableRow.getCells().get(10));   
    // 對新添加的段落添加文字
    pptUtil.addParagraphText(textParagraph, true, "9999");

    // 保存設置后的內容
    pptUtil.writePPT(exportPath);
}

修改后的幻燈片

2、場景應用

(給幻燈片表格中第4行數據值最大兩個單元格進行填充)

提供以下幻燈片

代碼


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

    XSLFTable table = pptUtil.getTableFromSlide(pptUtil.getSlides().get(2));    // 獲取第三頁幻燈片
    XSLFTableRow tableRow = pptUtil.getTableRows(table).get(2); // 獲取第

    List<XSLFTableCell> tableCols = pptUtil.getTableColsByRow(table, 2, 1); // 獲取表格中第2行從第1列開始到最后一列的單元格列表

    List<Map<String, Object>> maps = new ArrayList<Map<String, Object>>();  // 將單元格封裝為 mapList,cell 的對應的值為單元格對象,text 對應的值是數值
    for (XSLFTableCell tableCol : tableCols) {
        Map<String, Object> tempMap = new HashMap<String, Object>();
        tempMap.put("cell", tableCol);
        tempMap.put("text", tableCol.getText().replace("%", ""));
        maps.add(tempMap);
    }

    // 獲取封裝好的 mapList 中 text 最大的 2 個值的新的 mapList
    List<Map<String, Object>> maxValueList = SupportUtil.getMaxValueList(maps, "text", 2);

    // 對獲取到的最大值的新 mapList 中獲取單元格,並對單元格填充紅色
    for (Map<String, Object> map : maxValueList) {
        pptUtil.setCellFillColor((XSLFTableCell) map.get("cell"), "#ff0000");
    }

    pptUtil.writePPT(exportPath);
}

設置后的幻燈片

同樣的,我還添加了一下如下方法

1、getMinValueList(List<Map<String, Object>> sourMaps, String keyWord, int num):獲取 maps 中根據 keyWord 所對應的值的最小的 map 列表
2、getGtValList(List<Map<String, Object>> sourMaps, String keyWord, String value, Boolean isEqual):獲取 maps 中根據 keyWord 所對應的值的大於(大於等於)value 值的 map 列表(isEqual 用於指定是否等於)
3、getLtValList(List<Map<String, Object>> sourMaps, String keyWord, String value, Boolean isEqual):獲取 maps 中根據 keyWord 所對應的值的小於(小於等於)value 值的 map 列表(isEqual 用於指定是否等於)
4、getEqValList(List<Map<String, Object>> sourMaps, String keyWord, String value):獲取 maps 中根據 keyWord 所對應的值的等於 value 值的 map 列表

注: 本博客代碼只為學習交流分享

PPTUtil 工具地址:https://gitee.com/livekeys/officetool.git
(PPTUtil 持續更新),代碼有問題的地方一起交流。


免責聲明!

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



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