【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

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

Mac excel 同时冻结首行和首列

1. 选择B2窗格 2. 选择视图 3. 选择冻结窗格 最后首行和首列的分割线加粗了就表示成功了

ONLYOFFICE 8.1 版本桌面编辑器测评

在现代办公环境中,办公软件的重要性不言而喻。从文档处理到电子表格分析,再到演示文稿制作,强大且高效的办公软件工具能够极大提升工作效率。ONLYOFFICE 作为一个功能全面且开源的办公软件套件,一直以来都受到广大用户的关注与喜爱。而其最新发布的 ONLYOFFICE 8.1 版本桌面编辑器,更是带来了诸多改进和新特性。本文将详细评测 ONLYOFFICE 8.1 版本桌面编辑器,探讨其在功能、用户

20.Spring5注解介绍

1.配置组件 Configure Components 注解名称说明@Configuration把一个类作为一个loC容 器 ,它的某个方法头上如果注册7@Bean , 就会作为这个Spring容器中的Bean@ComponentScan在配置类上添加@ComponentScan注解。该注解默认会扫描该类所在的包下所有的配置类,相当于之前的 <context:component-scan>@Sc

17.用300行代码手写初体验Spring V1.0版本

1.1.课程目标 1、了解看源码最有效的方式,先猜测后验证,不要一开始就去调试代码。 2、浓缩就是精华,用 300行最简洁的代码 提炼Spring的基本设计思想。 3、掌握Spring框架的基本脉络。 1.2.内容定位 1、 具有1年以上的SpringMVC使用经验。 2、 希望深入了解Spring源码的人群,对 Spring有一个整体的宏观感受。 3、 全程手写实现SpringM

SpringBoot集成Netty,Handler中@Autowired注解为空

最近建了个技术交流群,然后好多小伙伴都问关于Netty的问题,尤其今天的问题最特殊,功能大概是要在Netty接收消息时把数据写入数据库,那个小伙伴用的是 Spring Boot + MyBatis + Netty,所以就碰到了Handler中@Autowired注解为空的问题 参考了一些大神的博文,Spring Boot非controller使用@Autowired注解注入为null的问题,得到

Java注解详细总结

什么是注解?         Java注解是代码中的特殊标记,比如@Override、@Test等,作用是:让其他程序根据注解信息决定怎么执行该程序。         注解不光可以用在方法上,还可以用在类上、变量上、构造器上等位置。 自定义注解  现在我们自定义一个MyTest注解 public @interface MyTest{String aaa();boolean bbb()

Visual Studio中,MSBUild版本问题

假如项目规定了MSBUild版本,那么在安装完Visual Studio后,假如带的MSBUild版本与项目要求的版本不符合要求,那么可以把需要的MSBUild添加到系统中,然后即可使用。步骤如下:            假如项目需要使用V12的MSBUild,而安装的Visual Studio带的MSBUild版本为V14。 ①到MSDN下载V12 MSBUild包,把V12包解压到目录(

API-环境对象

学习目标: 掌握环境对象 学习内容: 环境对象作用 环境对象: 指的是函数内部特殊的变量this,它代表着当前函数运行时所处的环境。 作用: 弄清楚this的指向,可以让我们代码更简洁。 函数的调用方式不同,this指代的对象也不同。【谁调用,this就是谁】是判断this指向的粗略规则。直接调用函数,其实相当于是window.函数,所以this指代window。

LeetCode--171 Excel表列序号

题目 给定一个Excel表格中的列名称,返回其相应的列序号。例如,A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ... 示例 示例 1:输入: "A"输出: 1示例 2:输入: "AB"输出: 28示例 3:输入: "ZY"输出: 701 class Solution {public:int titleToNumber(strin