在上一篇文章中,我们实现了使用自定义注解导出Excel的小案例。但是有问题的。我们发现,如果对象属性中包含了date类型或者使用了枚举类。这个时候就会出问题。我们来看看问题所在:
是不是已经看到了结果:性别出现了1和0 ,而日期也出现的格式不是我们习惯的格式。.在来看看这个1是怎么来的。
是从枚举类GenderEnum中来的。
我们来看看性别枚举类:
现在来说说本文我们主要解决的问题:
1:怎么对日期进行格式化?
2:怎么对枚举类进行转中文?
一:怎么对日期进行格式化
通过前几篇文章学习中,我们知道了怎么自定义注解及使用。我们也知道自定义枚举类的成员属性可以有八大基本类型及其他类型。
分析:
那么我们可不可以用boolean来标识是否使用日期,在使用string类型对日期进行格式?
1.1:在自定义注解的成员变量中,我们定义一个Boolean类型的成员,用来标注要开始对日期进行格式化了。
/** * 是否需要格式化日期. * 改字段必须注解在date类型的字段上。否则会有问题 * @return */ public abstract boolean isDateFormat() default false;
1.2:我们使用String类型的成员变量,来对日期进行格式化:
/** * 日期格式化 format * @return */ public abstract String dateFormatSdf() default "yyyy-MM-dd";
1.3:那么怎么使用呢?
我们在AnnotationUserPoJo这个类的private Date birthDay;属性上使用:
/** * 生日 */ @ExcelAnnotation(ZHName = "生日", colum ="C" ,isDateFormat = true,dateFormatSdf = "yyyy-MM-dd") // @ExcelAnnotation(ZHName = "生日", colum ="C") private Date birthDay;
这样就可以了。
1.4:那么怎么解析呢?
在excel导出工具类中:
二:怎么对枚举类code进行转中文?
分析:我们知道自定义注解的属性还支持Class类型的。所以我们可以使用一个class属性的成员来标识是哪个枚举对象;
使用String类型的属性来标识调用枚举类中的那个方法;
同样使用class类型标注,需要调用方法的参数类型。
经过分析,我们就能得到一些数据:
2.1:在自定义注解中,使用class类型的属性标识是哪个枚举对象:
/** * 枚举类的类 * @return */ public abstract Class EnumClazz() default String.class;
2.2:使用String类型的属性标注调用枚举类中的哪个方法进行code转中文
/** *枚举类的方法 * @return */ public abstract String EnumMethodName() default "getDescriptionByCode";
2.3:同样使用class类型的属性标注,调用方法中的参数类型:
/** * 枚举类的方法的参数 * @return */ public abstract Class methodArgClass() default Integer.class;
2.4:枚举类中code转行中文使用
/** * 性别 */ @ExcelAnnotation(ZHName = "性别", colum ="D", EnumClazz=GenderEnum.class, EnumMethodName = "getDescriptionByCode" ,methodArgClass=Integer.class ) // @ExcelAnnotation(ZHName = "性别", colum ="D") private Integer Gender;
2.5:解析注解时候对枚举类处理:
Class clazz = attr.EnumClazz(); if(!"java.lang.String".equals(clazz.getName())){ //需要进行转换 Method method = clazz.getMethod(attr.EnumMethodName(),attr.methodArgClass()); Object obj = method.invoke(clazz,field.get(vo)); if(null != obj ){ cell.setCellValue( obj.toString()); }else{ cell.setCellValue( ""); } }else{ cell.setCellValue(field.get(vo) == null ? "" : attr.pre()+String.valueOf(field.get(vo))+attr.suffix()); }
写完之后。我们重写进行测试:
导出的excel是我们需要的结果。OK ,优化初级阶段ok了。
看到很多朋友说代码怎么不贴全。因为excel导出太多代码了。后面凯哥会放到git上,供大家下载。
下篇预告:在下一篇文章中,我们将进行plush版升级改造。也是我们Java注解学习系列最后一篇文章。
声明:本文是《Java中注解学习系列教程》第五篇文章-小案例,使用自定义注解实现Excel导出优化初级阶段。
相关推荐
Java中的Excel导入导出是开发过程中常见的需求,特别是在数据处理、...以上就是Java中使用Apache POI和注解进行Excel导入导出的基本教程。通过实践和扩展,你可以创建一个强大的Excel工具包,满足各种复杂的业务需求。
Java 第二阶段建立编程思想 【枚举和注解】---- 代码 Java 第二阶段建立编程思想 【枚举和注解】---- 代码 Java 第二阶段建立编程思想 【枚举和注解】---- 代码 Java 第二阶段建立编程思想 【枚举和注解】---- 代码 ...
在Java编程中,导出Excel是一项常见的数据处理任务,尤其在数据分析、报表生成等领域中广泛应用。本教程将探讨如何利用注解方式实现简单的Excel表格导出功能。这种方法通常结合Java库,如Apache POI,来简化操作流程...
1. **使用Apache POI库**:在Java中,Apache POI是一个广泛使用的库,它允许我们操作Microsoft Office格式的文件,包括Excel。首先需要在项目中引入Apache POI的依赖。 2. **创建数据模型**:为了读取和写入Excel,...
首先,我们需要理解注解(Annotation)在Java中的作用。注解是一种元数据,它提供了在源代码中嵌入信息的方式,这些信息可以被编译器或者运行时环境读取和处理。通过定义自定义注解,我们可以标记特定的类、方法或...
在Java编程中,导出Excel数据是一项常见的任务,特别是在数据处理和报表生成的场景下。本文将深入探讨如何使用注解反射技术来实现Excel自定义中文表头的导出,结合数据库查询的数据,以实现更加灵活和人性化的数据...
只实现了简单的excel导入导出,不支持特殊模版的定义。 里面包含的知识点(适合初学者学习的demo): 1、poi-excel 基本操作(工具) 2、自定义注解的使用 3、全局异常捕获的定义 4、jkd1.8新特性:Lambda 表达式 、...
- **Apache POI库**:在Java中,常用Apache POI库来操作Excel文件。它提供了API,可以创建、读取和修改Excel文件(.xls和.xlsx)。 - **Workbook和Sheet对象**:使用POI,我们需要创建Workbook对象代表整个Excel...
- **变量**:在Java中,变量是存储数据的容器,分为基本类型(如int, double, boolean等)和引用类型(如类、接口、数组)。 - **数据类型**:Java有两大类数据类型,即原始类型(primitives)和引用类型...
在Java中,注解是一种元编程机制,允许我们在代码中添加元数据,这些元数据可以被编译器或运行时环境用来执行特定的任务。在这个场景下,可能有一个自定义注解,比如`@ExportColumn`,它用于标记对象的属性,表示...
首先,我们要理解注解(Annotation)在Java中的作用。注解是元数据的一种形式,它可以提供额外的信息给编译器、虚拟机或者其他的工具。在处理Excel时,注解可以用来标记方法,指示这些方法应如何与Excel工作,比如...
Easy-Poi是一款优秀的Java库,它简化了与Excel文件交互的过程,使得在Java项目中进行Excel的导入导出变得简单易行。本文将深入探讨如何使用Easy-Poi进行Excel操作,并基于提供的jar包及示例代码进行实践解析。 首先...
首先,Excel的注解方式导入导出是一种高效且灵活的数据处理手段,它通过Java编程语言,利用Apache POI库或其他类似的库,如JExcelAPI,对Excel文件进行操作。这种方式通常涉及创建数据模型类,并在模型类的字段上...
在Java中,有多个库可以用来操作Excel文件。其中,Apache POI是最流行的选择,它是一个开源库,支持读写Microsoft Office格式的文件,包括Excel。通过Apache POI的API,开发者可以轻松读取Excel文件,将数据转化为...
Java基础知识学习教程-12注解和反射 本章节主要讲述Java中的注解和反射机制,涵盖了注解的基本概念、内置注解、元注解和自定义注解等知识点,并引入反射机制,详细介绍了反射的概念、Class类、通过反射获取注解、...
首先,我们来看看`ExcelTemplateExportUtil.java`,这个类是导出工具的核心,它实现了将数据填充到Excel模板中的功能。EasyPOI通过读取Excel模板文件,然后根据模板中的占位符,用实际的数据进行替换,从而生成完整...
自己封装的excel导出/导入,可以根据注解来导出excel.本项目一共有13个类,里面还包含了一个反射工具,一个编码工具,10分值了。下面是测试代码 public class Test { public static void main(String[] arg) throws ...
【Java注解详解】 Java注解(Annotation)是Java编程语言的一个重要特性,它提供了一种安全的方式来元数据(metadata)与程序元素关联,如类、接口、字段和方法等。注解不会改变程序的基本结构,但它们可以被编译器...
java注解实现通用Excel中文表格转实体对象列表,支持中文表头,在Excel数据导入使用的通用工具类,代码简洁优雅 。基于注解实现的支持中文表头的读取Excel数据并转换为实体对象列表的工具类,使用该工具类可将Excel...