需求:公司要求将部分数据用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. Python+OpenCV实现AI人脸识别身份认证系统(2)—人脸数据采集、存储
  2. 关于线程池运行过程中,业务逻辑出现未知异常导致线程中断问题反思
  3. JVM内存区域:常用指令集
  4. TCP/IP学习笔记(二)TCP三次握手
  5. java集合基础复习
  6. java 数据对象_java的几种对象(PO,VO,DAO,BO,POJO)
  7. ssr怎么编辑服务器ip_“阴阳师”IP影响力有多大?网易用它做了一款弹珠游戏,TapTap评分高达9.8分...
  8. cat 监控 java,分布式监控CAT客户端的SpringBoot集成
  9. 如何获取AS程序的SHA1值用于百度SDK的下载并且避免keytool的错误
  10. 【证明】—— 矩阵秩的相关证明
  11. 利用FlashPaper在web页面中显示PDF文件(兼容各浏览器)
  12. Towards Characterizing the Behavior of LiDARs in Snowy Conditions
  13. 递归实现对多层嵌套的对象数组依照某属性进行排序
  14. google谷歌动态口令
  15. 前端实现旗帜飘动效果系列 (Ⅰ):dom+css实现
  16. java怎么开发图形界面_Java Swing 图形界面开发简介
  17. 基于Python改变图片像素大小
  18. 【Unity3D】人机交互Input
  19. 中国膨润土市场消费状况与投资盈利预测报告(2022-2027年)
  20. 全国人工智能师资培训高校行重磅启动,飞桨携手7校开启AI学习之旅

热门文章

  1. 【生活中的逻辑谬误】以暴制暴和压制理性
  2. t检验(t-test)临界值表(临界置信水平)
  3. 简单介绍一下用加速度传感器修正角速度传感器(陀螺仪)累计误差的原理
  4. matlab 角速度,从您的移动设备获取并绘制角速度和方向数据
  5. What are CBR, VBV and CPB?
  6. tk域名管理后台_TK域名解析教程,dns设置教程
  7. 如何制定项目里程碑?
  8. 自我觉察的心理测试软件,认识自己、洞察人心,心理咨询师专用的自我觉察方法...
  9. ArcGIS 10.7基础:三种栅格影像裁剪操作
  10. 摄影测量前方交会编程实现