完整示例
package com.enation.app.javashop.buyer.api.goodsmkt;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.io.*;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.google.common.collect.Lists;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.poi.sl.usermodel.PictureData;
import org.apache.poi.ss.usermodel.Picture;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xslf.usermodel.*;
import static org.apache.poi.sl.usermodel.TextParagraph.TextAlign.CENTER;
import static org.apache.poi.sl.usermodel.VerticalAlignment.MIDDLE;
public class DomeTest {
public static void main(String[] args) throws Exception {
//创建ppt对象
XMLSlideShow ppt = new XMLSlideShow();
//首页
XSLFSlide slide0 = ppt.createSlide();
HashMap<String, Object> dataMap = new HashMap<>();
dataMap.put("seismicYear","seismicYear");
dataMap.put("seismicMonth","seismicMonth");
dataMap.put("seismicDay","seismicDay");
dataMap.put("place","place");
dataMap.put("magnitude","magnitude");
fillIndexContent(slide0, dataMap);
XSLFSlide slide = ppt.createSlide();
/** 生成二进制数组 **/
String imagePath = "F://disorder/desktop/company/title.png";
InputStream is = new FileInputStream(imagePath);
byte[] bytes = IOUtils.toByteArray(is);
XSLFPictureData idx = ppt.addPicture(bytes, XSLFPictureData.PictureType.PNG);
slide.createPicture(idx);
//目录
//内容5张ppt
for (int z = 1; z < 6; z++) {
XSLFSlide slide2 = ppt.createSlide();
XSLFTextBox xslfTextBox = slide2.createTextBox();
XSLFTextParagraph paragraph = xslfTextBox.addNewTextParagraph();
XSLFTextRun xslfTextRun = paragraph.addNewTextRun();
xslfTextRun.setFontSize(36.0);
xslfTextRun.setFontFamily("\u5b8b\u4f53 (\u6b63\u6587)");
xslfTextRun.setText(z + "");
// 模拟数据
Object[][] datas = {{"区域产品销售额","",""},{"区域", "总销售额(万元)", "总利润(万元)简单的表格"}, {"江苏省" , 9045, 2256}, {"广东省", 3000, 690}};
// 生成table
XSLFTable table = slide2.createTable();//创建表格
table.setAnchor(new Rectangle2D.Double(10, 50, 0, 0));
for(int i = 0; i < datas.length; i++) {
XSLFTableRow tableRow = table.addRow(); //创建表格行
for(int j = 0; j < datas[i].length; j++) {
XSLFTableCell tableCell = tableRow.addCell();//创建表格单元格
XSLFTextParagraph p = tableCell.addNewTextParagraph();
XSLFTextRun tr = p.addNewTextRun();
tr.setText(String.valueOf(datas[i][j]));
tableCell.setFillColor(Color.getColor("0xdd7e6b"));
p.setTextAlign(CENTER);
tableCell.setVerticalAlignment(MIDDLE);
if(i == datas.length - 1 && j == 3-1) {
tr.setFontSize(16.0);
tr.setBold(true);
tr.setItalic(true);
tr.setUnderlined(true);
tr.setFontFamily("\u5b8b\u4f53");
tr.setFontColor(Color.RED);
}
}
tableRow.setHeight(30);
}
//设置列宽
table.setColumnWidth(0, 150);
table.setColumnWidth(1, 150);
table.setColumnWidth(2, 250);
//合并单元格
table.mergeCells(0, 0, 0, 2);
//创建一个文本链接
XSLFTextBox linkText = slide2.createTextBox();
linkText.setAnchor(new Rectangle2D.Double(430, 310, 990, 0));
XSLFTextRun r = linkText.addNewTextParagraph().addNewTextRun();
r.setText("Apache POI");
XSLFHyperlink link = r.createHyperlink();
link.setAddress("http://poi.apache.org");
}
ppt.write(new FileOutputStream("F:\\disorder/desktop/company/ppt8.pptx"));
}
/**
* 填充首页内容
*
* @param xslfSlide
* @param dataMap
*/
private static void fillIndexContent(XSLFSlide xslfSlide, HashMap<String, Object> dataMap) throws IOException {
//文本框
XSLFTextBox xslfTextBox = xslfSlide.createTextBox();
xslfTextBox.setAnchor(new Rectangle(65, 25, 616, 480));
xslfTextBox.setFlipHorizontal(true);
//段落
XSLFTextParagraph paragraph = xslfTextBox.addNewTextParagraph();
paragraph.setTextAlign(CENTER);
//标题
XSLFTextRun xslfTextRun = paragraph.addNewTextRun();
xslfTextRun.setBold(true);
xslfTextRun.setFontSize(44.0);
//宋体 (标题)
xslfTextRun.setFontFamily("\u5b8b\u4f53 (\u6807\u9898)");
String title = "1234";
title = "zhaoz";
xslfTextRun.setText(title);
//制作单位
XSLFTextRun xslfTextRun2 = paragraph.addNewTextRun();
xslfTextRun2.setBold(false);
xslfTextRun2.setFontSize(24.0);
//宋体 (正文)
xslfTextRun2.setFontFamily("\u5b8b\u4f53 (\u6b63\u6587)");
xslfTextRun2.setText("12345\n\n\n\n\n\n\n\n");
//生成时间
XSLFTextRun xslfTextRun3 = paragraph.addNewTextRun();
xslfTextRun3.setBold(true);
xslfTextRun3.setFontSize(44.0);
//宋体 (正文)
xslfTextRun3.setFontFamily("\u5b8b\u4f53 (\u6807\u9898)");
xslfTextRun3.setText(LocalDate.now().toString());
}
}