응용 프로그램이 Power Point 파일을 편집하고 읽어야 하는 것처럼 Microsoft Office ppt 또는 pptx 형식으로 보고서를 생성해야 하는 경우가 종종 있습니다. MS Office 파일을 생성하려는 Java 프로그래머는 Java 라이브러리를 사용해야 하며 그 중에는 효율성으로 유명한 Apache 라이브러리가 있습니다.
Apache POI는 MS Office 파일을 생성, 수정 및 표시할 수 있는 API입니다. 이 오픈 소스 서점은 Apache Software Foundation에서 개발 및 배포합니다.
이 튜토리얼은 Java를 사용하여 Power Point 파일을 읽고, 만들고, 편집해야 하는 사람들을 대상으로 합니다. Apache POI 라이브러리의 필수 기능과 Power Point 파일에서 작업을 수행할 수 있는 기본 기능에 대해 설명합니다.
Apache POI는 MS Office 파일을 생성, 수정 및 표시할 수 있는 API입니다. 이 오픈 소스 서점은 Apache Software Foundation에서 개발 및 배포합니다.
이 튜토리얼은 Java를 사용하여 Power Point 파일을 읽고, 만들고, 편집해야 하는 사람들을 대상으로 합니다. Apache POI 라이브러리의 필수 기능과 Power Point 파일에서 작업을 수행할 수 있는 기본 기능에 대해 설명합니다.
Apache POI PPT
공식 웹 사이트에서 최신 버전의 Apache POI를 다운로드하여 다운로드하고(Apache POI PPT 다운로드) 프로젝트 폴더에 압축을 푼 다음 필요한 라이브러리를 애플리케이션에 연결할 수 있습니다. 다음 .jar 파일이 필요합니다.
- poi.jar
- poi-oxml.jar
- poi-oxml-schema.jar
- log4j.jar
- xmlbeans.jar
Classes and Methods
Apache POI에는 Excel, Word 및 Power Point 파일 작업을 위한 클래스와 메서드가 포함되어 있습니다. 이전 기사에서 Excel 및 Word에 대한 이러한 클래스에 대해 이미 설명했습니다. 파워포인트와 관련된 클래스를 보여드리겠습니다.
- XMLSlideShow: 프레젠테이션을 만들고 관리하려면 org.apache.poi.xslf.usermoder.
- XSLFSlide: 프레젠테이션에서 슬라이드를 만들고 관리합니다.
- XSLFSlideMaster: 다른 슬라이드 레이아웃이 포함된 프레젠테이션에 사용됩니다. XSLFSlideMaster 클래스는 이러한 레이아웃에 대한 액세스를 제공합니다.
- XSLFSlideLayout: 슬라이드의 레이아웃을 관리할 수 있습니다.
- XSLFTextParagraph: XSLFTextParagraph.
- XSLFTextRun 클래스: 이 클래스는 텍스트의 서식(하이퍼링크, colors, fonts, etc.).
- XSLFTextShape: 이 클래스는 텍스트가 포함된 도형을 처리합니다.
- XSLFHyperlink: 프레젠테이션에서 하이퍼링크를 만들 수 있습니다.
빈 Power Point 프레젠테이션 만들기
이제 Java를 사용하여 프레젠테이션을 만드는 방법을 살펴보겠습니다. 빈 프리젠테이션을 만들려면 XMLSlideShow 클래스를 인스턴스화해야 합니다.
XMLSlideShow ppt = new XMLSlideShow();
FileOutputStream을 사용하여 PPT 문서에 변경 사항을 저장합니다.
File file=new File("C://POIPPT//Examples//example1.pptx");아래 코드는 빈 PowerPoint 문서를 만드는 완전한 프로그램입니다.
FileOutputStream out = 새 FileOutputStream(파일);
ppt.write(출력);
import java.io.File;이 코드를 컴파일하고 실행하면 프로젝트 디렉토리에 다음과 같은 빈 exemple.pptx 파일이 생성됩니다.
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide를 사용합니다.
public class PowerPoint {
public static void main(String args[]) throws IOException{
//비어 있는 새 슬라이드 쇼 만들기
XMLSlideShow ppt = new XMLSlideShow();
//PPT
File file =new File("exemple.pptx");
FileOutputStream fis = 새 FileOutputStream(파일);
//파일 저장
ppt.write(fis);
System.out.println("파일이 성공적으로 생성되었습니다.");
fis.close();
}
}
PowerPoint 프레젠테이션에는 선택할 수 있는 각 슬라이드의 레이아웃이 있습니다. 먼저 사용 가능한 모든 레이아웃 목록을 찾아보겠습니다.
마스터 슬라이드라고 하는 다양한 슬라이드가 있으며 각 슬라이드 마스터에는 여러 슬라이드 레이아웃이 있습니다.
- 메서드를 사용하여 슬라이드 목록을 가져올 수 있습니다. getSlideMasters() 클래스의 XMLSlideShow.
- 각 슬라이드 마스터에서 슬라이드 레이아웃 목록을 가져올 수 있습니다. getSlideLayouts() 클래스의 XSLFSlideMaster.
- 객체에서 레이아웃 이름을 가져올 수 있습니다 레이아웃 사용 getType() 클래스의 XSLFSlideLayout.
아래 프로그램은 사용 가능한 모든 레이아웃을 PPT로 표시합니다.
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster를 사용합니다.
public class SlideLayouts {
public static void main(String args[]) throws IOException{
XMLSlideShow ppt = new XMLSlideShow();
System.out.println("사용 가능한 레이아웃");
//모든 슬라이드 목록 가져오기 masters
for(XSLFSlideMaster master: ppt.getSlideMasters()){
//각 슬라이드의 모든 슬라이드 레이아웃 목록 가져오기 master
for(XSLFSlideLayout layout : master.getSlideLayouts()){
//이름 가져오기 layout
System.out.println(layout.getType());
}
}
}
}
출력:
< / a>< / div>
< / div>
사용 가능한 레이아웃아래 그림은 MS Office 2007에서 사용할 수 있는 몇 가지 레이아웃을 보여줍니다.
BLANK
TITLE_ONLY
SECTION_HEADER
PIC_TX
TITLE_AND_CONTENT
TITLE
VERT_TX< br />VERT_TITLE_AND_TX
TWO_TX_TWO_OBJ
TWO_OBJ
OBJ_TX
< / div>
제목 레이아웃을 사용하는 슬라이드 만들기
레이아웃을 사용하는 슬라이드를 만들어 봅시다 Title:
1- 클래스를 인스턴스화하여 빈 프레젠테이션을 만듭니다 XMLSlideShow:
XMLSlideShow ppt=new XMLSlideShow();
2- 메서드를 사용하여 슬라이드 마스터 목록 가져오기 getSlideMasters()입니다. 그런 다음 인덱스가 있는 원하는 슬라이드 마스터를 선택합니다.
XSLFSlideMaster slideMaster = ppt.getSlideMasters().get(0);
여기서 배열의 위치 0에 있는 기본 슬라이드 마스터를 가져옵니다.
3- 메서드를 사용하여 레이아웃을 선택합니다. getLayout() XSLFSlideMaster 클래스의. 이 메서드는 원하는 레이아웃을 나타내는 정적 변수인 매개 변수를 허용합니다. 이 클래스에는 여러 변수가 있으며 각 변수는 슬라이드 레이아웃을 나타냅니다.
다음 코드에서는 제목 레이아웃을 만드는 방법을 보여 줍니다.
XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE);
4- 슬라이드 레이아웃 개체를 매개 변수로 전달하여 새 슬라이드를 만듭니다.
5- XSLFSlide 클래스의 getPlaceholder() 메서드를 사용하여 자리 표시자를 선택합니다. 이 메서드는 정수 매개 변수를 허용합니다. 값 0을 전달하면 슬라이드의 제목 텍스트 영역에 액세스하는 데 사용되는 XSLFTextSlide 객체가 제공됩니다. setText()로 제목 변경:
XSLFSlide slide = ppt.createSlide(titleLayout);
5- XSLFSlide 클래스의 getPlaceholder() 메서드를 사용하여 자리 표시자를 선택합니다. 이 메서드는 정수 매개 변수를 허용합니다. 값 0을 전달하면 슬라이드의 제목 텍스트 영역에 액세스하는 데 사용되는 XSLFTextSlide 객체가 제공됩니다. setText()로 제목 변경:
XSLFTextShape title = slide.getPlaceholder(0);
title.setText("자바코더");
전체 프로그램은 다음과 같습니다.
import java.io.File;출력:
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.SlideLayout;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide를 사용합니다.
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster를 사용합니다.
import org.apache.poi.xslf.usermodel.XSLFTextShape;
public class TitleLayout {
public static void main(String args[]) throws IOException{
XMLSlideShow ppt = new XMLSlideShow();
//slidemaster
XSLFSlideMaster slideMaster = ppt.getSlideMasters().get(0);
//원하는 슬라이드 레이아웃을 가져옵니다
XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE);
//선택한 slidelayout으로 슬라이드 만들기layout
XSLFSlide slide = ppt.createSlide(titleLayout);
//제목인 자리 표시자 0 수정
XSLFTextShape title = slide.getPlaceholder(0);
//제목 편집
title.setText("JavaCoder");
//새 pptx
파일 file=new File("Exemple.pptx");
FileOutputStream fos = 새로운 FileOutputStream(파일);
//변경사항 저장
ppt.write(fos);
System.out.println("슬라이드가 성공적으로 생성되었습니다.");
fos.close();
}
}
slide가 성공적으로 생성되었습니다
다음 단계에 따라 제목과 레이아웃을 사용하여 슬라이드를 만들어 보겠습니다.
1- 클래스를 인스턴스화하여 빈 프레젠테이션을 만듭니다 XMLSlideShow.
2- 메서드로 모든 슬라이드마스터 목록을 가져옵니다 getSlideMasters()
3- 메서드를 사용하여 원하는 레이아웃을 가져옵니다. getLayout() 클래스의 XSLFSlideMaster:
4- 레이아웃 개체를 매개변수로 전달하여 새 슬라이드를 만듭니다.
XSLFSlide slide = ppt.createSlide(SlideLayout.TITLE_AND_CONTENT);
5- getPlaceholder()를 사용하여 자리 표시자를 선택합니다.
XSLFTextShape title = slide.getPlaceholder(1);
title1.setText("소개");
6 - XSLFTextShape 클래스의 clearText() 메서드를 호출하여 슬라이드 텍스트를 지웁니다.
body.clearText();7- addNewTextParagraph() 메서드를 사용하여 새 단락을 추가합니다. 이제 addNewTextRun() 메서드를 사용하여 텍스트를 추가한 다음 setText().
body.addNewTextParagraph().addNewTextRun().setText("이것은 내 첫 번째 슬라이드 본문입니다.");전체 코드는 다음과 같습니다.
import java.io.File;출력:
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.SlideLayout을 사용합니다.
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide를 사용합니다.
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster를 사용합니다.
import org.apache.poi.xslf.usermodel.XSLFTextShape;
public class TitleAndBodyLayout {
public static void main(String args[]) throws IOException{
XMLSlideShow ppt = new XMLSlideShow();
//slidemaster
XSLFSlideMaster slideMaster = ppt.getSlideMasters().get(0);
//원하는 슬라이드 레이아웃을 가져옵니다
XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE);
//선택한 slidelayout으로 슬라이드 만들기layout
XSLFSlide slide = ppt.createSlide(titleLayout);
//제목인 자리 표시자 0 수정
XSLFTextShape title = slide.getPlaceholder(0);
//제목 편집
title.setText("소개");
//텍스트인 자리 표시자 1을 선택합니다
XSLFTextShape body = slide.getPlaceholder(1);
//오래된 내용 삭제
body.clearText();
//단락 추가
body.addNewTextParagraph().addNewTextRun().setText("첫 번째 슬라이드");
//새 pptx
파일 file=new File("Exemple.pptx");
FileOutputStream fos = 새로운 FileOutputStream(파일);
//변경사항 저장
ppt.write(fos);
System.out.println("슬라이드가 성공적으로 생성되었습니다.");
fos.close();
}
}
slide가 성공적으로 생성되었습니다
슬라이드 크기 가져오기 및 변경
슬라이드 크기는 XMLSlideShow.
java.awt.Dimension pgsize = ppt.getPageSize();
java에서 슬라이드 크기를 변경하려면 XMLSlideShow.
ppt.setPageSize(new java.awt.Dimension(1024, 768));
전체 프로그램은 다음과 같습니다.
import java.awt.Dimension;출력:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
public class ChangingSlide {
public static void main(String args[]) throws IOException{
File file = new File("Exemple.pptx");
XMLSlideShow ppt = 새 XMLSlideShow();
//현재 차원 가져오기
차원 pptsize = ppt.getPageSize();
System.out.println("현재 슬라이드 크기:");
System.out.println("너비:" + pptsize.width);
System.out.println("높이:" + pptsize.height);
//차원 변경
ppt.setPageSize(new java.awt.Dimension(1024,400));
FileOutputStream out = 새 FileOutputStream(파일);
ppt.write(출력);
System.out.println("슬라이드 크기가 변경되었습니다.");
out.close();
}
}
현재 슬라이드 크기:크기를 변경한 후 슬라이드는 다음과 같이 나타납니다.
width:720
height:540
슬라이드 크기가 변경되었습니다
setSlideOrder() 메서드를 사용하여 순서를 변경할 수 있습니다. getSlides() 메서드로 모든 슬라이드를 검색한 다음 슬라이드 표에서 선택하고 setSlideOrder() 메서드를 사용하여 순서를 변경합니다.
//세 번째 슬라이드 선택
XSLFSlide slide = slides.get(2);
//먼저 넣기
ppt.setSlideOrder(slide, 1);
다음 코드는 예를 보여줍니다.
import java.io.File;슬라이드 1과 3 사이의 스왑 전후의 표시:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide를 사용합니다.
public class ReorderSlide {
public static void main(String args[]) throws IOException{
File file=new File("exemple.pptx");
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
//슬라이드 목록 검색
java.util.Listslides = ppt.getSlides();
//세 번째 슬라이드 선택
XSLFSlide selectesdslide = slides.get(2);
//첫 번째 위치에 놓습니다
ppt.setSlideOrder(selectesdslide, 0);
FileOutputStream fos = 새로운 FileOutputStream(파일);
ppt.쓰기(fos);
fos.close();
}
}
Commentaires (12)
Connectez-vous pour commenter
Rejoignez la discussion et partagez vos connaissances avec la communauté
Excellent tutoriel !
N'hésitez pas si vous avez des questions.