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 持续更新),代码有问题的地方一起交流。

posted @ 2021-04-21 23:42  livekeys  阅读(880)  评论(0编辑  收藏  举报