`
282912533
  • 浏览: 7457 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Java 利用POI生成PPT

阅读更多
JAVA生成处理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"));
		
		// 完成后, 找到文件 , 右键属性查看:)
	}
}
分享到:
评论
11 楼 zdpxf2012 2012-11-22  
有jar提供下载没?
10 楼 pyn0813 2012-04-24  
用POI向PPT中插入图片后,怎么定位删除到PPT上的某一张图片啊。求解....
9 楼 zyplaiai 2010-09-27  
代码是可以自己运行的,连代码都不想自己运行看看,你还能学到东西吗?
8 楼 sodabao 2010-03-19  
poi操作execl word毕竟多,ppt还是比较少 ,不过可以算长见识
7 楼 Angel_Night 2010-03-18  
poi还可以操作ppt啊。。。

长知识了,以前白痴的认为只能操作excel呢。。。
6 楼 fxyc 2010-03-17  
我也在学POI,这个我感觉自己拿代码去运行就可以了。
5 楼 dayone 2010-01-14  
zcq100 写道
没图没真相


说的很对,需要截图,否则就看不下去了
4 楼 xiaoweiwei 2010-01-12  
截图呢?
想看看!!
3 楼 zcq100 2010-01-12  
没图没真相
2 楼 bavnnsym 2010-01-12  
生成什么东东,,,截图看看,,,,图都没,,,就不想看下去了
1 楼 langhua9527 2010-01-12  
什么需求啊,MS的软件多好的,还要重新写一个吗?

相关推荐

    java实现poi模板生成PPT文件代码

    总结来说,使用Java和Apache POI生成PPT文件涉及理解PPT文件结构、掌握POI API、创建模板、数据绑定和错误处理等多个步骤。在给定的代码中,可能有两个不同的迭代实现,分别对应两种不同的处理方式或优化策略。通过...

    poi操作ppt生成图表完整工程.zip

    总的来说,通过Apache POI,开发者能够方便地在Java环境下生成PowerPoint文档,并且能自由地在其中添加和编辑图表,这对于自动化报告生成或者数据分析展示来说非常有用。这个“poi操作ppt生成图表完整工程”就是一个...

    java用poi转ppt为图片和用pdfbox转pdf为图片的demo

    在"java用poi转ppt为图片"的场景下,我们可以利用POI的API将PPT文件的每一页转换为图像。这样做的好处在于,可以方便地在网络上传输或嵌入到其他不支持PPT格式的应用中。转换过程通常涉及打开PPT文件,遍历每一页...

    POI操作PPT文档(导入,导出,读取,添加,拼接,替换文本,页面排序)

    POI(Apache POI)是一款开源的Java库,用于读取和写入各种Microsoft Office文件格式,包括PPT文档。本文档将介绍如何使用POI操作PPT文档,包括导入、导出、读取、添加、拼接、替换文本、页面排序等操作。 一、POI...

    java实现生成ppt文件

    在Java编程环境中,生成PPT(PowerPoint)文件是一项实用且常见的任务,特别是在自动化报告、数据分析展示或系统集成等场景中。...通过结合理论知识与实际代码,你将能够熟练地使用Java和Apache POI生成PPT文件。

    使用poi操作PPT

    本资源《初始版本》是精简版,《PPT模板生成PPT》是实际项目中的例子,具体就是使用poi去操作PPT,替换PPT中特定的文本,用${key}这种标识在PPT中存放,java代码使用value去替换PPT中的${key},从而生成新的PPT供大家...

    java POI生成word.zip

    在本案例中,"java POI生成word.zip"是一个压缩包,包含使用Java POI库生成Word文档的示例代码。以下是基于这个主题的相关知识点: 1. **Java POI库介绍** - Java POI 是一套API,用于处理Microsoft Office格式的...

    JAVA用POI生成Word文档

    要使用POI生成Word文档,首先需要在项目中引入Apache POI的相关依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;poi &lt;version&gt;4.1.2 &lt;groupId&gt;...

    使用POI读写PowerPoint文件(兼容ppt与pptx版本)

    Apache POI是一个流行的开源Java库,专门用于读写Microsoft Office格式的文件,包括PPT和PPTX。本篇将详细介绍如何使用Apache POI来处理这两种不同版本的PowerPoint文件。 首先,让我们了解一下Apache POI的基本...

    通过POI将PPT插入图片并导出实例

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Word(.docx)、Excel(.xlsx)和PowerPoint...通过熟练掌握POI库的使用,我们可以构建高效、灵活的PPT生成和编辑工具,满足各种业务需求。

    Java利用POI将office转成HTML

    Apache POI是Java社区开发的一个开源项目,专门用于读写Microsoft Office格式的文件,包括Word(.doc/.docx)、Excel(.xls/.xlsx)等。 首先,让我们深入了解Java中的POI库。POI提供了HSSF和XSSF两个API,分别用于...

    java实现poi模板生成PPT文件代码 开发技术.zip

    Java使用Apache POI库生成PPT文件是一种常见的技术,尤其在企业级应用开发中,用于自动化报告或数据可视化。Apache POI是Java平台上的一个开源项目,它提供了处理Microsoft Office格式文档的能力,包括Word(.doc/....

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

    总结起来,这个压缩包提供了一个全面的示例,展示了如何利用Apache POI在PowerPoint中创建和操作各种图表。无论是用于数据分析、报告制作还是教学演示,掌握这些技能都将极大地提升你的工作效率。通过深入学习和实践...

    java生成ppt在ppt中插入表格

    java生成ppt在ppt中插入表格

    poi导出多数据柱状图图表到ppt

    总的来说,使用 Apache POI,你可以根据实际需求创建复杂且动态的柱状图,这对于数据展示和报告生成非常有用。通过深入了解 POI 的 API 和提供的示例代码,你可以轻松地将数据转化为生动直观的可视化图表。

    Poi-ppt.zip_885POICOM_PPT模板_javaPPT工具项目_poi ppt

    标题中的“Poi-ppt.zip_885POICOM_PPT模板_javaPPT工具项目_poi ppt”表明这是一个基于Java的项目,利用Apache POI库来操作PPT模板,生成定制化的PPT文件。描述进一步确认了这一点,说明这个项目能够接受模板,并在...

    使用java Apache poi 根据word模板生成word报表.rar

    总之,这个项目展示了如何利用Java和Apache POI库将动态数据集成到Word模板中,生成自定义报表。这个技能在企业级应用中非常有用,特别是在需要批量生成报告或自动化文档处理的场景下。通过熟练掌握这一技术,开发者...

    poi操作ppt图表.zip

    首先,Apache POI提供了HSLF(用于低级API,处理老版本的*.ppt文件)和XSLF(用于处理OOXML格式的*.pptx文件)两个包,以便于我们在Java环境中创建、读取和修改PowerPoint文件。对于新版本的PPTX文件,我们主要会...

    poi导出多条数据雷达图RADAR到ppt

    在这个特定的场景中,我们需要使用POI来实现在PPT中生成多条数据的雷达图(也称为蜘蛛图或网络图)。这种图表类型在数据分析中特别有用,因为它可以有效地展示多个变量之间的相对表现。 Apache POI提供了一个叫做`...

Global site tag (gtag.js) - Google Analytics