准备

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; }
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>