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导出优化初级阶段。

本文来源:凯哥Java  http://www.kaigejava.com/article/detail/443

个人博客:www.kaigejava.com

公众号:凯哥Java

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 230,825评论 6 546
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,814评论 3 429
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 178,980评论 0 384
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 64,064评论 1 319
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,779评论 6 414
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 56,109评论 1 330
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 44,099评论 3 450
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 43,287评论 0 291
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,799评论 1 338
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,515评论 3 361
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,750评论 1 375
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 39,221评论 5 365
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,933评论 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 35,327评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,667评论 1 296
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,492评论 3 400
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,703评论 2 380

推荐阅读更多精彩内容