poi读取ppt的例子,不只是读取ppt里面的文字,还要又文字的样式,布局,图片等。poi包从官网下载即可。
HSLF是POI读写PPT的API,例子见官方文档。
http://poi.apache.org/slideshow/quick-guide.html
文档格式
http://poi.apache.org/slideshow/ppt-file-format.html
操作Shape的API
http://poi.apache.org/slideshow/how-to-shapes.html


1 提取PPT文字

public class PPTReader {public static void main(String[] args) throws Exception {InputStream is = new FileInputStream(new File("2003.ppt"));PowerPointExtractor extractor = new PowerPointExtractor(is);String ppString = extractor.getText();System.out.println(ppString);}

PPT如下:

2 抽取PPT图片

   public  void findpIC()  {try{SlideShow ppt = new SlideShow(new HSLFSlideShow("2003.ppt"));//将所有图片提取出来保存到PictureData[]PictureData[] pDatas= ppt.getPictureData();for (int i = 0; i < pDatas.length; i++) {PictureData pict =pDatas[i];// 获得每张图片的数据byte[] data = pict.getData();//获得每张图片的类型int type = pict.getType();String ext;switch (type) {case Picture.JPEG: ext=".jpg";break;case Picture.PNG: ext=".png"; break;case Picture.WMF: ext=".wmf"; break;case Picture.EMF: ext=".emf"; break;case Picture.PICT: ext=".pict"; break; default:continue;}//输出图片命名方式:pic_i_extFileOutputStream out = new FileOutputStream("pic_"+i + ext);out.write(data);out.close();}}catch (IOException e) {// This is not a powerpoint filee.printStackTrace();}    }

3/ 添加一个新的图片插入到新的幻灯片中,保存

public void addSlide() throws IOException {SlideShow ppt = new SlideShow(new HSLFSlideShow("2003.ppt"));// 添加一个新的图片插入到新的幻灯片中int idx =ppt.addPicture(new File("cat.jpg"), Picture.JPEG);//在幻灯片中设置图片的大小和位置Picture pict = new Picture(idx);pict.setAnchor(new Rectangle(100,100,300,200));Slide slide = ppt.createSlide();slide.addShape(pict);//检索图片并将ppt保存到磁盘上slide = ppt.getSlides()[0];Shape[]sh  =slide.getShapes();for (int i = 0; i < sh.length; i++){if (sh[i] instanceof Picture){Picture pict1 = (Picture)sh[i];PictureData pictData = pict1.getPictureData();byte[] data = pictData.getData();int type = pictData.getType();if (type == Picture.JPEG){FileOutputStream out = new FileOutputStream("slide0_"+i+".jpg");out.write(data);out.close();} else if (type == Picture.PNG){FileOutputStream out = new FileOutputStream("slide0_"+i+".png");out.write(data);out.close();}}}FileOutputStream out = new FileOutputStream("slideshow.ppt");ppt.write(out);out.close();}

4/插入表格

 @Testpublic void createTable() throws IOException {//准备数据            String[][] data = {{"INPUT FILE", "NUMBER OF RECORDS"},{"Item File", "11,559"},{"Vendor File", "300"},{"Purchase History File", "10,000"},{"Total # of requisitions", "10,200,038"} };SlideShow ppt = new SlideShow(new HSLFSlideShow("slideshow.ppt"));Slide slide = ppt.createSlide();//创建一个表格Table table = new Table(5, 2);for (int i = 0; i < data.length; i++) {for (int j = 0; j < data[i].length; j++) {TableCell cell = table.getCell(i, j);cell.setText(data[i][j]);RichTextRun rt = cell.getTextRun().getRichTextRuns()[0];rt.setFontName("Arial");rt.setFontSize(10);cell.setVerticalAlignment(TextBox.AnchorMiddle);cell.setHorizontalAlignment(TextBox.AlignCenter);}}//设置表格的边距Line border = table.createBorder();border.setLineColor(Color.black);border.setLineWidth(1.0);table.setAllBorders(border);//第一列的宽度table.setColumnWidth(0, 300);//第二列的宽度table.setColumnWidth(1, 150);slide.addShape(table);table.moveTo(100, 100);//保存FileOutputStream out = new FileOutputStream("hslf-table.ppt");ppt.write(out);out.close();
}

5 去掉PPT中的形状图形和声音

public void removeShapes() throws IOException {SlideShow ppt = new SlideShow(new HSLFSlideShow("bullets.ppt"));Slide slide = ppt.createSlide();Shape[] shape = slide.getShapes();for (int i = 0; i < shape.length; i++) {boolean ok = slide.removeShape(shape[i]);if(ok){System.out.println("you are successful remove the shape");}}}public void retrieveSound() throws IOException {FileInputStream is = new FileInputStream("bullets.ppt");SlideShow ppt = new SlideShow(is);is.close();SoundData[] sound = ppt.getSoundData();for (int i = 0; i < sound.length; i++) {//保存.WAV格式的音乐if(sound[i].getSoundType().equals(".WAV")){FileOutputStream out = new FileOutputStream(sound[i].getSoundName());out.write(sound[i].getData());out.close();}}}

自己画了主要类图,不全,个人理解

输入流有SlideShow进入,输出流使用文本流写入保存修改关闭。
SlideShow指整个幻灯片,而Slide 指的是单张幻灯片。SlideMaster 是单张幻灯片的管理类。对于文本信息、超链接信息、声音修改使用TextBox、TextRun、SoundData等类对单张幻灯片进行修改。而背景修改需要使用SlideMaster类调用Fill类进行修改设置。

使用POI操作PPT实例相关推荐

  1. java poi 操作ppt

    java poi 操作ppt 可以参考: https://www.w3cschool.cn/apache_poi_ppt/apache_poi_ppt_installation.html http:/ ...

  2. java使用poi操作ppt(导入,导出,读取,添加,拼接,替换文本,页面排序)

    POI操作PPT文档(导入,导出,读取,添加,拼接,替换文本,页面排序) 注意:直接读取.pptx文件时不能使用${user}这样的作为替换标识,在读取.pptx文件时会解析成三段文本"${ ...

  3. poi 操作 PPT,针对 PPTX--图表篇

    poi 操作 PPT,针对 PPTX–图表篇 文章目录 poi 操作 PPT,针对 PPTX--图表篇 1.读取 PPT 模板 2.替换标题 4.替换图表数据 接下来对 ppt 内的图表进行操作,替换 ...

  4. POI操作ppt图表完整示例演示

    poi操作ppt图表史上最完整示例演示和内嵌excel的获取添加数据简单示例,POI3.15版本. 在模板中构造几中基本图表进行测试就行了. 其它操作ppt的基础资料见:http://blog.csd ...

  5. poi操作ppt图表史上最完整示例演示

    poi操作ppt图表史上最完整示例演示和内嵌excel的获取添加数据简单示例 ,POI3.15版本. 在模板中构造几中基本图表进行测试就行了. 完整下载地址:http://download.csdn. ...

  6. Java使用poi操作ppt

    Java使用poi操作ppt https://editor.csdn.net/md/?articleId=117926694 上一篇中写了操作文本框和插入图片 这一篇主要是如何在有模板的情况下如替换文 ...

  7. poi 操作 PPT,针对 PPTX--文字操作

    poi 操作 PPT,针对 PPTX–文字操作 文章目录 poi 操作 PPT,针对 PPTX--文字操作 1.获取幻灯片内的所有段落文字 2.对幻灯片内的文本内容进行模板替换 3.对段落新增文本 接 ...

  8. poi操作PPT文档总结

    POI操作PPT文档1 注意ppt模板不能使用${user}--这样的作为替换标识,在读取PPT模板时会解析成三段文本1.${ 2.user  3.},而一般在控件中使用%1$S这样的方式做为替换标识 ...

  9. poi操作ppt生成图表

    POI版本3.14 操作ppt的HSLF中没有找到操作图表的类. 操作pptx的XSLF中有操作图表的类:org.apache.poi.xslf.usermodel.XSLFChart. ppt页面( ...

最新文章

  1. pandas笔记(pandas Data Structures)
  2. 设置 HTTP HEADER 字段来提高 Web 安全性
  3. Android移动开发之【Android实战项目】DAY13-MPChart简单的折线图LineChart
  4. C#语法基础之第三节
  5. cmd小游戏编程100例_学宏程序编程,这些知识必不可少!
  6. 现代人的压力和焦虑_设计师如何建立减少焦虑和压力的体验
  7. java 反射 类名_java – 从反射中获取字段的类名
  8. mysql5.6 pid_MySQL5.6启动报错The server quit without updating PID file
  9. 吓坏了!智能锁半夜自己“离奇打开”
  10. 如何取消wlan自动登录 更换wlan帐号
  11. java url拦截器框架_使用Spring Interceptor实现URL访问校验
  12. 【Java从0到架构师】SpringBoot - MyBatis
  13. 意大利面条:面向过程的代码模型
  14. Eclipse ADT环境、Android studio如何连接外部安卓模拟器
  15. 【正点原子STM32连载】 第三十三章 光敏传感器实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
  16. win10定时关机c语言,win10 定时关机命令怎么设置_win10怎么设置定时关机指令-win7之家...
  17. 乌拉、利用python实现tree命令
  18. HLS directive
  19. 片上总线Wishbone 学习(四)接口信号定义
  20. 学习Spring框架有这一篇就够了

热门文章

  1. python 对象转字典及序列化对象相关问题,__dict__!!!!必看,多坑
  2. DBCO-MMPs-PEG DBCO-基质金属蛋白酶MMPs-聚乙二醇
  3. 北京、成都、大连、广州、杭州、南京、青岛、上海、深圳、苏州、天津、武汉、西安、郑州、重庆 15个城市地铁线及站点SHP文件
  4. 毕业多年公英计算机考试,公英预测卷一
  5. 黑马程序员------黑马基础测试题参考
  6. python描述回文素数_回文素数-随心随性无为而为-51CTO博客
  7. 读《玺印篆刻赏析》有感
  8. 关于文章撰写的要求和规范
  9. 河师大计算机学院宿舍情况哪,河师大环境学院“惊现”7个学霸宿舍
  10. 关于理财年轻人正在跑步入场