工作中遇到一个需求让导出excel,看了下同事用的基础的POI,又写了工具类、业务类又new对象 一百多行代码 emmm....!
相信小伙伴们工作中应该或多或少应该都会遇到这个问题,或者感觉有兴趣的小伙伴也可以参考一下;poi导出的工具有很多,今天这期的我会使用EasyPoi只需几行代码就可以搞定。。。
首先第一步打开Idea...(这不废话嘛) 咳咳..(认真) 第一步导入依赖。。
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>3.2.0</version>
</dependency>
不知道大家有没有遇到过这个问题,idea依赖导进去有时候会报红。。emmm..不知道大家怎么解决的 反正我的解决办法就是重启idea... 如果是微服务的话,一定要看idea右侧的maven里面他们都把一些依赖放哪,你就跟大部队。再看一下服务之间有没有引用就行啦。
第二步就是实体类啦,这里由于我的项目里的比较难懂,我们模拟一下吧....
//这这注解,就是就等于 get set方法 想要了解的话,可以查一下
@Data
public class User(){
//这个注解里面的name=""就是你想要的excel的列明
@excel(name="姓名")
private Sting name;
@excel(name="性别")
private Sting sex;
@excel(name="年龄")
private Sting age;
}
第三步了,肯定是写dao了,有的也叫mapper... 其实一个鸟样;你可以带条件去查询,前端传值就OK了,我这里写的就不写条件了。
public interface UserDao extends BaseMapper<User> {
List<User> selectAll();
}
如果你要是带条件查询的话,一定不要忘记加 在条件前面加 @Param("")...别问我为什么提醒你们(是我一朋友忘记写的,不是我啊,不是我...)
第四部就是要写mapper.xml映射文件了。。
<resultMap id="UserMap" type="com.dao.UserDao">
<result column="Name" property="name"/>
<result column="Age" property="age"/>
<result column="Sex" property="sex"/>
</resultMap>
<select id="selectAll" resultMap="UsreMap">
select * from User
</select>
第五步肯定是service,马上就要完成了。。。
public interface UserService{
List<User> selectUser();
}
第六步业务类了,你想写一些功能逻辑,就看你们自己啦...
//这里不要忘记加这个注解
@Service
public class UserServiceImpl implements UserServie {
//这个注解是spring容器中找到类型为UserDao的类,然后将其注入进来。
@Autowired
private UserDao userdao;
@Override
public List<User> electUser(){
reuter userdao.selectAll();
}
}
第七部,最重要的一步来了。
@RestController
//前端访问这个控制器的路径
@RequestMapping(value = "User")
public class PricePlanExportController {
//这个上面说过啦,就不说了
@Autowired
private UserService userService;
//这是访问这个接口的路径
@GetMapping(value = "excel")
//response是Servlet.service方法的一个参数,想要具体了解的家人们可以去查一下。
//我们这里抛出IO异常
public void UserExcle(HttpServletResponse response)throws IOException{
//System.out.println("设置文件名,格式,编码集");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("这里写excel的名字.xls", "utf-8"));
response.setContentType("application/vnd.ms-excel");
//new个时间戳,方便看用了多长时间
Date start = new Date();
//这里获取你想要查的数据
List<User> userList=userService.selectSser();
ExportParams exportParams = new ExportParams("你的excle表信息名", "userList(上面所有数据的返回值)");
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, User(实体类).class, userList);
workbook.write(response.getOutputStream());
System.out.println(new Date().getTime() - start.getTime()+"计时结束");
}
}
OK了,这个简约而不简单的poi导出excel就写完了,希望能帮到家人们。。。