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

EasyExcel的应用

一、简单使用

        引入依赖:
        这里我们可以使用最新的4.0.2版本,也可以选择之前的稳定版本,3.1.x以后的版本API大致相同,新的版本也会向前兼容(3.1.x之前的版本,部分API可能在高版本被废弃),关于POI、JDK版本适配问题,具体可参考官网-版本说明。

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

        下载excel文件:

    @GetMapping("/download")public void excelDownload(HttpServletResponse response) throws IOException {response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setCharacterEncoding("utf-8");EasyExcel.write(response.getOutputStream(), Data.class).sheet("模板").doWrite(datas);String fileName = URLEncoder.encode("测试", "UTF-8").replaceAll("\\+", "%20");response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");}

        读取excel文件:

    @PostMapping("/read")public void read(MultipartFile file) throws IOException {1、这只是简单演示,一般不使用 doReadSync 方法,此方法同步执行的,即它会阻塞当前线程,直到读取完整个Excel文件并返回所有数据。读取大型文件时,可能会导致程序响应变慢或阻塞。2、使用head映射字段时,该实体类上不能加 @Accessors 注解,加上此注解会字段映射不成功。3、一般会使用监听器 + doRead 方法实现excel文件的读取List<Data> datas = EasyExcel.read(file.getInputStream()).sheet().head(Data.class).doReadSync();System.out.println(datas);}

二、常用注解

        1、@ExcelProperty注解

                这个注解应该是最常用的注解,通常用来映射字段跟excel的列名,有以下几个属性:

名称默认值描述
value用于匹配excel中的头,必须全匹配,如果有多行头,会匹配最后一行头
orderInteger.MAX_VALUE优先级高于value,会根据order的顺序来匹配实体和excel中数据的顺序
index-1优先级高于valueorder,会根据index直接指定到excel中具体的哪一列
converter自动选择指定当前字段用什么转换器,默认会自动选择。写的情况下只要实现com.alibaba.excel.converters.Converter#convertToExcelData(com.alibaba.excel.converters.WriteConverterContext<T>) 方法即可

         注意: 

         1、如果没有特殊的调整一般,使用value属性就够了,在读取或者导出时都能匹配或者映射为对应的列名。
         2、value 跟 index 可以在导出数据的时候配合使用,value指定列名,index指定该列的顺序,例如:

    @ExcelProperty(value = "性别",index = 3) 代表列名为 性别,导出到第三列的位置。但是在导入时,如果设置了order属性,表示会根据指定列来匹配字段,例如上面就会将第三列匹配为性别字段,如果该列字段为空,或者字段类型不匹配就会报错,一般在读取数据时不会这么使用这个属性。

        3、order 属性代表按顺序匹配,比如说导出数据时,会按照字段上该属性的顺序,一次为列设置对应字段的值,比如order最小的,就匹配第一列的值,依次往后,在导出时也是一样,order最小的值,导出到第一列依次往后。

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

相关文章:

  • VS Code的设置功能以及多层级的设置方式与解密
  • UI自动化测试框架playwright--初级入门
  • SQL多表联查、自定义函数(字符串分割split)、xml格式输出
  • Fast API使用
  • LLM - Llama 3 的 Pre/Post Training 阶段 Loss 以及 logits 和 logps 概念
  • MySQL 中删除重复数据 SQL 写法
  • docker minio镜像arm64架构
  • VUE3 监听器(watch)
  • CAPL如何设置TCP/IP传输层动态端口范围
  • 随记:有关Springboot项目中的时间格式实现的几种方式
  • IntelliJ IDEA 优化设置
  • jsp企业财务管理系统设计与实现
  • EscherNet运行笔记
  • Java中的反射机制及其应用场景
  • 信息科技伦理与道德3:智能决策
  • 青少年编程与数学 02-006 前端开发框架VUE 16课题、组件基础
  • 25/1/11 算法笔记 Yolov8物体识别
  • 水水水水水水
  • XS5037C一款应用于专业安防摄像机的图像信号处理芯片,支持MIPI和 DVP 接口,内置高性能ISP处理器,支持3D降噪和数字宽动态
  • 机器学习无处不在,AI顺势而为,创新未来
  • pandas处理json的相关操作
  • linux内存泄露定位过程(kmemleak和slab debug)
  • 2025年安卓面试复习总结
  • JS scrollIntoView 技巧揭秘:解锁网页流畅交互
  • 【Ubuntu 24.04】常见问题解决
  • 前端依赖安装指南
  • 灌区闸门自动化控制系统-精准渠道量测水-灌区现代化建设
  • ELK实战(最详细)
  • 《大型语言模型与强化学习的融合:探索问题的新解决方案与开源验证需求》
  • springboot 默认的 mysql 驱动版本