POI 将图片导出到excle表格

1.创建表格

    HSSFWorkbook wb = new HSSFWorkbook();

2.创建sheet页

    HSSFSheet sheet = wb.getSheetAt(0);

3.创建图片缓存

    BufferedImage bufferImage = new BufferedImage();

4.创建字节数组输出流

    ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();

    ByteArrayOutputStream 的实例是一个字节类型的数组(byte[]),里面有32个元素。

5.拿到图片路径并放进图片缓存里

    bufferImage = ImageIo.read(new File(图片路径));

    ImageIo类是javax.imageio包中的,用来简单的处理图片的IO。

6.将图片以定义的格式转成字节数组

    ImageIO.write(bufferImg, "png", byteArrayOut);

    “png”是图片格式

7.创建HSSFClienAnchor对像

    HSSFClientAnchor anchor = new HSSFClientAnchor(8,8,0,255,(short)1,(count+15),(short)7,(count+25));

    HSSFClienAnchor就是创建一个锚点,标记图片在表格中的位置。后面八个参数的意思是:

            创建一个新的客户端锚点并设置锚点的左上角和右下角坐标。注意:Microsoft Excel似乎有时会禁止y1高于y2或高于x2的x1,您可能需将它们反转并绘制垂直或水平翻转的形状!
    参数:
     dx1  - 第一个单元格内的x坐标。
    dy1  - 第一个单元格内的y坐标。
    dx2  - 第二个单元格内的x坐标。
    dy2  - 第二个单元格内的y坐标。
    col1  - 第一个单元格的列(基于0)。起始列
    row1  - 第一个单元格的行(基于0)。起始行
    col2  - 第二个单元格的列(基于0)。结束列

    row2 - 第二个单元格的行(基于0)。结束行

8.设置锚点类型

    anchor.setAnchorType(3);

    参数有4个:0 代表 使用锚点单元移动和调整大小(0)

             1 代表 不要移动,但要使用锚点单元调整大小(1)

             2 代表 移动单元但不调整大小(2)

             3 代表 不要随着底层的行/列移动或调整大小(3)  

                                            

9.创建顶级容器 HSSFPatriarch 一个sheet只能创建一个

    HSSFPatriarch patriarch = sheet.createDrawingPatriarch();

    HSSFPatriarch 就是一个容器,可以创建图片和形状。

10.创建图片

      patriarch.createPicture(anchor,wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));

11.输出

    FileOutputStream fileOut = new FileOutputStream(导出路径) 

    wb.write(fileOut );

java 小白,有错希望大家可以提出,一起学习

猜你喜欢

转载自blog.csdn.net/weixin_39543175/article/details/80483768