FileOutputStream fileOut = null; //创建一个文件输出流
BufferedImage bufferImg = null;
String imgurl = request.getSession().getServletContext().getRealPath("/");
imgurl += (String)queryForMap.get("imageAddress"); //存放图片的绝对路径
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
String extend = (String)queryForMap.get("extend"); //文件的后缀名
try {
bufferImg = ImageIO.read(new File(imgurl));
ImageIO.write(bufferImg, extend, byteArrayOut);
//画图的顶级管理器,一个sheet只能获取一个(一定要注意这点)
XSSFDrawing patriarch = sheetAt.createDrawingPatriarch();
//anchor主要用于设置图片的属性
XSSFClientAnchor anchor = new XSSFClientAnchor(100,100, 100, 100,(short) 2, 0, (short) 4, 1);
anchor.setAnchorType(3);
//插入图片
if("jpg".equals(extend)) {
patriarch.createPicture(anchor, work.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
} else if("png".equals(extend)){
patriarch.createPicture(anchor, work.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));
}
} catch (Exception e) {
// TODO: handle exception
}
其中 XSSFClientAnchor(100,100, 100, 100,(short) 2, 0, (short) 4, 1) 的参数代表:
第一个参数:起始单元格的x偏移量,如例子中的100表示直线起始位置距A1单元格左侧的距离;
第二个参数:起始单元格的y偏移量,如例子中的100表示直线起始位置距A1单元格上侧的距离;
第三个参数:终止单元格的x偏移量,如例子中的100表示直线起始位置距C3单元格左侧的距离;
第四个参数:终止单元格的y偏移量,如例子中的100表示直线起始位置距C3单元格上侧的距离;
第五个参数:起始单元格列序号,从0开始计算;
第六个参数:起始单元格行序号,从0开始计算,如例子中第五个参数为2,第六个参数为0,就表示起始单元格为C1;
第七个参数:终止单元格列序号,从0开始计算;
第八个参数:终止单元格行序号,从0开始计算,如例子中第七个参数为4,第八个参数为1,就表示起始单元格为E2;