2016-07-25 76 views
1

我用apache POI創建了PPT演示文稿,我想用下面的代碼爲PPT添加Title。但它拋出編譯錯誤作爲Poi幻燈片格式化

類型的表達式必須是一個數組類型,但它解決了列出

public static void main(String args[]) throws IOException{ 

     //creating presentation 
     XMLSlideShow ppt = new XMLSlideShow();    

     //getting the slide master object 
     XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0]; 

     //get the desired slide layout 
     XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE); 

     //creating a slide with title layout 
     XSLFSlide slide1 = ppt.createSlide(titleLayout); 

     //selecting the place holder in it 
     XSLFTextShape title1 = slide1.getPlaceholder(0); 
+0

哪條線是反對? – Gagravarr

回答

1

這裏的問題是,ppt.getSlideMasters()回報List<XSLFSlideMaster>而不是XSLFSlideMaster[]爲你」重新期待。 所以,對這個問題要解決下面的代碼應該是OK:

import org.apache.poi.xslf.usermodel.*; 

import java.io.FileOutputStream; 
import java.io.IOException; 


public class Slideshow { 
    public static void main(String[] args) throws IOException { 
     //creating presentation 
     try (FileOutputStream out = new FileOutputStream("example.ppt"); 
      XMLSlideShow ppt = new XMLSlideShow();) { 
      //getting the slide master object 
      XSLFSlideMaster slideMaster = ppt.getSlideMasters().get(0); 

      //get the desired slide layout 
      XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE); 

      //creating a slide with title layout 
      XSLFSlide slide1 = ppt.createSlide(titleLayout); 

      //selecting the place holder in it 
      XSLFTextShape title1 = slide1.getPlaceholder(0); 
      title1.setText("Text title"); 
      ppt.write(out); 
     } 
    } 
} 

而結果將是: enter image description here