POI PPT模板字段替换

#遇到一个需求就是,给一个固定模板往固定位置填写代码

<dependency>
	
	<groupId>org.apache.poigroupId>
	<artifactId>poiartifactId>
	<version>3.13version>
dependency>
<dependency>
	
	<groupId>org.apache.poigroupId>
	<artifactId>poi-ooxmlartifactId>
	<version>3.13version>
dependency>

POI PPT模板字段替换_第1张图片
图片的替换字段要用插入文本框插入,而且不能复制,只能一个一个插入
#代码

package com.baic.util;

import org.apache.poi.sl.usermodel.SlideShow;
import org.apache.poi.xslf.usermodel.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.ebon.framework.util.NullUtil;

import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.io.*;
import java.util.List;
import java.util.Map;

/**
 * 读取ppt模板替换模板指定数据
 * 
 * @author wuyahui
 * 
 */
public class PPTToNewPPTUtils {
     

	private static Logger logger = LoggerFactory.getLogger(PPTToNewPPTUtils.class);

	public static void changPPT(String inputUrl,String outputUrl, Map<String, String> textMap) {
     
        try {
     
            //读取模板ppt
            SlideShow ppt = new XMLSlideShow(new FileInputStream(new File(inputUrl)));
            //提取文本信息
            List<XSLFSlide> slides = ppt.getSlides();
            for (XSLFSlide slide : slides) {
     
                List<XSLFShape> shapes = slide.getShapes();
                for(int i=0;i<shapes.size();i++){
     
                    Rectangle2D anchor = shapes.get(i).getAnchor();
                    if (shapes.get(i) instanceof XSLFTextBox) {
     
                        XSLFTextBox txShape = (XSLFTextBox) shapes.get(i);
                        if (txShape.getText().contains("{rName}")) {
     
                            // 替换文字内容.用TextRun获取替换的文本来设置样式
                        	if (NullUtil.isNotNull(textMap.get("rName"))) {
     
                     		   txShape.setText(txShape.getText().replace("{rName}", textMap.get("rName")));
                        	} else {
     
                        	   txShape.setText(txShape.getText().replace("{rName}", ""));
							}
                            txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(10d); // 设置字体大小
                        }
                        if (txShape.getText().contains("{pName}")) {
     
                            // 替换文字内容.用TextRun获取替换的文本来设置样式
                        	if (NullUtil.isNotNull(textMap.get("pName"))) {
     
                                txShape.setText(txShape.getText().replace("{pName}", textMap.get("pName")));
                        	} else {
     
                        		txShape.setText(txShape.getText().replace("{pName}", ""));
							}
                            txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(10d); // 设置字体大小

                        }
                        if (txShape.getText().contains("{code}")) {
     
                            // 替换文字内容.用TextRun获取替换的文本来设置样式
                            if (NullUtil.isNotNull(textMap.get("code"))) {
     
                            	txShape.setText(txShape.getText().replace("{code}", textMap.get("code")));
                        	} else {
     
                        		txShape.setText(txShape.getText().replace("{code}", ""));
							}
                            txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(10d); // 设置字体大小

                        }
                        if (txShape.getText().contains("{tCode}")) {
     
                            // 替换文字内容.用TextRun获取替换的文本来设置样式
                        	 if (NullUtil.isNotNull(textMap.get("tCode"))) {
     
                        		txShape.setText(txShape.getText().replace("{tCode}", textMap.get("tCode")));
                         	} else {
     
                         		 txShape.setText(txShape.getText().replace("{tCode}", ""));
 							}
                            txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(10d); // 设置字体大小

                        }
                        if (txShape.getText().contains("{version}")) {
     
                            // 替换文字内容.用TextRun获取替换的文本来设置样式
                        	 if (NullUtil.isNotNull(textMap.get("version"))) {
     
                        		txShape.setText(txShape.getText().replace("{version}", textMap.get("version")));
                         	} else {
     
                         		txShape.setText(txShape.getText().replace("{version}", ""));
 							}
                            txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(10d); // 设置字体大小

                        }
                        if (txShape.getText().contains("{name}")) {
     
                            // 替换文字内容.用TextRun获取替换的文本来设置样式
                        	 if (NullUtil.isNotNull(textMap.get("name"))) {
     
                        		txShape.setText(txShape.getText().replace("{name}", textMap.get("name")));
                         	} else {
     
                         		txShape.setText(txShape.getText().replace("{name}", ""));
 							}
                            txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(30d); // 设置字体大小
                            txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontFamily("微软雅黑 (标题)"); // 字体格式
                            txShape.getTextParagraphs().get(0).getTextRuns().get(0).setBold(true); // 加粗
                            txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontColor(new Color(0,151,224)); // 字体颜色
                            txShape.setHorizontalCentered(true); //  置中
                        }
                        if (txShape.getText().contains("{name1}")) {
     
                            // 替换文字内容.用TextRun获取替换的文本来设置样式
                        	 if (NullUtil.isNotNull(textMap.get("name1"))) {
     
                        		txShape.setText(txShape.getText().replace("{name1}", textMap.get("name1")));	
                         	} else {
     
                         		txShape.setText(txShape.getText().replace("{name1}", ""));
 							}
                            txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(12d); // 设置字体大小
                        }
                        if (txShape.getText().contains("{name2}")) {
     
                            // 替换文字内容.用TextRun获取替换的文本来设置样式
                        	 if (NullUtil.isNotNull(textMap.get("name2"))) {
     
                        		txShape.setText(txShape.getText().replace("{name2}", textMap.get("name2")));
                         	} else {
     
                         		txShape.setText(txShape.getText().replace("{name2}", ""));
 							}
                            txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(12d); // 设置字体大小
                        }
                        if (txShape.getText().contains("{name3}")) {
     
                            // 替换文字内容.用TextRun获取替换的文本来设置样式
                        	 if (NullUtil.isNotNull(textMap.get("name3"))) {
     
                        		txShape.setText(txShape.getText().replace("{name3}", textMap.get("name3")));
                         	} else {
     
                         		txShape.setText(txShape.getText().replace("{name3}", ""));
 							}
                            txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(12d); // 设置字体大小
                        }
                        if (txShape.getText().contains("{name4}")) {
     
                            // 替换文字内容.用TextRun获取替换的文本来设置样式
                        	 if (NullUtil.isNotNull(textMap.get("name4"))) {
     
                        		txShape.setText(txShape.getText().replace("{name4}", textMap.get("name4")));
                         	} else {
     
                         		txShape.setText(txShape.getText().replace("{name4}", ""));
 							}
                            txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(12d); // 设置字体大小
                        }
                        if (txShape.getText().contains("{name5}")) {
     
                            // 替换文字内容.用TextRun获取替换的文本来设置样式
                        	 if (NullUtil.isNotNull(textMap.get("name5"))) {
     
                        		txShape.setText(txShape.getText().replace("{name5}", textMap.get("name5")));
                         	} else {
     
                         		txShape.setText(txShape.getText().replace("{name5}", ""));
 							}
                            txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(12d); // 设置字体大小
                        }
                        if (txShape.getText().contains("{name6}")) {
     
                            // 替换文字内容.用TextRun获取替换的文本来设置样式
                        	 if (NullUtil.isNotNull(textMap.get("name6"))) {
     
                        		txShape.setText(txShape.getText().replace("{name6}", textMap.get("name6")));
                         	} else {
     
                         		txShape.setText(txShape.getText().replace("{name6}", ""));
 							}
                            txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(12d); // 设置字体大小
                        }
                        if (txShape.getText().contains("{name7}")) {
     
                            // 替换文字内容.用TextRun获取替换的文本来设置样式
                        	 if (NullUtil.isNotNull(textMap.get("name7"))) {
     
                        		txShape.setText(txShape.getText().replace("{name7}", textMap.get("name7")));
                         	} else {
     
                         		txShape.setText(txShape.getText().replace("{name7}", ""));
 							}
                            txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(12d); // 设置字体大小
                        }
                        if (txShape.getText().contains("{date}")) {
     
                            // 替换文字内容.用TextRun获取替换的文本来设置样式
                        	 if (NullUtil.isNotNull(textMap.get("date"))) {
     
                        		txShape.setText(txShape.getText().replace("{date}", textMap.get("date")));	
                         	} else {
     
                         		txShape.setText(txShape.getText().replace("{date}", ""));
 							}
                            txShape.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(12d); // 设置字体大小
                        }
                    }
                }
            }
            FileOutputStream outputStreams = new FileOutputStream(new File(outputUrl));
            ppt.write(outputStreams);
            outputStreams.close();
        }catch (IOException e) {
     
        	logger.error("交付物ppt模板封面生成", e);
        }
    }
}

你可能感兴趣的:(POI,PPT,模板)