JAVA 通过POI实现插入图片 (包含二维码生成)
private void exportExcel2(HttpServletRequest request, FileInputStream in) throws IOException {
HSSFWorkbook wb;
POIFSFileSystem fs;
BufferedImage bufferImg;
String imgPath = "";
File file = null;
try {
if (in == null) {
return;
}
fs = new POIFSFileSystem(in);
wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
String path = request.getSession().getServletContext().getRealPath("/");
// 生成二维码
imgPath = creatQrCode("UUID", path);
file = new File(imgPath);
bufferImg = ImageIO.read(file);
ImageIO.write(bufferImg, "jpg", byteArrayOut);
//画图的顶级管理器,一个sheet只能获取一个
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
//anchor主要用于设置图片的属性
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 700, 100,(short) 0, 1, (short) 0, 2);
anchor.setAnchorType(3);
//插入图片
patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
in.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
if(in != null) in.close();
if (file != null && file.exists()) {
file.delete();
}
}
}
public String creatQrCode(String id, String path) {
QRCodeEncoder qrcodeEncoder = new QRCodeEncoderImp();
String imgPath = "";
try {
imgPath = "c:\\temp\\" + id + ".jpg";
String content = "www.baidu.com?id=" + id;
String logoPath = path + "resource/images/xxx.jpg";
qrcodeEncoder.createQrCode(content, imgPath, logoPath);
} catch (Exception e) {
e.printStackTrace();
}
return imgPath;
}
exportExcel2该方法只需传入FileInputStream 对象即可实现在excel中插入图片