PowerPoint文件读取工具类

标签: powerpoint 文件 工具 | 发表时间:2013-08-13 00:03 | 作者:
出处:http://www.iteye.com

调用示例:

 

 

File powerPointFile = new File("D:\\temp.ppt");

//读取PowerPoint文档中所有文本内容,以字符串形式返回  
System.out.println(PowerPointFileUtil.extractTextFromPowerPointFile(powerPointFile , "," , ";"));

 

 

工具类源码:

 

/**
 * PowerPointFileUtil.java
 * Copyright ® 2010 窦海宁
 * All right reserved
 */

package org.aiyu.core.common.util.file;

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.apache.poi.hslf.HSLFSlideShow;
import org.apache.poi.hslf.model.AutoShape;
import org.apache.poi.hslf.model.Shape;
import org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.usermodel.SlideShow;

/**
 * <p>PowerPoint文件工具类
 * 
 * <p>通用的PowerPoint文件工具类,可用于从PowerPoint文档中抽取文本信息
 * 
 * @author  窦海宁, chong0660@sina.com
 * @since   AiyuCommonCore-1.0
 * @version AiyuCommonCore-1.0
 */
@SuppressWarnings("unchecked")
public abstract class PowerPointFileUtil {

	/**
	 * <p>从PowerPoint文档中提取文本信息
	 * 
	 * @param  powerPointFile PowerPoint文件
	 * @param  shapeSeparator Shape分隔符
	 * @param  slideSeparator Slide分隔符
	 * 
	 * @return 提取后的文本信息
	 * 
	 * @modify 窦海宁, 2013-07-03
	 */
	public static String extractTextFromPowerPointFile(File powerPointFile , String shapeSeparator , String slideSeparator) {

		StringBuffer returnValue = new StringBuffer();
		if (powerPointFile != null && slideSeparator != null && shapeSeparator != null) {

			if (powerPointFile.isFile()) {

				try {

					SlideShow slideShow     = new SlideShow(new HSLFSlideShow(powerPointFile.getCanonicalPath()));
					Iterator  slideIterator = PowerPointFileUtil.readSlideShow(slideShow).iterator();
					//遍历Slide
					while (slideIterator.hasNext()) {

						Iterator shapeIterator = ((List) slideIterator.next()).iterator();
						//遍历Shape
						while (shapeIterator.hasNext()) {

							Object shapeValue = shapeIterator.next();
							if (shapeValue != null) {

								returnValue.append((String) shapeValue);
								if (shapeIterator.hasNext()) {

									returnValue.append(shapeSeparator);
								}
							}
						}
						if (slideIterator.hasNext()) {

							returnValue.append(slideSeparator);
						}
					}
				} catch (Exception ex) {

					ex.printStackTrace();
				}
			}
		}
		return StringUtils.trimToNull(returnValue.toString());
	}

	/**
	 * <p>读取PowerPoint文件中的幻灯片对象
	 * 
	 * @param  slideShow SlideShow对象
	 * 
	 * @return 读取出的工作薄列表
	 * 
	 * @modify 窦海宁, 2008-08-07
	 */
	public static List readSlideShow(SlideShow slideShow) {

		List slideList = null;
		if (slideShow != null) {

			slideList = new ArrayList();
			Slide[] slides = slideShow.getSlides();
			for (int i = 0 ; i < slides.length ; i++) {

				slideList.add(PowerPointFileUtil.readSlide(slides[i]));
			}
		}
		return slideList;
	}

	/**
	 * <p>读取指定的Slide中的数据
	 * 
	 * @param  slide Slide对象
	 * 
	 * @return 读取出的Slide数据列表
	 * 
	 * @modify 窦海宁, 2008-08-07
	 */
	public static List readSlide(Slide slide) {

		List shapeList = null;
		if (slide != null) {

			shapeList = new ArrayList();
			Shape[] shape = slide.getShapes();
			for (int i = 0 ; i < shape.length ; i++) {

				shapeList.add(PowerPointFileUtil.readShape(shape[i]));
			}
		}
		return shapeList;
	}

	/**
	 * <p>读取指定的图形的数据
	 * 
	 * @param  shape Slide中的图形对象
	 * 
	 * @return 读取出的图形数据
	 * 
	 * @modify 窦海宁, 2010-01-07
	 */
	public static Object readShape(Shape shape) {

		String returnValue = null;
		if (shape != null) {

			if (shape instanceof AutoShape) {
				try {

					returnValue = ((AutoShape) shape).getText();
				} catch (Exception ex) {

					ex.printStackTrace();
				}
			}
		}
		return returnValue;
	}

}

 

您好,我是窦海宁,现在是一名免费开源工具研发人员,如果您喜欢我的开源代码,如果您希望我更好的发展下去,为您提供更多更好的开源代码……在这里感谢您的捐助。

 

捐助地址: https://me.alipay.com/chong0660





已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [powerpoint 文件 工具] 推荐:

PowerPoint文件读取工具类

- - ITeye博客
File powerPointFile = new File("D:\\temp.ppt"); //读取PowerPoint文档中所有文本内容,以字符串形式返回 System.out.println(PowerPointFileUtil.extractTextFromPowerPointFile(powerPointFile , "," , ";"));.

Powerpoint触发器的应用

- 麒麟 - Nordri® 团队博客——专业于有效的信息传递设计
有朋友问什么是PowerPoint中的触发器,从原理上讲其实很简单,我理解为:通过按钮点击控制ppt页面中已设定动画的执行. 传统的方式对于动画的执行一般为“单击”,也有“之后”“之前”控制动画执行的条件,需要注意的是,这里的“单击”是在页面空白处,单击执行动画,当页面所有的动画执行完毕后,再次单击进入下一页,也就是说要想观看下一页的内容,必须在当前页所有动画放映完之后.

为什么不学一下PowerPoint?

- xiko - 般若黑洞
这是为对PPT还陌生的你写的东西. 互联网给了我们太多的选择,无论什么任务,总会有人开发专门的工具来应付. 当我们疲于在这些专业的工具中折腾的时候,反而常常忽略我们手头上这些软件的功能. 你可能为了快速打开某个文件夹专门使用Launchy等专业的快速启动工具,但却没有留意过使用Windows的快捷方式就足够简单.

开启PowerPoint演示者视图

- 麒麟 - Nordri® 团队博客——专业于有效的信息传递设计
曾经有个朋友参加一次行业内部的竞技比赛,成功进入决赛的个人宣讲环节. 为了能够记住每页幻灯片上对应的文字,他把所有要讲的话输入了一遍,放置在幻灯片页面的最下部分,并设置文本为浅浅的灰尽量不引起观众的注意. 相信不少朋友也背讲义的经历,其实powerpoint提供的演示者视图对演讲者来说是个非常好用的工具,制作幻灯时在编辑视图下输入的备注内容就可以显示在演示者视图中,以下为开启演示者视图的操作过程:.

PowerPoint打包下载视频教程

- L - 且行资源
适用PowerPoint版本:2007(但思路方法和基本操作同样用于2010与2003等版本). 教程作者:oeasy,内容讲解比较丰趣. 教程目录和下载地址(下面内容有一个错位,因实在不方便修改请大家注意,请04开始后向移一):. ppt1_混个脸熟:http://down.qiexing.com/download?did=501.

十招让你的Powerpoint脱胎换骨(下)

- 贝贝龙 - 褪墨
上回我们公布了PPT设计的五招实战技巧,其中包括夺目耀眼照片术,清新明快排版术,朴实无华色彩术等等可以为我们带来令人震撼的结果的招式. 今天,我们把PPT设计的第六到第十招一并打包奉送给诸位,我们要教给你武功秘籍的最高境界,无招胜有招,让你学会如何通过简化设计来让你的PPT设计功力突飞猛进. #6 无招胜有招,越简单越好.

如何为PPT生成目录(PowerPoint 2007/2010)

- yelo - 般若黑洞
大概PPT最初的开发者也没有想到,PowerPoint甚至会应用到工作汇报以及咨询报告这种场合. 所以不管是没有考虑还是有意为之,开发者没有为PowerPoint添加生成目录的功能. 确实,在演讲类的PPT中,这样的功能没有什么意义,但无论对于教学课件,还是长达几十页的文档报告,我们都常常需要为PPT生成目录,以方便读者自己查阅PPT中的内容,特别是在PPT被打印在纸张上之后.

AnyBizSoft PDF to PowerPoint v1.0.0.8 绿色英文破解版

- 勇 - 姥姥精品软件坊
        AnyBizSoft PDF to PowerPoint 是一个很方便的将PDF文档直接转换成PPT或PPTX的实用工具,转换后的PPT/PPTX文件能保持原有的页面布局、图片、超链接等元素,转换效果非常好.        本版是绿色破解版,无功能使用限制的. 要软件正常使用,需将程序目录拷贝到C:\Program Files 下,并且运行“绿化.bat”和安装VC运行库(vcredist.msi),之外,系统还要安装Microsoft Office PPT组件.

物理学家、将军和CEO们都认为应抛弃PowerPoint

- - Solidot
几天前有报道说,费米实验室大强子对撞机双周论坛禁止使用PowerPoint幻灯片,会议联合组织者Andrew Askew说,幻灯片约束了会议的讨论,移除幻灯片就像是移除了演讲者和听众之间的一大障碍,交流是双向的,没有了幻灯片的约束,观众开始积极参与讨论. 类似的故事我们听说过很多次,许多人对此都有同感,其中包括了美国的将军和公司的高管:海军陆战队联合打击指挥官James N.

Gnome Sushi:文件快速预览工具

- Leo - Wow! Ubuntu
Gnome Sushi 是一个类似于 Gloobus Preview 的文件管理器扩展工具,提供快速预览功能. Sushi 是随 Gnome 3.2 新发布的一个工具,使用  GtkClutter 和 Javascript 技术构建,支持所有的文件格式,包括图片、音乐、视频、PDF 及字体等等. Sushi 可同时支持 Unity 及 Gnome Shell 桌面环境,而且除了 Nautilus 外,它也可以运行于其它文件管理器中.