【easy-excel-starter】一个注解自动导出对象为Excel 版本 1.2.3-JDK17

2024-03-03 10:52

本文主要是介绍【easy-excel-starter】一个注解自动导出对象为Excel 版本 1.2.3-JDK17,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

介绍
版本 1.2.3-JDK17
wu-easy-excel-starter是一款面向对象的excel、文件导出框架。
实现的功能:1)针对Java中任何对象直接返回给web,在返回web过程自动将对象转换成想要的数据(Excel、File)2)前端传一个Excel过来,后端接口接收到的其实已经是Bean了

快速导出excel模块

依赖引入<dependency><groupId>com.wu</groupId><artifactId>wu-easy-excel-starter</artifactId><version>1.2.3-JDK17</version></dependency>

基本用法

 @Datapublic class UseExcel {@EasyExcelFiled(name = "id")private Integer id;@EasyExcelFiled(name = "当前时间")private LocalDateTime currentTime;@EasyExcelFiled(name = "描述")private String desc;@EasyExcelFiled(name = "类型")private String type;}@EasyExcel(fileName = "导出数据")@GetMapping("/run/{size}")public List<UseExcel> run(@PathVariable Integer size) {List<UseExcel> useUserExcelList = new ArrayList<>();for (int i = 0; i < size; i++) {UseExcel useExcel = new UseExcel();useExcel.setCurrentTime(LocalDateTime.MAX);useExcel.setDesc("默认方式导出数据");useExcel.setId(i);useExcel.setType("默认方式双注解导出");useUserExcelList.add(useExcel);}return useUserExcelList;}

自定义字段注解用法

@Data
public class UseExcel {@JSONField(name = "id")private Integer id;@JSONField(name = "当前时间")private LocalDateTime currentTime;@JSONField(name = "描述")private String desc;@JSONField(name = "类型")private String type;
}
@EasyExcel(fileName = "非原生注解导出数据", filedColumnAnnotation = JSONField.class,filedColumnAnnotationAttribute = "name",multipleSheet = true, limit = 10,sheetShowContext = EasyExcel.SheetShowContext.TEXT)
@GetMapping("/run2/{size}")
public List<UseExcel> run2(@PathVariable Integer size) {List<UseExcel> useUserExcelList = new ArrayList<>();for (int i = 0; i < size; i++) {UseExcel useExcel = new UseExcel();useExcel.setCurrentTime(LocalDateTime.MAX);useExcel.setDesc("自定义字段注解方式导出数据");useExcel.setId(i);useExcel.setType("自定义字段注解导出");useUserExcelList.add(useExcel);}return useUserExcelList;
}         
  • 说明 filedColumnAnnotation 从 JSONField注解的name属性中获取表头并导出数据
  • multipleSheet 导出的数据分多个sheet(工作簿)
  • limit每个sheet 有10条数据
  • sheetShowContext每个sheet的名称使用EasyExcel.SheetShowContext.TEXT 中文

自定义字段注解+自定控制器注解用法

@Data
public class UseExcel {@JSONField(name = "id")private Integer id;@JSONField(name = "当前时间")private LocalDateTime currentTime;@JSONField(name = "描述")private String desc;@JSONField(name = "类型")private String type;
}
  • 自定意义EasyExcel注解

@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@EasyExcel(useAnnotation = false,filedColumnAnnotation = JSONField.class)
public @interface EasyExcelTemp {/*** 文件名称* @return String*/@AliasFor(annotation = EasyExcel.class,attribute = "fileName")String fileName();
}
  • 使用方法

@EasyExcelTemp(fileName = "自定义注解导出")
@GetMapping("/run4/{size}")
public List<UseExcel> run4(@PathVariable Integer size) {List<UseExcel> useUserExcelList = new ArrayList<>();for (int i = 0; i < size; i++) {UseExcel useExcel = new UseExcel();useExcel.setCurrentTime(LocalDateTime.MAX);useExcel.setDesc("自定义注解导出");useExcel.setId(i);useExcel.setType("自定义注解导出");useUserExcelList.add(useExcel);}return useUserExcelList;
}

新增垂直合并excel

@Data
@EasySmart(perfectTable = true)
public class UseExcel {@EasyExcelFiled(name = "原生注解-id")
@JSONField(name = "JSONField注解-id")
private Integer excelId;@EasySmartField(name = "`current_time`")
@EasyExcelFiled(name = "原生注解-当前时间")
@JSONField(name = "JSONField注解-当前时间")
private LocalDateTime currentTime;@EasySmartField(name = "`orderByDesc`")
@EasyExcelFiled(name = "原生注解-描述",fieldMerge = EasyExcelFiled.EasyExcelFieldMerge.VERTICAL)
@JSONField(name = "JSONField注解-描述")
private String desc;@EasyExcelFiled(name = "原生注解-类型",fieldMerge = EasyExcelFiled.EasyExcelFieldMerge.VERTICAL)
@JSONField(name = "JSONField注解-类型")
private String type;@EasyExcelFiled(name = "原生注解-是否删除")
@JSONField(name = "JSONField注解-是否删除")
private boolean isDelete;
}
新增Excel 导入支持时间格式
新增注解 @EasyFile 支持导出字符串、文件到mvc框架二进制流文件
支持对象中含有对象
支持对象中含有集合导出自动合并集合

这篇关于【easy-excel-starter】一个注解自动导出对象为Excel 版本 1.2.3-JDK17的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/769408

相关文章

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级