1. 程式人生 > >POI 將圖片匯出到excle表格

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 小白,有錯希望大家可以提出,一起學習