直接上代码了,拷贝到编辑器即可运行
package com.jeesite.modules.project.orgapprove.service;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args) {
FileOutputStream fileOut = null;
BufferedImage bufferImg = null;
//先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
List<Map<String,String>>list=new ArrayList<>();
Map<String,String> map1=new HashMap<>();
Map<String,String> map2=new HashMap<>();
Map<String,String> map3=new HashMap<>();
map1.put("type","png");
map1.put("path","D:/userfiles/2.png");
map2.put("type","jpeg");
map2.put("path","D:/userfiles/1.jpeg");
map3.put("type","jpg");
map3.put("path","D:/userfiles/3.jpg");
list.add(map1);
list.add(map2);
list.add(map3);
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("test picture");
// 设置列宽,excel列宽每个像素是1/256
sheet1.setColumnWidth(0, 15 * 256);
//画图的顶级管理器,一个sheet只能获取一个(一定要注意这点)
HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();
try {
for (int i = 0; i < list.size(); i++) {
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
sheet1.createRow(i).setHeightInPoints(100);
bufferImg = ImageIO.read(new File(list.get(i).get("path")));
ImageIO.write(bufferImg, list.get(i).get("type"), byteArrayOut);
//anchor主要用于设置图片的属性
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0, (short) 1, i, (short) 0, i+1);
//anchor.setAnchorType(ClientAnchor.AnchorType.byId(3));
//插入图片
patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
}
fileOut = new FileOutputStream("D:/测试.xls");
// 写入excel文件
wb.write(fileOut);
System.out.println("----导出成功------");
} catch (Exception e) {
e.printStackTrace();
}finally{
if(fileOut != null){
try {
fileOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
性感图片就生成了