真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java中注解學(xué)習(xí)系列教程-5excel導(dǎo)出優(yōu)化初級階段

在上一篇文章中,我們實現(xiàn)了使用自定義注解導(dǎo)出Excel的小案例。但是有問題的。我們發(fā)現(xiàn),如果對象屬性中包含了date類型或者使用了枚舉類。這個時候就會出問題。我們來看看問題所在:

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供臺州網(wǎng)站建設(shè)、臺州做網(wǎng)站、臺州網(wǎng)站設(shè)計、臺州網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、臺州企業(yè)網(wǎng)站模板建站服務(wù),10年臺州做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

Java中注解學(xué)習(xí)系列教程-5 excel導(dǎo)出優(yōu)化初級階段

是不是已經(jīng)看到了結(jié)果:性別出現(xiàn)了1和0 ,而日期也出現(xiàn)的格式不是我們習(xí)慣的格式。.在來看看這個1是怎么來的。

Java中注解學(xué)習(xí)系列教程-5 excel導(dǎo)出優(yōu)化初級階段

是從枚舉類GenderEnum中來的。

我們來看看性別枚舉類:

Java中注解學(xué)習(xí)系列教程-5 excel導(dǎo)出優(yōu)化初級階段

現(xiàn)在來說說本文我們主要解決的問題:

1:怎么對日期進行格式化?

2:怎么對枚舉類進行轉(zhuǎn)中文?

一:怎么對日期進行格式化

通過前幾篇文章學(xué)習(xí)中,我們知道了怎么自定義注解及使用。我們也知道自定義枚舉類的成員屬性可以有八大基本類型及其他類型。

分析:

那么我們可不可以用boolean來標(biāo)識是否使用日期,在使用string類型對日期進行格式?

1.1:在自定義注解的成員變量中,我們定義一個Boolean類型的成員,用來標(biāo)注要開始對日期進行格式化了。

/**
?*?是否需要格式化日期.
?*?改字段必須注解在date類型的字段上。否則會有問題
?*?@return
?*/
public?abstract?boolean?isDateFormat()?default?false;

1.2:我們使用String類型的成員變量,來對日期進行格式化:

/**
?*?日期格式化?format
?*?@return
?*/
public?abstract?String?dateFormatSdf()?default?"yyyy-MM-dd";

Java中注解學(xué)習(xí)系列教程-5 excel導(dǎo)出優(yōu)化初級階段

1.3:那么怎么使用呢?

我們在AnnotationUserPoJo這個類的private Date birthDay;屬性上使用:

???/**
?????*?生日
?????*/
????@ExcelAnnotation(ZHName?=?"生日",?colum?="C"?,isDateFormat?=?true,dateFormatSdf?=?"yyyy-MM-dd")
//????@ExcelAnnotation(ZHName?=?"生日",?colum?="C")
????private?Date?birthDay;

Java中注解學(xué)習(xí)系列教程-5 excel導(dǎo)出優(yōu)化初級階段

這樣就可以了。

1.4:那么怎么解析呢?

在excel導(dǎo)出工具類中:

Java中注解學(xué)習(xí)系列教程-5 excel導(dǎo)出優(yōu)化初級階段



二:怎么對枚舉類code進行轉(zhuǎn)中文?

分析:我們知道自定義注解的屬性還支持Class類型的。所以我們可以使用一個class屬性的成員來標(biāo)識是哪個枚舉對象;

使用String類型的屬性來標(biāo)識調(diào)用枚舉類中的那個方法;

同樣使用class類型標(biāo)注,需要調(diào)用方法的參數(shù)類型。

經(jīng)過分析,我們就能得到一些數(shù)據(jù):

2.1:在自定義注解中,使用class類型的屬性標(biāo)識是哪個枚舉對象:

/**
?*?枚舉類的類
?*?@return
?*/
public?abstract?Class?EnumClazz()?default?String.class;

Java中注解學(xué)習(xí)系列教程-5 excel導(dǎo)出優(yōu)化初級階段

2.2:使用String類型的屬性標(biāo)注調(diào)用枚舉類中的哪個方法進行code轉(zhuǎn)中文

/**
?*枚舉類的方法
?*?@return
?*/
public?abstract?String?EnumMethodName()?default??"getDescriptionByCode";

Java中注解學(xué)習(xí)系列教程-5 excel導(dǎo)出優(yōu)化初級階段

2.3:同樣使用class類型的屬性標(biāo)注,調(diào)用方法中的參數(shù)類型:

/**
?*?枚舉類的方法的參數(shù)
?*?@return
?*/
public??abstract??Class?methodArgClass()?default?Integer.class;

Java中注解學(xué)習(xí)系列教程-5 excel導(dǎo)出優(yōu)化初級階段

2.4:枚舉類中code轉(zhuǎn)行中文使用

???/**
?????*?性別
?????*/
???@ExcelAnnotation(ZHName?=?"性別",?colum?="D",?EnumClazz=GenderEnum.class,
???????????EnumMethodName?=?"getDescriptionByCode"?,methodArgClass=Integer.class?)
//????@ExcelAnnotation(ZHName?=?"性別",?colum?="D")
????private?Integer?Gender;

Java中注解學(xué)習(xí)系列教程-5 excel導(dǎo)出優(yōu)化初級階段

2.5:解析注解時候?qū)γ杜e類處理:

Class?clazz?=?attr.EnumClazz();
if(!"java.lang.String".equals(clazz.getName())){?//需要進行轉(zhuǎn)換
????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());
}

Java中注解學(xué)習(xí)系列教程-5 excel導(dǎo)出優(yōu)化初級階段

寫完之后。我們重寫進行測試:

Java中注解學(xué)習(xí)系列教程-5 excel導(dǎo)出優(yōu)化初級階段

導(dǎo)出的excel是我們需要的結(jié)果。OK ,優(yōu)化初級階段ok了。

看到很多朋友說代碼怎么不貼全。因為excel導(dǎo)出太多代碼了。后面凱哥會放到git上,供大家下載。

下篇預(yù)告:在下一篇文章中,我們將進行plush版升級改造。也是我們Java注解學(xué)習(xí)系列最后一篇文章。

聲明:本文是《Java中注解學(xué)習(xí)系列教程》第五篇文章-小案例,使用自定義注解實現(xiàn)Excel導(dǎo)出優(yōu)化初級階段。


網(wǎng)頁標(biāo)題:Java中注解學(xué)習(xí)系列教程-5excel導(dǎo)出優(yōu)化初級階段
文章起源:http://weahome.cn/article/igpcph.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部