easypoi-含图片导出


准备

package com.ps.ande.util;

import org.apache.poi.ss.usermodel.Workbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;


public class ExportFacade {

    private static final Logger log = LoggerFactory.getLogger(ExportFacade.class);

    private static final String ERROR_STR = "导出文件失败";


    public static void setProperties(HttpServletResponse response, String fileName, Workbook workbook, ServletOutputStream outputStream) throws IOException {
        fileName = new String(fileName.getBytes(StandardCharsets.UTF_8),StandardCharsets.ISO_8859_1);
        response.setHeader("Content-Disposition", "attachment;filename=" + fileName+".xls");
        response.setContentType("application/x-download");
        response.setCharacterEncoding("UTF-8");
        response.addHeader("Pargam", "no-cache");
        response.addHeader("Cache-Control", "no-cache");
        response.flushBuffer();
        workbook.write(outputStream);
        outputStream.flush();
    }

    public static void exportByExcel(HttpServletResponse response, String fileName, Workbook workbook) {
        try(ServletOutputStream outputStream = response.getOutputStream()) {
            setProperties(response, fileName, workbook, outputStream);
        } catch (IOException e) {
            log.error(ERROR_STR, e);
            new  Exception("导出文件失败,请重试");
        }
    }
}
工具类

 

步骤1

  参数说明

  title: 标题  ExcelDto: 映射实体类  row:  List 集合

  映射实体类常用注解maven依赖查看官网 http://easypoi.mydoc.io/

  Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(title, ""), ExcelDto.class, row);

步骤2 

  参数说明

  response: HttpServletResponse      fileName: 导出文件名称     workbook: 数据导出处理

  ExportFacade.exportByExcel(response, fileName , workbook);

步骤3

  数据映射实体类时处理。图片路径字段隐藏@ExcelIgnore注解,创建byte[]  image 类型字段接收处理的图片

 public byte[] getImage(){
        //从流中获取数据数组。
        byte[] b = null;
        try {
            if(imageUrl!=null){
                //new一个URL对象
                URL url = new URL(getImageUrl());
                //通过输入流获取图片数据
                BufferedImage image = ImageIO.read(url);
                //得到图片的二进制数据,以二进制封装得到数据,具有通用性
                ByteArrayOutputStream outStream = new ByteArrayOutputStream();
                ImageIO.write(image, "jpg", outStream);
                b = outStream.toByteArray();
            }
        }catch (Exception e){
            throw new YamiShopBindException("图片处理失败");
        }
        return b;
    }
映射实体类 图片处理get方法

 

Maven依赖

        <!-- Excel导出 -->
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>4.1.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.javassist</groupId>
                    <artifactId>javassist</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>4.1.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.javassist</groupId>
                    <artifactId>javassist</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
maven

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM