- 浏览: 3422742 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
使用POI操作PPT文档 http://zyplaiai.iteye.com/blog/778547
1)如果是创建新的PPT文档,直接使用SlideShow和Slide类就可以,其中SlideShow表示PPT文档,Slide表示某一张幻灯片
如下代码创建空的PPT文档:
2)设置母版,这样后续的新建幻灯片都将使用母版的字体,背景等设置
3)创建幻灯片并插入文本
4)插入图片,支持多种格式
5)插入表格(v3.5)
6)如果是读取已存在的PPT文档则还要用到HSLFSlideShow,下面代码将PPT文件导出为图片(png)格式,如果幻灯片上有中文字符则这些字符的字体需要修改为支持中文的字体(宋体等),否则导出的图片的中文字符不能正常显示
7)提取PPT文档信息
8)设置PPT文档摘要信息(文档点击鼠标右键查看属性)
Java 利用POI生成PPT http://282912533.iteye.com/blog/566798
AVA生成处理PPT文件, 在GOOGLE了一番没找到示例 , 自己下了POI包 , 看完自带的examples , 发现离实际操作上还有许多地方没懂 , 花了点时间研究一番,并贴上代码 , 希望给有相同需求的人有所帮助 . 当然 , 也相信在未来各类报表工具诸如ireport等会出新版本解决 Java 生成 PPT的问题 .
下面是几个简单的示例:
一, 解析PPT文件中的图片
二 , 在PPT文件中加入外部图片
三 , 操作文本对象
四 , 设置各类文件属性
1)如果是创建新的PPT文档,直接使用SlideShow和Slide类就可以,其中SlideShow表示PPT文档,Slide表示某一张幻灯片
如下代码创建空的PPT文档:
SlideShow ppt = new SlideShow(); Slide[] slides = ppt.getSlides(); assertTrue(slides.length == 0); savePPTFile(ppt); private void savePPTFile(SlideShow ppt) throws Exception{ FileOutputStream out = new FileOutputStream("ppt测试.ppt"); ppt.write(out); out.close(); }
2)设置母版,这样后续的新建幻灯片都将使用母版的字体,背景等设置
SlideShow ppt = new SlideShow(); //设置幻灯片大小 ppt.setPageSize(new Dimension(760,600)); SlideMaster master = ppt.getSlidesMasters()[0]; //设置母板背景,支持多种图片格式 int picIndex = ppt.addPicture(new File("background.png"), Picture.PNG); Picture background = new Picture(picIndex); //设置图片位置 background.setAnchor(new java.awt.Rectangle(0, 0, ppt.getPageSize().width , ppt.getPageSize().height)); master.addShape(background);
3)创建幻灯片并插入文本
SlideShow ppt = new SlideShow(); Slide newSlide = ppt.createSlide(); //添加幻灯片标题 TextBox title = newSlide.addTitle(); RichTextRun titleRun = title.getTextRun().getRichTextRuns()[0]; titleRun.setFontColor(Color.RED); title.setText("ppt测试"); //添加文本框 TextBox txt = new TextBox(); RichTextRun richTextRun = txt.getTextRun().getRichTextRuns()[0]; richTextRun.setFontColor(Color.BLUE); //setText参数字符串可以包含回车、换行符,但是最后一行不能以\r\n结尾,否则设置的格式没有效果(v3.5) richTextRun.setText("这里可以换行\r\n第二行文本"); txt.setAnchor(new java.awt.Rectangle(50,150,400,400)); newSlide.addShape(txt); savePPTFile(ppt);
4)插入图片,支持多种格式
SlideShow ppt = new SlideShow(); Slide newSlide = ppt.createSlide(); int picIndex = ppt.addPicture(new File("图片.jpg"), Picture.JPEG); Picture jpg = new Picture(picIndex); //set image position in the slide jpg.setAnchor(new java.awt.Rectangle(360, 200, 280, 260)); newSlide.addShape(jpg); savePPTFile(ppt);
5)插入表格(v3.5)
SlideShow ppt = new SlideShow(); Slide slide = ppt.createSlide(); String[][] datas = { {"序号", "姓名","年龄"}, {"1", "张三","30"}, {"2", "李四","27"}, }; //create a table of 3 rows and 3 columns Table table = new Table(3, 3); for (int i = 0; i < datas.length; i++) { for (int j = 0; j < datas[i].length; j++) { TableCell cell = table.getCell(i, j); RichTextRun rt = cell.getTextRun().getRichTextRuns()[0]; rt.setFontName("宋体"); rt.setFontSize(12); cell.setVerticalAlignment(TextBox.AnchorMiddle); cell.setHorizontalAlignment(TextBox.AlignCenter); cell.setText(datas[i][j]); if(i == 0){//首行背景设置为灰色 cell.setFillColor(Color.GRAY); } } } Line border = table.createBorder(); border.setLineColor(Color.black); border.setLineWidth(2.0); table.setAllBorders(border); slide.addShape(table); table.moveTo(160,260); savePPTFile(ppt);
6)如果是读取已存在的PPT文档则还要用到HSLFSlideShow,下面代码将PPT文件导出为图片(png)格式,如果幻灯片上有中文字符则这些字符的字体需要修改为支持中文的字体(宋体等),否则导出的图片的中文字符不能正常显示
SlideShow ppt = new SlideShow(new HSLFSlideShow("PPT测试.ppt")); Dimension pgsize = ppt.getPageSize(); Slide[] slide = ppt.getSlides(); for (int i = 0; i < slide.length; i++) { BufferedImage img = new BufferedImage(pgsize.width, pgsize.height , BufferedImage.TYPE_INT_RGB); Graphics2D graphics = img.createGraphics(); //clear the drawing area graphics.setPaint(Color.white); graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height)); //render slide[i].draw(graphics); FileOutputStream out = new FileOutputStream("slide-" + (i+1) + ".png"); javax.imageio.ImageIO.write(img, "png", out); out.close();
7)提取PPT文档信息
SlideShow ppt = new SlideShow(new HSLFSlideShow("PPT测试.ppt")); Slide[] slides = ppt.getSlides(); //提取文本信息 for (Slide each : slides) { System.out.println(each.getTitle()) ; TextRun[] textRuns = each.getTextRuns(); for (int i=0 ;i< textRuns.length; i++ ) { System.out.println(textRuns[i].getText()); RichTextRun[] richTextRuns = textRuns[i].getRichTextRuns(); for (int j = 0; j < richTextRuns.length; j++) { System.out.println(richTextRuns[j].getText()); } } } //提取所有JPEG图片 PictureData[] picDatas = ppt.getPictureData(); for (int i=0;i<picDatas.length;i++) { if(picDatas[i].getType() == Picture.JPEG){ FileOutputStream out = new FileOutputStream("jpg_" + i + ".jpg"); ppt.write(out); out.close(); } }
8)设置PPT文档摘要信息(文档点击鼠标右键查看属性)
HSLFSlideShow hslf = HSLFSlideShow.create(); DocumentSummaryInformation dsi= hslf.getDocumentSummaryInformation(); SummaryInformation si= hslf.getSummaryInformation(); dsi.setCompany("yourCompany"); dsi.setCategory("ppt测试"); si.setAuthor("yourName"); si.setTitle("标题"); SlideShow ppt = new SlideShow(hslf); savePPTFile(ppt);
Java 利用POI生成PPT http://282912533.iteye.com/blog/566798
AVA生成处理PPT文件, 在GOOGLE了一番没找到示例 , 自己下了POI包 , 看完自带的examples , 发现离实际操作上还有许多地方没懂 , 花了点时间研究一番,并贴上代码 , 希望给有相同需求的人有所帮助 . 当然 , 也相信在未来各类报表工具诸如ireport等会出新版本解决 Java 生成 PPT的问题 .
下面是几个简单的示例:
一, 解析PPT文件中的图片
package test.ppt; import java.io.File; import java.io.FileOutputStream; import org.apache.poi.hslf.HSLFSlideShow; import org.apache.poi.hslf.model.Picture; import org.apache.poi.hslf.usermodel.PictureData; import org.apache.poi.hslf.usermodel.SlideShow; /** * 运行程序, 所在工程需要导入 POI3.6 开发包 * @author 杜磊米 * */ public class OutputPicture { // 图片默认存放路径 public final static String path = "F:\\ppt\\"; public static void main(String[] args) throws Exception { // 加载PPT HSLFSlideShow _hslf = new HSLFSlideShow("F:\\Downloads\\myPPT.ppt"); SlideShow _slideShow = new SlideShow(_hslf); // 获取PPT文件中的图片数据 PictureData[] _pictures = _slideShow.getPictureData(); // 循环读取图片数据 for (int i = 0; i < _pictures.length; i++) { StringBuilder fileName = new StringBuilder(path); PictureData pic_data = _pictures[i]; fileName.append(i); // 设置格式 switch (pic_data.getType()) { case Picture.JPEG: fileName.append(".jpg"); break; case Picture.PNG: fileName.append(".png"); break; default: fileName.append(".data"); } // 输出文件 FileOutputStream fileOut = new FileOutputStream(new File(fileName.toString())); fileOut.write(pic_data.getData()); fileOut.close(); } } }
二 , 在PPT文件中加入外部图片
package test.ppt; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import javax.imageio.ImageIO; import org.apache.poi.hslf.model.Picture; import org.apache.poi.hslf.model.Slide; import org.apache.poi.hslf.usermodel.SlideShow; /** * 将图片置入PPT文件中 * @author 杜磊米 */ public class InputPicture { public static String path = "F:\\images\\myImage.png"; public static String OUTPUT = "F:\\ppt\\myppt.ppt"; public static void main(String[] args) throws Exception { if(args.length != 0){ path = args[0]; } // 构建PPT SlideShow _slideShow = new SlideShow(); // 创建幻灯片 Slide _slide = _slideShow.createSlide(); // 设置图片类型 int pic_type = -1; if(path.indexOf(".png") != -1){ pic_type = Picture.PNG; }else{ pic_type = Picture.JPEG; } File file = new File(path); BufferedImage image = ImageIO.read(file); // 新置入图片索引位置 int newIndex = _slideShow.addPicture(file, pic_type); // 根据索引位置 , 创建图片对象 Picture _picture = new Picture(newIndex); // 设置图片显示位置 _picture.setAnchor(new Rectangle(100,100,image.getWidth(),image.getHeight())); // 将图片放入幻灯片 _slide.addShape(_picture); // 输出PPT文件 _slideShow.write(new FileOutputStream(new File(OUTPUT))); } }
三 , 操作文本对象
package test.ppt; import java.awt.Color; import java.awt.Rectangle; import java.io.FileOutputStream; import org.apache.poi.hslf.model.AutoShape; import org.apache.poi.hslf.model.Line; import org.apache.poi.hslf.model.ShapeTypes; import org.apache.poi.hslf.model.Slide; import org.apache.poi.hslf.model.TextBox; import org.apache.poi.hslf.model.TextRun; import org.apache.poi.hslf.usermodel.RichTextRun; import org.apache.poi.hslf.usermodel.SlideShow; /** * 操作 Text 文本 * @author 杜磊米 */ public class InputTextRun { public static void main(String[] args) throws Exception{ SlideShow _slideShow = new SlideShow(); Slide slide = _slideShow.createSlide(); // 创建并置入简单文本 TextBox _text = new TextBox(); TextRun _textRun = _text.createTextRun(); _textRun.setRawText("杜磊米"); _text.setAnchor(new Rectangle(10,10,100,100)); // 创建并置入带有样式的文本 AutoShape _autoShape = new AutoShape(ShapeTypes.Rectangle); //设置形状 TextRun _autoText = _autoShape.createTextRun(); _autoText.setRawText("杜磊米"); _autoShape.setAnchor(new Rectangle(200,200,100,100)); _autoShape.setFillColor(new Color(170,215,255)); _autoShape.setLineWidth(5.0); _autoShape.setLineStyle(Line.LINE_DOUBLE); // AutoShape 对象可以设置多个不同样式文本 TextRun _autoText2 = _autoShape.createTextRun(); RichTextRun _richText = _autoText2.appendText("杜"); _richText.setFontColor(new Color(255,255,255)); RichTextRun _richText2 = _autoText2.appendText("磊米"); _richText2.setFontColor(new Color(255,0,0)); _richText2.setFontSize(12); // 将文本对象置入幻灯片 slide.addShape(_text); slide.addShape(_autoShape); // 输出文件 _slideShow.write(new FileOutputStream("F:\\ppt\\text.ppt")); } }
四 , 设置各类文件属性
package test.ppt; import java.awt.Dimension; import java.io.FileOutputStream; import org.apache.poi.hpsf.DocumentSummaryInformation; import org.apache.poi.hpsf.SummaryInformation; import org.apache.poi.hslf.HSLFSlideShow; import org.apache.poi.hslf.model.Slide; import org.apache.poi.hslf.usermodel.SlideShow; /** * 设置PPT属性 * @author 杜磊米 * */ public class PPTProperty { public static void main(String [] args)throws Exception{ HSLFSlideShow hslf = HSLFSlideShow.create(); SlideShow _slideShow = new SlideShow(hslf); // 设置页面大小 _slideShow.setPageSize(new Dimension(400,600)); // 设置后创建出相应大小的幻灯片 Slide slide = _slideShow.createSlide(); DocumentSummaryInformation doc = hslf.getDocumentSummaryInformation(); SummaryInformation info = hslf.getSummaryInformation(); doc.setCompany("secret"); info.setAuthor("杜磊米"); info.setTitle("nothing"); // 输出文件 _slideShow.write(new FileOutputStream("F:\\ppt\\demo.ppt")); // 完成后, 找到文件 , 右键属性查看:) } }
发表评论
-
分布式存储系统GlusterFS安装配置
2016-06-27 14:51 1030http://navyaijm.blog.51cto.com/ ... -
Java Comparable和Comparator
2016-06-26 08:52 695http://my.oschina.net/android52 ... -
分布式查询 presto 入门安装使用
2016-06-24 15:44 2502http://my.oschina.net/chengxiao ... -
Java集合框架之fastutil & koloboke
2016-06-23 14:04 2471Java集合框架之fastutil http://rensan ... -
跟我学习dubbo
2016-06-17 15:20 1066跟我学习dubbo-目录 http://bluereader. ... -
JavaMelody监控web服务器
2016-06-17 14:20 1178JavaMelody监控web服务器 http://my.os ... -
freemarker使用记录
2016-06-08 16:24 1309freeMarker语法 http://uule.iteye. ... -
freemarker判断是否为空
2016-06-08 16:03 2http://www.oschina.net/code/sni ... -
ehcache 分布式支持
2016-06-05 22:26 1098原文 http://my.oschina.net/glenxu ... -
Intellij IDEA插件开发入门
2016-05-26 11:42 2882原文: http://blog.csdn.net/dc_726 ... -
阿里巴巴Druid数据源的配置与使用
2016-05-24 17:42 1544http://my.oschina.net/wjme/blog ... -
分布式任务调度组件 Uncode-Schedule
2016-05-13 14:47 2287http://www.oschina.net/p/uncode ... -
mysql中间件研究(Atlas,cobar,TDDL), 分库分表插件
2016-05-09 14:15 3444http://www.guokr.com/blog/47576 ... -
Java集合: Queue和Deque
2016-05-09 09:49 1862Queue http://my.oschina.net/kev ... -
使用gzip优化web应用(filter实现)
2016-05-07 01:45 1031使用gzip优化web应用(filter实现) http:// ... -
Fedora安装Redis
2016-05-04 08:56 1413管理工具: centos6.3下安装phpredisadmin ... -
redis-install.sh
2016-05-04 08:56 4#!/bin/bash # From here: http: ... -
redis 集群中Session解决方案之Spring Session
2016-05-04 08:54 1315集群中Session解决方案之Spring Session h ... -
使用Spring-data进行Redis操作
2016-05-04 08:54 4791使用Spring-data进行Redis操作 http://z ... -
Shiro集群实现
2016-05-04 08:53 2313apache shiro集群实现(一) session共享 h ...
相关推荐
在这个特定的话题中,我们将深入探讨如何利用Java POI来操作PPT(PowerPoint)文件。以下是关于这个主题的详细讲解: 1. **创建新的PPT文档** 使用Java POI创建一个新的PPT文档首先需要引入相关的库,例如`poi-...
在本示例程序中,我们关注的是如何使用Java和Apache POI库来操作PowerPoint(PPT)文件。POI 提供了丰富的API,使得开发者能够创建、修改、读取和展示PPT文件,而无需依赖Microsoft Office。 首先,我们需要理解...
总结起来,这个压缩包提供了一个全面的示例,展示了如何利用Apache POI在PowerPoint中创建和操作各种图表。无论是用于数据分析、报告制作还是教学演示,掌握这些技能都将极大地提升你的工作效率。通过深入学习和实践...
在"java用poi转ppt为图片"的场景下,我们可以利用POI的API将PPT文件的每一页转换为图像。这样做的好处在于,可以方便地在网络上传输或嵌入到其他不支持PPT格式的应用中。转换过程通常涉及打开PPT文件,遍历每一页...
Java POI 是一个开源项目,由Apache软件基金会维护,它为开发者提供了在Java环境中读取、写入和修改Microsoft Office格式文件...通过深入理解并实践文档中的内容,你将能够熟练地利用Java POI进行各种复杂的文件操作。
在本“poi操作ppt生成图表完整工程”中,我们将会深入探讨如何使用Apache POI库来创建和编辑PowerPoint文档中的图表。 首先,我们需要了解Apache POI提供的API。`XSLFSlideShow`是用于创建和修改PowerPoint幻灯片的...
Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Excel(.xls和.xlsx)、Word(.doc和.docx)以及PowerPoint(.ppt和.pptx)。这个"最全的POI操作示例"集合了各种POI API的使用方法,旨在...
Java使用Poi导出PPT幻灯片java-poi,示例使用XMLSlideShow和XSLFSlide创建了一页胶片,并导入了一张图片,最后通过write方法导出成PPT幻灯片文件。
标题中的“Poi-ppt.zip_885POICOM_PPT模板_javaPPT工具项目_poi ppt”表明这是一个基于Java的项目,利用Apache POI库来操作PPT模板,生成定制化的PPT文件。描述进一步确认了这一点,说明这个项目能够接受模板,并在...
在这个特定的场景中,我们将探讨如何利用POI 3.17版本来操作PowerPoint(PPT)文件,特别是创建饼状图。饼状图是一种常用的可视化工具,用于展示数据中各部分的比例关系。以下是一些关键知识点: 1. **Apache POI ...
Java POI 是一个开源项目,专门用于处理Microsoft Office文件,如Word(.doc/.docx)、Excel(.xls/.xlsx)和PowerPoint(.ppt/.pptx)等。在这个场景中,我们关注的是如何利用Java POI库通过Word模板生成包含特定...
Java中的Apache POI库是处理Microsoft Office文档的强大工具,尤其在Excel操作方面。它允许开发者在Java应用程序中创建、修改和读取Excel文件。在进行批量导入和导出Excel数据时,Apache POI是一个非常实用的选择。...
- Java POI 是一套API,用于处理Microsoft Office格式的文件,如Excel (.xls), Word (.doc), PowerPoint (.ppt)等。 - 它提供了一种与Office格式兼容的方式来操作这些文件,使得开发者可以在不依赖Microsoft ...
在IT行业中,尤其是在数据处理和文档管理领域,Apache POI是一个非常重要的库,它允许开发者使用Java处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。本篇将详细讲解如何利用Apache POI将不同类型的...
poi2[1].5.chm文件可能是POI的一个特定版本(可能是2.1.5)的用户指南或开发者指南,其中可能包含了更深入的教程、示例代码和最佳实践,帮助开发者了解如何高效地利用POI来实现特定功能。例如,如何创建新的Excel...
Apache POI 是一个强大的Java库,用于读取、写入和修改Microsoft Office格式的文件,包括...在实际应用中,根据具体需求选择合适的组件,并结合文档和示例代码,可以有效地利用POI来处理Excel、Word和PowerPoint文件。
对于标题中提到的"java利用poi对Excel进行读写操作支持多sheet格式",这涉及到以下几个关键知识点: 1. **创建Excel工作簿**:使用`WorkbookFactory.create()`方法,可以创建一个新的工作簿对象,无论是...
标签“源码”和“工具”表明这篇内容可能包含了实际的Java代码示例,并且可能涉及了如何将Apache POI作为开发工具来使用。文件列表中的`PptCreate.java`可能是实现上述功能的一个Java源文件,你可以通过阅读和分析这...
Apache POI 是一个流行的 Java 库,用于读取和写入 Microsoft Office 格式的文件,如 Excel、Word 和 PowerPoint。在这个场景中,我们将专注于使用 POI 来在 PowerPoint(PPT)文件中创建多数据柱状图。Apache POI ...
在“java poi操作word模版文件生成表单和修改”的场景中,我们将重点讨论如何利用Java POI来处理Word模板文件,生成表单,并处理包含下拉框等交互元素的情况。 1. **创建和读取Word文档** - 使用Apache POI的`...