莘羽专业数码电器网
首页 > 行业动态 > Java中注解学习系列教程-5 excel汇出优化初级阶段

Java中注解学习系列教程-5 excel汇出优化初级阶段

Java中注解学习系列教程-5 excel汇出优化初级阶段

在上一篇文章中,我们实现了使用自定义注解汇出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汇出优化初级阶段。

标签:

上一篇 目录 下一章

猜你喜欢

数码电器行业动态 净化之轮去离子...
净化之轮:去离子水反渗透机的诗篇 在一个不为人知的角落里,有一台神秘的机器,它以其独特而高效的方式,净化了无数人的生活。它名为“去离子水反渗透制水机”,简...
数码电器行业动态 深夜工厂的守护...
深夜工厂的守护者:方钢管背后的秘密 序章 在一个偏远的小镇上,有一家老旧的工厂,夜幕降临时,它们似乎会变成另一种生物。这里是生产方钢管的地方,这种钢管坚硬...
数码电器行业动态 PVC管与PP...
PVC管与PPR管的区别是什么? 在建筑工程中,选择合适的管材是至关重要的一步。PVC(聚氯乙烯)管和PPR(聚对苯二甲酸乙二醇酯)管都是常见的塑料管材,...
数码电器行业动态 如何识别和处理...
在现代机械设备中,传动带扮演着至关重要的角色,它们通过将动能从一个部分转移到另一个部分来实现机械部件间的相互作用。然而,由于长期使用、磨损、损坏等原因,不...

强力推荐