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.mzph.cn/news/117380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CouchDB简单入门

CouchDB 1.curl命令 RESTful 新增&#xff1a;POST请求修改&#xff1a;PUT请求删除&#xff1a;DELETE请求查找&#xff1a;GET请求 查看数据库有哪些 curl -X GET http://admin:123456localhost:5984/_all_dbsadmin: 用户名 123456:改成自己密码 创建数据库 curl -X PU…

Java面试题-Java核心基础-第十三天(序列化)

目录 一、Java序列化与反序列化是什么&#xff1f; 二、为什么需要序列化与反序列化&#xff1f; 三、序列化的实现方式有哪些&#xff1f; 四、什么是serialVersionUID? 五、为什么还要显示指定serialVersionUID 六、serialVersionUID什么时候修改&#xff1f; 七、Jav…

PostgreSQL将文本转换成固定的长整型

背景&#xff1a;某个表没有主键&#xff0c;但是有个字段名称&#xff08;varchar类型&#xff09;是唯一的&#xff0c;而一般习惯用BIGINT作为主键&#xff0c;于是想到将名称转成BIGINT主键。 考虑到&#xff1a;数字转文本我们常用md5算法&#xff0c;那么是否能用类似的…

c++ vscode cmake debug for mac

1. 下载vscode 2. 安装c插件 参考&#xff1a;C programming with Visual Studio Code 3. 安装llvm&#xff0c;可以使用brew安装 4. 配置llvm到系统环境变量中 5. 编写c代码 6. 编写CMakeLists.txt文件&#xff08;前提安装cmake&#xff09; cmake_minimum_required(V…

《语音优先》智能语音技术驱动的交互界面设计与语音机器人设计(译者序)...

“言为心声,语为心境”&#xff0c;语言与对话是我们沟通与协作的重要方式。而智能语音技术是一种基于人工智能和自然语言处理技术的语音交互技术。它可以通过语音识别技术将用户的语音指令转换为文本&#xff0c;然后通过自然语言处理技术对文本进行分析和理解&#xff0c;最终…

联通光猫SK-D540-C获取超级密码教程

打开隐藏配置界面&#xff1a;http://192.168.1.1/hidden_version_switch.html&#xff0c;勾选telnet功能&#xff0c;会勾选不上&#xff0c;但不用在意&#xff0c;点了就行&#xff1b; 开启 telnet 直接打开祖传的后门地址 http://192.168.1.1/hidden_version_switch.ht…

WIN11+OPENCV4.8 编译及下载失败处理方法

1. 基础准备 1. 下载Opencv和Contrib库 Opencv&#xff1a;Releases opencv/opencv GitHub Contrib&#xff1a;Tags opencv/opencv_contrib GitHub 2. 安装Visual Studio 或 MinGW64 MinGW&#xff1a;Tags opencv/opencv_contrib GitHub 这里安装1.12.0 MinGW 。 以…

flutter 使用FlutterJsonBeanFactory工具遇到的问题

如下图&#xff0c;使用FlutterJsonBeanFactory工具生成的数据类 但是其中 生成的 import package:null/&#xff0c;导致的错误&#xff1a;Target of URI doesn’t exist: ‘package:null/generated/json/asd.g.dart’ 尝试过的方法&#xff1a; 手动添加包名&#xff0c;…

【计算机网络笔记】网络应用进程通信

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

BeanUtils.copyProperties使用分析

概述 在开发中,常使用 BeanUtils.copyProperties() 进行PO,VO,DTO等对象的复制和转换。 注意 使用 Spring 的 BeanUtils # CopyProperties 方法去拷贝对象属性时,需要对应的属性有 getter 和 setter 方法(内部实现时,使用反射拿到 set 和 get 方法,再去获取/设置属性…

allegro中shape的一些基本操作(三)——挖空铜皮(shape)、删除孤岛

挖空铜皮&#xff08;shape&#xff09; 去除孤岛shape 挖空铜皮&#xff08;shape&#xff09; 我们在有的时候需要考虑分布电容的对信号完整性的影响&#xff0c;所以需要在整个铜皮的中间挖掉一块铜皮。 这三个分别对应挖不规则铜皮、矩形铜皮、圆形铜皮 例如&#xff1a…

MySQL数据库(二)

文章目录 MySQL数据库一、字符编码与配置文件二、存储引擎1.如何查看存储引擎2.重要的存储引擎MyISAMInnoDBMEMORYBlackHole演示 三、创建表的完善语法四、字段类型之整型整型分类及存储范围 五、字段类型之浮点型六、字段类型之字符类型1.研究两者区别2.严格模式3.研究定长、不…

读高性能MySQL(第4版)笔记19_云端和合规性

1. 如何构建数据库环境 1.1. 托管MySQL 1.2. VM上构建 1.3. 天下没有免费的午餐&#xff0c;每一个选择都伴随着一系列的权衡 2. 托管MySQL 2.1. 服务商提供了一个可访问的数据库设置程序&#xff0c;而不需要用户深入了解MySQL的具体细节 2.2. 使用托管MySQL将缺乏很多的…

中国艺术孙溟㠭篆刻《绕绕》

孙溟展先生现在的这方篆刻作品&#xff0c;没有使用大篆和小篆文字来篆刻&#xff0c;彰显篆刻的金石魅力。一改以往的不同&#xff0c;以圆形组合设计&#xff0c;用篆刻的刀法刻出&#xff0c;即体现篆刻的美&#xff0c;又达到了作者想表达的感情。这方篆刻作品溟展先生起名…

2023/10/23 mysql学习

数据库修改 show databases; 展示所有数据库 create database 数据库名; 创建数据库 create database if not exists 数据库名; 如果未创建过当前数据库名则创建 drop database 数据库名; drop database if exists 数据库名;用法和创建类似 删除数据库 use 数据库名; 跳…

WPF十六(页面内嵌加载)

在WPF中进行页面内嵌的加载 当存在一定需求时&#xff0c;比如当前页面C左侧是一个A页面&#xff0c;右侧是一个B页面&#xff0c;A页面是一个公用页面时&#xff0c;此时只需要做内嵌A页面&#xff0c;然后B页面进行正常处理&#xff0c;既可以节省时间&#xff0c;又做到了WP…

nodejs+vue备忘记账系统-计算机毕业设计

本文首先介绍了备忘记账系统管理技术的发展背景与发展现状&#xff0c;然后遵循软件常规开发流程&#xff0c;首先针对系统选取适用的语言和开发平台&#xff0c;目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章…

【目标检测】非极大值抑制NMS的原理与实现

非极大值抑制&#xff08;Non-Maximum Suppression&#xff0c;NMS&#xff09;是目标检测中常用的一种技术&#xff0c;它的主要作用是去除冗余和重叠过高的框&#xff0c;并保留最佳的几个。 NMS计算的具体步骤如下&#xff1a; 首先根据目标检测模型输出结果&#xff0c;得…

Linux内核的基本工作原理和关键概念

Linux内核是操作系统的核心部分&#xff0c;负责管理系统的硬件资源、文件系统、进程管理、内存管理和设备驱动等功能。以下是有关Linux内核的基本工作原理和关键概念的概述&#xff1a; 1. 体系结构&#xff1a; - Linux内核支持多种硬件架构&#xff0c;包括x86、ARM、MI…

Plooks大型视频在线一起看网站源码

在前段时间&#xff0c;因为想和异地的朋友一起看电影&#xff0c;但是发现有电影的地方没有一起看功能&#xff0c;有一起看功能的视频网站没有电影&#xff0c;所以就想自己做一个一起看网站&#xff0c;于是就有了Plooks。 Plooks是一个完整的视频网站&#xff0c;其中包括…