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();
  • 相关阅读:
    vs2010 setup 打包 安装 BAT批处理实现自动安装软件功能
    为什么我上传了flv或MP4文件到服务器,可输入正确地址通过http协议来访问总是出现“无法找到该页”的404错误呢
    异步编程:(TAP)基于任务的异步编程模型详解
    异步编程:IAsyncResult异步编程模型 (APM)
    WCF:调用方未由服务器进行身份验证
    django 操作数据库--orm(object relation mapping)---models
    python操作memcached以及分布式
    网络干货,无论是运维还是开发都要知道的网络知识系列之(七)
    一次完整的HTTP事务是怎样一个过程?
    网络干货,无论是运维还是开发都要知道的网络知识系列之(六)
  • 原文地址:https://www.cnblogs.com/sun-space/p/5672373.html
Copyright © 2011-2022 走看看