#遇到一个需求就是,给一个固定模板往固定位置填写代码

<dependency><!-- LEVEL-PLT:操作EXCEL所需要的包 --><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.13</version>
</dependency>
<dependency><!-- LEVEL-PLT:提供对office的word,excel,visio,ppt的操作 --><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.13</version>
</dependency>


图片的替换字段要用插入文本框插入,而且不能复制,只能一个一个插入
#代码

package com.baic.util;import org.apache.poi.sl.usermodel.SlideShow;
import org.apache.poi.xslf.usermodel.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import com.ebon.framework.util.NullUtil;import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.io.*;
import java.util.List;
import java.util.Map;/*** 读取ppt模板替换模板指定数据* * @author wuyahui* */
public class PPTToNewPPTUtils {private static Logger logger = LoggerFactory.getLogger(PPTToNewPPTUtils.class);public static void changPPT(String inputUrl,String outputUrl, Map<String, String> textMap) {try {//读取模板pptSlideShow ppt = new XMLSlideShow(new FileInputStream(new File(inputUrl)));//提取文本信息List<XSLFSlide> slides = ppt.getSlides();for (XSLFSlide slide : slides) {List<XSLFShape> shapes = slide.getShapes();for(int i=0;i<shapes.size();i++){Rectangle2D anchor = shapes.get(i).getAnchor();if (shapes.get(i) instanceof XSLFTextBox) {XSLFTextBox txShape = (XSLFTextBox) shapes.get(i);if (txShape.getText().contains("{rName}")) {// 替换文字内容.用TextRun获取替换的文本来设置样式if (NullUtil.isNotNull(textMap.get("rName"))) {txShape.setText(txShape.getText().replace("{rName}", textMap.get("rName")));} else {txShape.setText(txShape.getText().replace("{rName}", ""));}txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(10d); // 设置字体大小}if (txShape.getText().contains("{pName}")) {// 替换文字内容.用TextRun获取替换的文本来设置样式if (NullUtil.isNotNull(textMap.get("pName"))) {txShape.setText(txShape.getText().replace("{pName}", textMap.get("pName")));} else {txShape.setText(txShape.getText().replace("{pName}", ""));}txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(10d); // 设置字体大小}if (txShape.getText().contains("{code}")) {// 替换文字内容.用TextRun获取替换的文本来设置样式if (NullUtil.isNotNull(textMap.get("code"))) {txShape.setText(txShape.getText().replace("{code}", textMap.get("code")));} else {txShape.setText(txShape.getText().replace("{code}", ""));}txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(10d); // 设置字体大小}if (txShape.getText().contains("{tCode}")) {// 替换文字内容.用TextRun获取替换的文本来设置样式if (NullUtil.isNotNull(textMap.get("tCode"))) {txShape.setText(txShape.getText().replace("{tCode}", textMap.get("tCode")));} else {txShape.setText(txShape.getText().replace("{tCode}", ""));}txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(10d); // 设置字体大小}if (txShape.getText().contains("{version}")) {// 替换文字内容.用TextRun获取替换的文本来设置样式if (NullUtil.isNotNull(textMap.get("version"))) {txShape.setText(txShape.getText().replace("{version}", textMap.get("version")));} else {txShape.setText(txShape.getText().replace("{version}", ""));}txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(10d); // 设置字体大小}if (txShape.getText().contains("{name}")) {// 替换文字内容.用TextRun获取替换的文本来设置样式if (NullUtil.isNotNull(textMap.get("name"))) {txShape.setText(txShape.getText().replace("{name}", textMap.get("name")));} else {txShape.setText(txShape.getText().replace("{name}", ""));}txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(30d); // 设置字体大小txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontFamily("微软雅黑 (标题)"); // 字体格式txShape.getTextParagraphs().get(0).getTextRuns().get(0).setBold(true); // 加粗txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontColor(new Color(0,151,224)); // 字体颜色txShape.setHorizontalCentered(true); //  置中}if (txShape.getText().contains("{name1}")) {// 替换文字内容.用TextRun获取替换的文本来设置样式if (NullUtil.isNotNull(textMap.get("name1"))) {txShape.setText(txShape.getText().replace("{name1}", textMap.get("name1")));   } else {txShape.setText(txShape.getText().replace("{name1}", ""));}txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(12d); // 设置字体大小}if (txShape.getText().contains("{name2}")) {// 替换文字内容.用TextRun获取替换的文本来设置样式if (NullUtil.isNotNull(textMap.get("name2"))) {txShape.setText(txShape.getText().replace("{name2}", textMap.get("name2")));} else {txShape.setText(txShape.getText().replace("{name2}", ""));}txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(12d); // 设置字体大小}if (txShape.getText().contains("{name3}")) {// 替换文字内容.用TextRun获取替换的文本来设置样式if (NullUtil.isNotNull(textMap.get("name3"))) {txShape.setText(txShape.getText().replace("{name3}", textMap.get("name3")));} else {txShape.setText(txShape.getText().replace("{name3}", ""));}txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(12d); // 设置字体大小}if (txShape.getText().contains("{name4}")) {// 替换文字内容.用TextRun获取替换的文本来设置样式if (NullUtil.isNotNull(textMap.get("name4"))) {txShape.setText(txShape.getText().replace("{name4}", textMap.get("name4")));} else {txShape.setText(txShape.getText().replace("{name4}", ""));}txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(12d); // 设置字体大小}if (txShape.getText().contains("{name5}")) {// 替换文字内容.用TextRun获取替换的文本来设置样式if (NullUtil.isNotNull(textMap.get("name5"))) {txShape.setText(txShape.getText().replace("{name5}", textMap.get("name5")));} else {txShape.setText(txShape.getText().replace("{name5}", ""));}txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(12d); // 设置字体大小}if (txShape.getText().contains("{name6}")) {// 替换文字内容.用TextRun获取替换的文本来设置样式if (NullUtil.isNotNull(textMap.get("name6"))) {txShape.setText(txShape.getText().replace("{name6}", textMap.get("name6")));} else {txShape.setText(txShape.getText().replace("{name6}", ""));}txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(12d); // 设置字体大小}if (txShape.getText().contains("{name7}")) {// 替换文字内容.用TextRun获取替换的文本来设置样式if (NullUtil.isNotNull(textMap.get("name7"))) {txShape.setText(txShape.getText().replace("{name7}", textMap.get("name7")));} else {txShape.setText(txShape.getText().replace("{name7}", ""));}txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(12d); // 设置字体大小}if (txShape.getText().contains("{date}")) {// 替换文字内容.用TextRun获取替换的文本来设置样式if (NullUtil.isNotNull(textMap.get("date"))) {txShape.setText(txShape.getText().replace("{date}", textMap.get("date")));    } else {txShape.setText(txShape.getText().replace("{date}", ""));}txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(12d); // 设置字体大小}}}}FileOutputStream outputStreams = new FileOutputStream(new File(outputUrl));ppt.write(outputStreams);outputStreams.close();}catch (IOException e) {logger.error("交付物ppt模板封面生成", e);}}
}

POI PPT模板字段替换相关推荐

  1. 「实战教程」如何使用POI读取模板PPT填充数据并拼接至目标文件

    文章目录 一.PPT文件格式介绍 1.PPT文件格式的概述 2.HSLF和XSLF的区别 3.如何选择合适的POI类库 二.SlideShow 三.读取PPT文件 1. 加载PPT文件 2. 获取PP ...

  2. 读取PPT模板替换数据生成PDF报表

    一.项目背景 因本人的公司是做短信通信服务的,所以客户需要将短信的发送量,按照他们给定的PPT样例模板,来生成PDF报表数据,即PPT的样式,数据如何展示都是规定好了的,而我需要做的就是将真实的数据, ...

  3. POI Word 模板 文字 图片 替换

    POI Word 模板 文字 图片 替换 博客分类: java poi POIjavaWOrd  实验环境:POI3.7+Word2007 Word模板: 替换后效果: 代码: 1.入口文件 Java ...

  4. java使用poi在word模板中替换柱状图、折线图、饼图、表格、文本、图片

    介绍 java使用poi在word模板中替换柱状图.折线图.饼图.表格.文本.图片 软件架构 安装教程 环境搭建:jdk1.8.0_291.maven1.8.0_291 IDEA工具:IntelliJ ...

  5. freamarker 模板中空格_高端商务公司介绍PPT模板

    每日免费-每天分享一套精美模板,建议大家将"老油条PPT"设置为置顶. 本套模板免费获取方式: 关注"老油条PPT"公众号获取下载链接.链接只有24小时有效,逾 ...

  6. ​马卡龙配色你好夏天PPT模板​

    马卡龙配色你好夏天PPT模板,其中包含27张小清新的夏天主题幻灯片模板,矢量设计,可爱马卡龙配色,简约小清新,动态播放,非常适合用于个人简历,自我介绍,求职应聘等等,这款模板使用简单,只需要替换其中少 ...

  7. 蓝色星空背景互联网网络科技PPT模板

    今天为大家推荐一套蓝色星空背景互联网网络科技PPT模板.该模板使用了深蓝色星空图片作为背景,作品中使用了很多的图表元素,比如有时间轴,流程图,组织结构图,SWOT分析图等多种图表.这套模板无论从设计板 ...

  8. POI根据模板导出word文件,以及word转PDF,PDF转图片再插入PDF中(防止PDF被修改)

    POI操作word和PDF POI根据模板导出word文件 word转PDF PDF转图片再插入PDF中(防止PDF被修改) POI根据模板导出word文件 一.制作word模版,${xxxx}是一会 ...

  9. poi根据模板导出word(包含图片、动态生成表格、合并单元格)(亲测有效)

    准备工作: 1.需要的jar(jar包在资源处已上传,可下载) 2.创建docx模板(doc不可以) 第一步:准备好jar(这里面的 ooxml-schemas-1.1.jar 大家可以尝试用poi- ...

  10. Java使用POI通过模板生成Word

    Java使用POI通过模板生成Word 前言 最近工作需要用到,所以记录下来以便查找. 一.概述 POI读写word使用的核心类是XWPFDocument.一个XWPFDocument代表一个docx ...

最新文章

  1. java 时间生成字符串_java随机生成时间字符串的方法
  2. openlayers基础(一)——Map
  3. 查询score中选学多门课程的同学中分数为非最高分成绩的记录。
  4. ASP.NET+AJAX简单的文体编辑器
  5. SQLite数据库浅谈
  6. 2018-11-30
  7. [转载] epoll详解
  8. Android Metro风格的Launcher开发系列第一篇
  9. 不同版本web.xml文件头声明
  10. 大文件上传NeatUpload简单用法nbsp;(…
  11. Microsoft Visio绘图
  12. C语言程序设计—01基础知识
  13. 将OpenWRT安装到 X86 电脑硬盘中
  14. 图片去水印工具软件,比PS还好用的图片杂物去除工具
  15. 关闭WINDOWS文件保护功能
  16. i78565U和i710510U的区别 i78565U和i710510U参数配置对比哪个好
  17. 妊娠糖尿病食谱、控糖食谱
  18. 【Excel2019(十七):数学函数】【Round函数+Roundup函数+Rounddown函数+Int函数+Mod函数】
  19. c语言s型曲线方程,电机控制 | S曲线加减速
  20. vr属于计算机什么领域,vr技术是什么

热门文章

  1. SLAM从入门到放弃——学习SLAM 学习机器人 书籍推荐
  2. php在线拼图游戏,js+html5实现可在手机上玩的拼图游戏_javascript技巧
  3. 2014腾讯实习生招聘数组墙算法
  4. 信息熵与两种编码基础
  5. 【前端性能优化】图片加载优化
  6. RuoYi-flowable工作流管理
  7. js 解析lrc文件(歌词)
  8. 浅谈深度信念网络(Deep Belief Network)
  9. 精益 -- 二十一世纪标准的全球生产体系初探和思考
  10. [豆瓣8.1]《教养的迷思》父母的教养方式能否决定孩子的人格发展? 【美】朱迪斯•哈里斯...