需求:公司要求将部分数据用ppt模板形式展示,里面的文字可以替换和修改!!!

所以自己开始尝试着去写个小demo

/*** 读取ppt文件流* @return* @throws Exception*/
public InputStream readTemplateInput() throws Exception {FileInputStream fileInputStream=new FileInputStream(new File("D:/template.pptx"));return fileInputStream;
}
/*** 将文件流转pptx*/
public XMLSlideShow convertPPtx(InputStream inputStream) throws IOException {XMLSlideShow xmlSlideShow=new XMLSlideShow(inputStream);return xmlSlideShow;
}
/*** 分析pptx*/
public XMLSlideShow analysePPTX(XMLSlideShow xmlSlideShow) throws Exception {List<XSLFSlide> slides = xmlSlideShow.getSlides();for (XSLFSlide slide : slides) {List<XSLFShape> shapes = slide.getShapes();for (XSLFShape shape : shapes) {if(shape instanceof XSLFAutoShape){XSLFAutoShape autoShape = (XSLFAutoShape) shape;String text = autoShape.getText();if(text.contains("{customer}")){XSLFTextRun textR = autoShape.setText(text.replace("{customer}", "中国移动"));textR.setFontColor(Color.white);textR.setFontFamily("微软雅黑");textR.setFontSize(14.0);}continue;}if(shape instanceof XSLFTextBox){XSLFTextBox textBox=((XSLFTextBox) shape);String text = textBox.getText();if(text.contains("{customer}")){TextRun textR=textBox.setText(text.replace("{customer}","中国移动"));textR.setFontColor(Color.white);textR.setFontFamily("微软雅黑");textR.setFontSize(16.0);}continue;}}}return xmlSlideShow;
}
public static void main(String[] args) throws Exception{GenerateTempPpt g=new GenerateTempPpt();g.analysePPTX(g.convertPPtx(g.readTemplateInput())).write(new FileOutputStream("D:/1.template.pptx"));
}

这里有个问题,就是这种写法是可以替换文字但是样式也不再是之前固定好的样式,重新设置样式也没作用

通过搜阅一些资料发现这种使用的是单个文字,下面使用段落形式修改终于解决了样式不变的问题。

/*** 分析pptx*/
public XMLSlideShow analysePPTX(XMLSlideShow xmlSlideShow) throws Exception {List<XSLFSlide> slides = xmlSlideShow.getSlides();for (XSLFSlide slide : slides) {List<XSLFShape> shapes = slide.getShapes();for (XSLFShape shape : shapes) {if(shape instanceof TextShape){List<XSLFTextParagraph> textParagraphs = ((TextShape) shape).getTextParagraphs();replaceTextShape(textParagraphs);}}}return xmlSlideShow;
}private void replaceTextShape(List<XSLFTextParagraph> textParagraphs) {if(textParagraphs==null||textParagraphs.size()==0){return;}for (XSLFTextParagraph textParagraph : textParagraphs) {if(textParagraph==null){continue;}List<XSLFTextRun> textRuns = textParagraph.getTextRuns();if(textRuns==null){continue;}for (XSLFTextRun textRun : textRuns) {textRun.setText(textRun.getRawText().replace("{customer}","中国移动"));}}}

通过以上修改后就可以只修改文字样式不再变化了!!!

java修改ppt模板并导出相关推荐

  1. 修改PPT模板(母版)logo方法

    背景:在我们参加答辩时,无论是学生时期的开题,中期还是学位论文答辩:或是工作中项目汇报,必然要准备的就是答辩ppt.因此,我们经常会在网上下载很多好看的ppt模板,但是这些模板中有许多logo(如学校 ...

  2. java 根据excel模板格式导出指定格式的excel

    2017年10月31日16:40:32 做个记录.方便下次查看. 参考:java实现赋值Excel模板并写入后导出 ( ̄▽ ̄)~* ExcelUtils @Component public class ...

  3. java修改ppt格式_Java 加密、解密PPT文档

    文档加密常通过设置文档打开密码.启用文档编辑时的权限密码等方式:而解密则通过删除原有文档的密码或在此基础上重置新的密码.以下文章内容,将通过Java程序来实现通过以上方式来加密.解密PPT文档. 使用 ...

  4. java调用acrobat_PDF模板报表导出(Java+Acrobat+itext)

    1. 首先要安装Adobe Acrobat,装好之后用Acrobat从一个word,excel或者pdf中转换一个pdf模板,我做的模板很简单,直接写一个简单的word再生成一个pdf表单,之后编辑文 ...

  5. Java 基于Excel模板实现导出Excel并插入数据

    [本案例基于spring boot架构] 一.需求介绍 给定一个Excel模板,在指定位置插入数据,然后将生成的excel导出. 二.实现方法介绍 1.准备Excel模板 模板中要插入数据的地方用&q ...

  6. java用ftl模板循环导出word生成echarts图表折线图柱状图饼图横向表格竖向表格

    写了一个月 4月20-5月20,终于完成 -一个日报 大多es查的数据,有一点mysql查的数据 先占个坑,回头有空记录一下

  7. 用Powerpoint (PPT)制作并导出矢量图、高分辨率图

    论文写作时经常需要导入矢量图,正规军都是用AI或者Inkscape作图,但是PPT更加适合小白用户,或者一些简单的构图需求使用PPT更加便捷,而且不得不承认PPT的某些功能是真的香,例如:简单的对齐. ...

  8. java导出模板 pdf设置字体_有哪些相见恨晚的PPT模板网站?

    是时候祭出我用了好久的神器了! 作为公司的御用PPT写手,我曾经徘徊于各种形状和动画效果中,每每熬了一个通宵做出来的PPT,还得花几天时间来修改. 直到后来,我发现了这几个神器,PPT制作的效率提升了 ...

  9. java修改导出模板,java模板导出word模板 java根据word模板导出

    java 调用word模板实现循环套打生成word文档 首先我用的技术是 poi 这是代码,一个工具类得调用 public class WordUtil { /** * 基于模板文件导出 word 文 ...

  10. (精品)JAVA SSM框架黄淮学院食堂仓库管理系统的设计与实现源码+论文+查重报告+效果、安装视频+ppt模板(已降重)

    项目介绍: (精品)JAVA SSM框架黄淮学院食堂仓库管理系统的设计与实现源码+论文+查重报告+效果.安装视频+ppt模板(已降重) 高清视频演示: https://www.bilibili.com ...

最新文章

  1. Java异常体系结构
  2. 投稿近2000,NAACL 2019接收率仅为22.6%|附录取论文名单
  3. Topic交换器-搭建环境
  4. 微软OTech第二次会议(广州站)
  5. Oracle执行计划详解
  6. 这是一个关于软件开发的博客。
  7. Sqli-labs less 29
  8. CommonsChunkPlugin相关
  9. laravel php环境,Laravel 5框架学习之环境与配置
  10. 专攻国内实体瘤CAR-T细胞疗法,南京卡提医学获数千万元A轮融资...
  11. [导入]Linq学习笔记(2.2)——深入DLinq查询
  12. 手机芯片进入7纳米时代!高通确认年内发布,搭载5G,更强AI
  13. 利用C语言读取WAV文件
  14. 数据库 ER图、关系模式相互转换 关系代数表达式 查询树,优化查询树 SQL题目
  15. java string通配符_java通配符
  16. Flutter系列之改变CupertinoSwitch的大小
  17. c语言 tls单向认证 验证证书,使用wireshark观察SSL/TLS握手过程--双向认证/单向认证...
  18. 怎么把照片转换成jpg格式?这个好方法拿去
  19. PHP初级学习(三)
  20. 面试文案策划要准备一些什么?

热门文章

  1. 怎么注册tk域名_TK后缀免费顶级域名注册(附教程)
  2. R语言|使用RGL包构建3D 图形(一)
  3. PPT转图片(Java)
  4. python8皇后不攻击问题_Python 解决八皇后问题
  5. 转:nginx allow 多个ip ipv4的网段表示方法解析
  6. 排列组合数计算公式及性质
  7. 利用Powergui进行FFT Analysis,信号源为空解决方法
  8. 菜鸟c语言app,菜鸟学C语言app下载-菜鸟学C语言下载 3.0.0 手机版 - 河东软件园
  9. 案例|工业物联网解决方案•泵站智慧云平台
  10. Vue搭脚手架及创建项目