ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
BufferedImage bufferedImg = ImageIO.read(new File("e:\\111.png"));
int imgH = bufferedImg.getHeight();
int imgW = bufferedImg.getWidth();
ImageIO.write(bufferedImg, "png", byteArrayOut);
HSSFWorkbook workbook = new HSSFWorkbook();// 创建个空白的workbook
HSSFSheet sheet = workbook.createSheet();// 创建个空白的sheet
// 单元格宽度
int w = sheet.getColumnWidth(0) / 256;
HSSFRow row = sheet.createRow(0);
// 单元格高度
float hp = row.getHeightInPoints();
int h = (int) (row.getHeight() / hp);
// sheet.createRow(rownum)
System.out.println(h);
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
System.out.println("图片:高:宽" + imgH + "==" + imgW);
System.out.println("单元格:高:宽" + h + "==" + w);
// 比如你想让图片占10行
// HSSFClientAnchor 参数
// dx1 dy1起始单元格x y 坐标
int dx1 = 0;
int dy1 = 0;
// dx2 dy2 结束单元格 x y 坐标
int dx2 = w;
int dy2 = h;
// 起始列 起始行
short col1 = 0;
int row1 = 0;
// 结束列 结束行
int row2 = 10;// 因为你想占10行 所以这里是10
int colInt = row2 * w * imgH / imgW / h;
short col2 = (short) colInt;
HSSFClientAnchor anchor = new HSSFClientAnchor(dx1, dy1, dx2, dy2,
col1, row1, col2, row2);
patriarch.createPicture(anchor, workbook.addPicture(
byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));
FileOutputStream fileOut = new FileOutputStream("e:\\111.xls");
workbook.write(fileOut);
jar包:
poi-3.8-20120326.jar
commons-codec-1.5.jar