当前位置: 首页 > news >正文

EasyExcel使用方式(包含导出图片)

1、导EasyExcel依赖

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.2</version>
</dependency>

2、创建导出excel的实体类

@Getter
@Setter
@EqualsAndHashCode
@HeadStyle(fillForegroundColor = 9)
@HeadFontStyle(fontHeightInPoints = 12, bold = BooleanEnum.TRUE)       //头字体   加粗
@HeadRowHeight(31)
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER,borderTop = BorderStyleEnum.THIN,borderBottom = BorderStyleEnum.THIN,borderLeft = BorderStyleEnum.THIN,borderRight = BorderStyleEnum.THIN) //水平居中  垂直居中  上 下 左 右(边框线)
@ContentFontStyle(fontHeightInPoints = 11)    //内容字体
@ContentRowHeight(123)public class ExcelDto {@ExcelProperty(value = "序号", index = 0)  //意思为序号这一列为第0列(从0开始算)@ColumnWidth(14)private String number;@ExcelProperty(value = "姓名", index = 1)@ColumnWidth(18)private String name;@ExcelProperty(value = "时间", index = 2)@ColumnWidth(35)private Date time;@ColumnWidth(54)@ExcelProperty(value = "备注", index = 3)private String text;@ExcelProperty(value = "图片", index = 4)@ContentStyle(shrinkToFit = BooleanEnum.TRUE,borderTop = BorderStyleEnum.THIN,borderBottom = BorderStyleEnum.THIN,borderLeft = BorderStyleEnum.THIN,borderRight = BorderStyleEnum.THIN)  //上下左右(边框线)@ColumnWidth(43)private File image;  //file类型
}

3、代码进行逻辑赋值

controller

 /*** 导出excel*/@GetMapping(value = "/exportExcel")public void exportExcel(HttpServletResponse response, HttpServletRequest request,T entity) {jsjtProblemLabelService.exportExcel(response, request,entity);}

service

    /*** 导出* @param response* @param request*/public void exportExcel(HttpServletResponse response, HttpServletRequest request,T entity) {try {//创建导出excel的集合List<ExcelDto> list = ListUtils.newArrayList();//假设excelListBySQL 为数据库中查询数据的集合List<Excel> excelListBySQL = new ArrayList();//处理逻辑代码取出符合条件的值返回进excelListBySQL中 //循环赋值for (int i = 0; i < excelListBySQL.size(); i++) {//取出每一个从数据库中取出的对象Excel excel = excelListBySQL.get(i);//返回进导出excel的类中ExcelDto excelDto = new ExcelDto();//赋值序号excelDto.setNumber(String.valueOf(++number));//赋值姓名excelDto.setName(excel .getName());//赋值时间excelDto.setTime(excel .getTime());//赋值备注excelDto.setText(excel .getText());//赋值图片(数据库路径为相对路径)excelDto.setImage(imageByUrl(excel .getImageUrl())); //将每一行对象添加进导出excel的集合中list.add(excelDto);}String fileName = URLEncoder.encode("EasyExcel导出.xlsx", "UTF-8");OutputStream fileOutputStream = null;response.setHeader("Content-Disposition", "attachment;filename=" + fileName);response.setContentType("application/x-download");response.setCharacterEncoding("UTF-8");response.addHeader("Pargam", "no-cache");response.addHeader("Cache-Control", "no-cache");response.flushBuffer();fileOutputStream = response.getOutputStream();ExcelWriter excelWriter = EasyExcel.write(fileOutputStream, ExcelDto.class).build();WriteSheet sheet = EasyExcel.writerSheet(0, "sheet1").build();  //控制sheet页excelWriter.write(list, sheet);excelWriter.finish();fileOutputStream.flush();fileOutputStream.close();} catch (Exception e) {e.getMessage();}}/***将string类型的url转换为文件*/public File imageByUrl(String imageUrl) throws Exception{if (StringUtils.isBlank(imageUrl)){return null;}//指定读取的图片文件URI uri = new URI("file:///" + path+"/"+imageUrl);File file = new File(uri);//存在返回file否则返回nullreturn file.exists() ?  file :  null;  }

http://www.lryc.cn/news/206882.html

相关文章:

  • redis学习(三)——java整合redis
  • OpenText 安全取证软件——降低成本和风险的同时,简化电子取证流程
  • 【vue】vue前端、生产(线上)环境请求unicloud云服务空间axios报错
  • JVM详解(InsCode AI 创作助手)
  • 华为c语言编程规范
  • SQL Server Management Studio (SSMS)的安装教程
  • React 图片瀑布流
  • C++数据结构X篇_21_插入排序(稳定的排序)
  • 【Unity】3D跑酷游戏
  • bp前端验证码绕过及token绕过
  • Jmeter(十四):跨线程组传递jmeter变量及cookie的处理详解
  • css实现圆形进度条
  • 适用于 Windows 10 和 Windows 11 设备的笔记本电脑管理软件
  • YOLOv5论文作图教程(1)— 软件介绍及下载安装(包括软件包+下载安装详细步骤)
  • AutoCAD 2024 Mac中文附激活补丁 兼容M1.M2电脑
  • Jmeter基础---while控制器举例说明
  • 正点原子嵌入式linux驱动开发——RGB转HDMI
  • 前端时间分片渲染
  • 亿图导出word和PDF中清晰度保留方法
  • chatGPT结构及商业级相似模型应用调研
  • HarmonyOS鸿蒙原生应用开发设计- 华为分享图标
  • Java基础-反射
  • 计算机毕设 大数据二手房数据爬取与分析可视化 -python 数据分析 可视化
  • 【转载】 Bytedance火山引擎智能拥塞控制算法 VICC
  • Postman如何测试WebService接口
  • 微服务-Eureka
  • 超声电机工作原理
  • 基于人工蜂鸟优化的BP神经网络(分类应用) - 附代码
  • 两个list中存放相同的对象,一个是页面导入,一个是从数据库查询,外部传入一个集合存放的是对象的属性名称,根据属性名称处理两个list
  • 为什么C++能搜到的框架介绍都好抽象?