list = ei.getDataList(User.class);
for (User user : list){
try{
//to do: 保存/处理数据
//userService.save(user);
logger.info(user.toString());
successNum++;
}catch(ConstraintViolationException ex){
failureNum++;
}catch (Exception ex) {
failureNum++;
}
}
if (failureNum>0){
failureMsg.insert(0, ", Failures: "+failureNum);
}
logger.info("Had Operation "+successNum+" Data;"+" "+"Failure "+failureNum);
} catch (Exception e) {
logger.error("导入失败",e);
}
}
```
###### 3. 导出Excel文件
```java
@RequestMapping("export")
public void export(HttpServletResponse response){
try {
String fileName = "User Data"+ DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
Listusers=new ArrayList<>();
User user1=new User();
user1.setUserName("小明");
user1.setNickName("猪小明");
user1.setAge(20);
user1.setBirth(DateUtils.parseDate("1992-10-10"));
users.add(user1);
User user2=new User();
user2.setUserName("小红");
user2.setNickName("小小红");
user2.setAge(18);
user2.setBirth(DateUtils.parseDate("1998-11-09"));
users.add(user2);
new ExportExcel("Test Over View Define", User.class,2).setDataList(users).write(response, fileName).dispose();
} catch (Exception e) {
}
}
```
##### 3. 演示
> 端口号可以自己通过在application.properties文件中,添加**server.port=8000**进行定义
**通过浏览器访问接口*http://localhost:8000/user/import/template*,下载模板:**
![](/contentImages/image/20171126/zAKzo5j1hg4ufgP5Vai.png)
![](/contentImages/image/20171126/gWK895vercoa9kGUJ88.png)
**编辑Excel文件,并通过接口测试工具[Postman](https://www.getpostman.com/)访问接口*localhost:8000/user/import*:**
![](/contentImages/image/20171126/MrMpTl8miLc42Z55nPm.png)
接口测试工具中,上传文件,并访问:
![](/contentImages/image/20171126/X5M1lBS9cqGaXGdnIZb.png)
![](/contentImages/image/20171126/3iDOQsO4hmD9vE2NDES.png)
上传之后,通过日志输出文件解析的结果:
```
2017-11-24 19:56:15.186 INFO 37428 --- [nio-8000-exec-5] com.shexd.Controller.UserController : User{userName='小明', nickName='猪小明', age=18, birth=1992-10-09}
2017-11-24 19:56:15.187 INFO 37428 --- [nio-8000-exec-5] com.shexd.Controller.UserController : User{userName='蘑菇头', nickName='小蘑菇', age=21, birth=1996-09-25}
2017-11-24 19:56:15.187 INFO 37428 --- [nio-8000-exec-5] com.shexd.Controller.UserController : Had Operation 2 Data; Failure 0
```
**访问接口*http://localhost:8000/user/export*,从系统导出Excel文件**
![](/contentImages/image/20171126/HblUQ2BvPA3v9YoPmUn.png)
#### 7. 项目目录结构
![](/contentImages/image/20171127/FcgWJlTPme38fxbMN8m.png)
#### 8. 小结
本文简单介绍了利用Java注解和反射对Excel进行操作的基本原理,并实例进行详细说明。