一、easyPOI简介
easyPOI是一个以Apache poi为基础的工具包、一款开源框架,用于实现excel,word,pdf的导入导出;开发者为Lemur。
特性
基于注解的导入导出,修改注解就可以修改Excel
支持常用的样式自定义
基于map可以灵活定义的表头字段
支持一对多的导出,导入
支持模板的导出,一些常见的标签,自定义标签
支持HTML/Excel转换
支持word的导出,支持图片,Excel
二、使用实例
1、添加依赖
cn.easyproject orai18n
需要注意的是由于easypoi的依赖内部依赖原生的poi,所以,引入了easypoi的依赖之后,需要把原生的poi的依赖删掉
2、应用-导出excel
1)需要引入一个easyPoi导入导出工具类(网上应该很好找),如下图
2)应用-导出excel-Controller方法
@ApiOperation("列表 导出")
@PostMapping (value="/search/export")
public void exportOrgList(HttpServletResponse response, @RequestBody CustomerVo customerVo) throws Exception {
//查询
List list = customerService.searchAdmin(customerVo);
//调用工具,生成workbook工作簿对象
Workbook workbook=HysExcelUtil.exportExcel(list,"行政用户-列表",CustomerAdminVo.class);
//配置response对象
response.setContentType("application/x-excel");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition","attachment; filename=customer_admin_export.xls");
//生成输出流对象,并把工作薄写入到输出流
OutputStream oStream = response.getOutputStream();// 输出流
workbook.write(oStream);//把工作薄写入到输出流
//关闭流
try {
oStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
上面代码中的
HysExcelUtil.exportExcel(list,"行政用户-列表",CustomerAdminVo.class);
其中第三个参数CustomerAdminVo.class,是用来设定导出excel的列名、列顺序、与数据的映射关系、列的宽度、日期格式等;最好给每一个导出模板,配一个独立的vo类,用以个性化配置。
@ApiModel(value = "CustomerAdminVo", description = "用户")
@Data
public class CustomerAdminVo implements Serializable {
private static final long serialVersionUID = -3477299713883180124L;
@Excel(name = "账户名称", orderNum = "0", width = 30)
@ApiModelProperty(value = "账户名称 不为空在账号表有记录",dataType ="String",required = true)
private String accountName;
@Excel(name = "真实姓名", orderNum = "1", width = 30)
@ApiModelProperty(value = "真实姓名")
private String realName;
@Excel(name = "手机号码", orderNum = "2", width = 30)
@ApiModelProperty(name = "mobilNumber",value = "手机号码",dataType ="String")
private String mobilNumber;
@Excel(name = "添加时间", orderNum = "14", expertFormat = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
}
其中,用于设置上述内容的@Excel注解,就是easyPOI提供的注解
import cn.afterturn.easypoi.excel.annotation.Excel;
注解的属性中,
name 列名,orderNum 顺序,width 列宽,expertFormat 时间字段导出格式(不为空时,按指定格式格式化时间)
3)应用-导出excel-结果



