zoukankan      html  css  js  c++  java
  • POI导出多张图片到Excel

     1 package com.sun.office.excel;
     2 
     3 import java.awt.image.BufferedImage;
     4 import java.io.ByteArrayOutputStream;
     5 import java.io.File;
     6 import java.io.FileOutputStream;
     7 import java.io.IOException;
     8 
     9 import javax.imageio.ImageIO;
    10 
    11 import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
    12 import org.apache.poi.hssf.usermodel.HSSFPatriarch;
    13 import org.apache.poi.hssf.usermodel.HSSFSheet;
    14 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    15 
    16 public class ExcelImageDemo {
    17 
    18     public static void main(String[] args) {
    19         FileOutputStream fileOut = null;
    20         BufferedImage bufferImg = null;
    21         // 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
    22         try {
    23             ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
    24             bufferImg = ImageIO.read(new File("D:/ubuntn.jpg"));
    25             ImageIO.write(bufferImg, "jpg", byteArrayOut);
    26 
    27             HSSFWorkbook wb = new HSSFWorkbook();
    28             HSSFSheet sheet1 = wb.createSheet("test picture");
    29             // 画图的顶级管理器,一个sheet只能获取一个(一定要注意这点)
    30             HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();
    31             for (int i = 0; i < 3; i++) {
    32                 // anchor主要用于设置图片的属性
    33                 HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 250, (short) 1, 1+i*10, (short) 5, 8+i*10);
    34                 // 插入图片
    35                 patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
    36             }
    37             HSSFSheet sheet2 = wb.createSheet("test picture2");
    38             //第二个sheet页
    39             HSSFPatriarch patriarch2 = sheet2.createDrawingPatriarch();
    40             for (int i = 0; i < 3; i++) {
    41                 // anchor主要用于设置图片的属性
    42                 HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 250, (short) 1, 1+i*10, (short) 5, 8+i*10);
    43                 // 插入图片
    44                 patriarch2.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
    45             }
    46             fileOut = new FileOutputStream("Excel.xls");
    47             // 写入excel文件
    48             wb.write(fileOut);
    49             System.out.println("----Excle文件已生成------");
    50         } catch (Exception e) {
    51             e.printStackTrace();
    52         } finally {
    53             if (fileOut != null) {
    54                 try {
    55                     fileOut.close();
    56                 } catch (IOException e) {
    57                     e.printStackTrace();
    58                 }
    59             }
    60         }
    61     }
    62     // 关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数,有必要在这里说明一下:
    63     // dx1:起始单元格的x偏移量,
    64     // dy1:起始单元格的y偏移量,
    65     // dx2:终止单元格的x偏移量,
    66     // dy2:终止单元格的y偏移量,
    67     // col1:起始单元格列序号,从0开始计算;
    68     // row1:起始单元格行序号,从0开始计算,
    69     // col2:终止单元格列序号,从0开始计算;
    70     // row2:终止单元格行序号,从0开始计算,
    71     //添加多个图片时:多个pic应该share同一个DrawingPatriarch在同一个sheet里面。
    72 }

    顺便提一下图片base64形式怎么转为图片

     1         String u = "Base64";
     2             // Base64解码
     3             byte[] b = new BASE64Decoder().decodeBuffer(u);
     4             // 生成图片
     5             String imgName = "echartsPhoto";
     6             String filePath = ServletActionContext.getServletContext().getRealPath("/") + "echarts";
     7             String fileName = filePath +"/"+ imgName +".png";
     8                    
    11             File file = new File(filePath);
    12             if(!file.exists()){
    13                 file.mkdir();
    14             }
    15             OutputStream out = new FileOutputStream(new File(fileName));
    16             out.write(b);18             out.close();
  • 相关阅读:
    二分图最大匹配的K&#246;nig定理及其证明
    HDOJ 2389 Rain on your Parade
    HDOJ 1083 Courses
    HDOJ 2063 过山车
    POJ 1469 COURSES
    UESTC 1817 Complete Building the Houses
    POJ 3464 ACM Computer Factory
    POJ 1459 Power Network
    HDOJ 1532 Drainage Ditches
    HDU 1017 A Mathematical Curiosity
  • 原文地址:https://www.cnblogs.com/sun-space/p/5672373.html
Copyright © 2011-2022 走看看