POI 로 파워 포인트 파일 읽 기(ppt 와 pptx 버 전 호 환)
호출 예시:
File powerPointFile = new File("D:\\temp.ppt");
// PowerPoint ,
System.out.println(PowerPointFileUtil.extractTextFromPowerPointFile(powerPointFile , "," , ";"));
도구 종류 원본:
/**
* BasePowerPointFileUtil.java
* Copyright ® 2017
* All right reserved
*/
package org.aiyu.core.common.util.file.office;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.sl.usermodel.AutoShape;
import org.apache.poi.sl.usermodel.Shape;
import org.apache.poi.sl.usermodel.Slide;
import org.apache.poi.sl.usermodel.SlideShow;
/**
* PowerPoint
*
*
PowerPoint , PowerPoint
*
* @author , [email protected]
* @since AiyuCommonCore-1.0
* @version AiyuCommonCore-1.0
*/
public abstract class BasePowerPointFileUtil {
/**
*
PowerPoint
*
* @param slideShow SlideShow
*
* @return
*
* @modify , 2017-01-18
*/
protected static List readSlideShow(SlideShow slideShow) {
List slideList = null;
if (slideShow != null) {
slideList = new ArrayList();
List slides = slideShow.getSlides();
for (int i = 0 ; i < slides.size() ; i++) {
slideList.add(BasePowerPointFileUtil.readSlide((Slide) slides.get(i)));
}
}
return slideList;
}
/**
*
Slide
*
* @param slide Slide
*
* @return Slide
*
* @modify , 2017-01-18
*/
protected static List readSlide(Slide slide) {
List shapeList = null;
if (slide != null) {
shapeList = new ArrayList();
List shapes = slide.getShapes();
for (int i = 0 ; i < shapes.size() ; i++) {
shapeList.add(BasePowerPointFileUtil.readShape((Shape) shapes.get(i)));
}
}
return shapeList;
}
/**
*
*
* @param shape Slide
*
* @return
*
* @modify , 2017-01-18
*/
protected 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;
}
}
PowerPoint 2003 버 전 도구 클래스:
/**
* PowerPoint2003FileUtil.java
* Copyright ® 2010
* All right reserved
*/
package org.aiyu.core.common.util.file.office;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hslf.usermodel.HSLFSlideShow;
import org.apache.poi.hslf.usermodel.HSLFSlideShowImpl;
import org.apache.poi.sl.usermodel.SlideShow;
/**
* PowerPoint2003
*
*
PowerPoint2003 , PowerPoint
*
* @author , [email protected]
* @since AiyuCommonCore-1.0
* @version AiyuCommonCore-1.0
*/
public abstract class PowerPoint2003FileUtil extends BasePowerPointFileUtil {
/**
*
PowerPoint
*
* @param powerPointFile PowerPoint
* @param shapeSeparator Shape
* @param slideSeparator Slide
*
* @return
*
* @modify , 2017-01-18
*/
protected 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 HSLFSlideShow(new HSLFSlideShowImpl(powerPointFile.getCanonicalPath()));
Iterator slideIterator = PowerPoint2003FileUtil.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());
}
}
PowerPoint 2007 버 전 도구 클래스:
/**
* PowerPoint2007FileUtil.java
* Copyright ® 2017
* All right reserved
*/
package org.aiyu.core.common.util.file.office;
import java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
/**
* PowerPoint2007
*
*
PowerPoint2007 , PowerPoint
*
* @author , [email protected]
* @since AiyuCommonCore-1.0
* @version AiyuCommonCore-1.0
*/
public abstract class PowerPoint2007FileUtil extends BasePowerPointFileUtil {
/**
*
PowerPoint
*
* @param powerPointFile PowerPoint
* @param shapeSeparator Shape
* @param slideSeparator Slide
*
* @return
*
* @modify , 2017-01-18
*/
protected static String extractTextFromPowerPointFile(File powerPointFile , String shapeSeparator , String slideSeparator) {
StringBuffer returnValue = new StringBuffer();
if (powerPointFile != null && slideSeparator != null && shapeSeparator != null) {
if (powerPointFile.isFile()) {
try {
XMLSlideShow slideShow = new XMLSlideShow(new FileInputStream(powerPointFile));
Iterator slideIterator = PowerPoint2007FileUtil.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());
}
}
통합 호출 도구 클래스:
/**
* PowerPointFileUtil.java
* Copyright ® 2017
* All right reserved
*/
package org.aiyu.core.common.util.file.office;
import java.io.File;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
/**
* PowerPoint
*
*
PowerPoint , PowerPoint
*
* @author , [email protected]
* @since AiyuCommonCore-1.0
* @version AiyuCommonCore-1.0
*/
public abstract class PowerPointFileUtil extends BasePowerPointFileUtil {
/**
*
PowerPoint
*
* @param powerPointFile PowerPoint
* @param shapeSeparator Shape
* @param slideSeparator Slide
*
* @return
*
* @modify , 2017-02-06
*/
public static String extractTextFromPowerPointFile(File powerPointFile , String shapeSeparator , String slideSeparator) {
String resultText = null;
if (powerPointFile != null && powerPointFile.exists()) {
String extension = FilenameUtils.getExtension(powerPointFile.getName());
if (StringUtils.equalsIgnoreCase("ppt" , extension)) {
//Office2003
resultText = PowerPoint2003FileUtil.extractTextFromPowerPointFile(powerPointFile , shapeSeparator , slideSeparator);
} else if (StringUtils.equalsIgnoreCase("pptx" , extension)) {
//Office2007
resultText = PowerPoint2003FileUtil.extractTextFromPowerPointFile(powerPointFile , shapeSeparator , slideSeparator);
} else {
//
}
}
return resultText;
}
}
통합 호출 도구 클래스 는 파일 확장자(PPT 와 PPTX,대소 문자 구분 없 음)를 통 해 파일 버 전 을 판단 하 며 당분간 더 좋 은 방법 을 생각 하지 못 했 습 니 다.이 도구 클래스 사용 POI3.15 목표 기기 가 OFFICE 소프트웨어 를 설치 하지 않 아 도 파일 읽 기와 쓰기 가 가능 합 니 다.
다운로드 횟수:23
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.