java修改ppt模板并导出
需求:公司要求将部分数据用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模板并导出相关推荐
- 修改PPT模板(母版)logo方法
背景:在我们参加答辩时,无论是学生时期的开题,中期还是学位论文答辩:或是工作中项目汇报,必然要准备的就是答辩ppt.因此,我们经常会在网上下载很多好看的ppt模板,但是这些模板中有许多logo(如学校 ...
- java 根据excel模板格式导出指定格式的excel
2017年10月31日16:40:32 做个记录.方便下次查看. 参考:java实现赋值Excel模板并写入后导出 ( ̄▽ ̄)~* ExcelUtils @Component public class ...
- java修改ppt格式_Java 加密、解密PPT文档
文档加密常通过设置文档打开密码.启用文档编辑时的权限密码等方式:而解密则通过删除原有文档的密码或在此基础上重置新的密码.以下文章内容,将通过Java程序来实现通过以上方式来加密.解密PPT文档. 使用 ...
- java调用acrobat_PDF模板报表导出(Java+Acrobat+itext)
1. 首先要安装Adobe Acrobat,装好之后用Acrobat从一个word,excel或者pdf中转换一个pdf模板,我做的模板很简单,直接写一个简单的word再生成一个pdf表单,之后编辑文 ...
- Java 基于Excel模板实现导出Excel并插入数据
[本案例基于spring boot架构] 一.需求介绍 给定一个Excel模板,在指定位置插入数据,然后将生成的excel导出. 二.实现方法介绍 1.准备Excel模板 模板中要插入数据的地方用&q ...
- java用ftl模板循环导出word生成echarts图表折线图柱状图饼图横向表格竖向表格
写了一个月 4月20-5月20,终于完成 -一个日报 大多es查的数据,有一点mysql查的数据 先占个坑,回头有空记录一下
- 用Powerpoint (PPT)制作并导出矢量图、高分辨率图
论文写作时经常需要导入矢量图,正规军都是用AI或者Inkscape作图,但是PPT更加适合小白用户,或者一些简单的构图需求使用PPT更加便捷,而且不得不承认PPT的某些功能是真的香,例如:简单的对齐. ...
- java导出模板 pdf设置字体_有哪些相见恨晚的PPT模板网站?
是时候祭出我用了好久的神器了! 作为公司的御用PPT写手,我曾经徘徊于各种形状和动画效果中,每每熬了一个通宵做出来的PPT,还得花几天时间来修改. 直到后来,我发现了这几个神器,PPT制作的效率提升了 ...
- java修改导出模板,java模板导出word模板 java根据word模板导出
java 调用word模板实现循环套打生成word文档 首先我用的技术是 poi 这是代码,一个工具类得调用 public class WordUtil { /** * 基于模板文件导出 word 文 ...
- (精品)JAVA SSM框架黄淮学院食堂仓库管理系统的设计与实现源码+论文+查重报告+效果、安装视频+ppt模板(已降重)
项目介绍: (精品)JAVA SSM框架黄淮学院食堂仓库管理系统的设计与实现源码+论文+查重报告+效果.安装视频+ppt模板(已降重) 高清视频演示: https://www.bilibili.com ...
最新文章
- Java异常体系结构
- 投稿近2000,NAACL 2019接收率仅为22.6%|附录取论文名单
- Topic交换器-搭建环境
- 微软OTech第二次会议(广州站)
- Oracle执行计划详解
- 这是一个关于软件开发的博客。
- Sqli-labs less 29
- CommonsChunkPlugin相关
- laravel php环境,Laravel 5框架学习之环境与配置
- 专攻国内实体瘤CAR-T细胞疗法,南京卡提医学获数千万元A轮融资...
- [导入]Linq学习笔记(2.2)——深入DLinq查询
- 手机芯片进入7纳米时代!高通确认年内发布,搭载5G,更强AI
- 利用C语言读取WAV文件
- 数据库 ER图、关系模式相互转换 关系代数表达式 查询树,优化查询树 SQL题目
- java string通配符_java通配符
- Flutter系列之改变CupertinoSwitch的大小
- c语言 tls单向认证 验证证书,使用wireshark观察SSL/TLS握手过程--双向认证/单向认证...
- 怎么把照片转换成jpg格式?这个好方法拿去
- PHP初级学习(三)
- 面试文案策划要准备一些什么?