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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值