准备工作
加入依赖
我用的是easypoi,非常好用,但需要注意一些坑。
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>3.0.1</version>
</dependency>
版本我用的是3.0.1因为高版本的把WorkbookFactory迁出,还得去找含有WorkbookFactory的依赖。不然报错“NoClassDefFoundError:org/apache/poi/ss/usermodel/WorkbookFactory”
数据类和模板类
easypoi很厉害的一个功能,可以一个数据,多种导出
数据类:必须是个pojo类(属性都要有get set方法,我的引入了lombok,所以只需要加上@Data)
@Data
public class ShuJu{
private String A;
private String B;
private String C;
}
模板类:必须是个pojo类,并且加上easypoi的注解
@Data
public class MuBanA{
@Excel(name = "标题A")
private String A;
@Excel(name = "标题B")
private String B;
private String C;
}
导出的excel效果:
标题A | 标题B |
---|---|
aa | 11 |
bb | 22 |
cc | 33 |
@Data
public class MuBanB{
private String A;
@Excel(name = "标题B")
private String B;
@Excel(name = "标题C")
private String C;
}
导出的excel效果:
标题B | 标题C |
---|---|
11 | ** |
22 | ## |
33 | $$ |
开干
导出
@RestController
public class Controller{
@Autowired
MyService myService;
@PostMapping("/export")
/**
* @vo封装的请求参数
*/
public void export(@RequestBody ReqVo vo, HttpServletResponse response) throws Exception {
List<ShuJu> data= myService.export(vo);
//导出A模板的文件
ExcelUtils.exportExcelToTarget(response, "文件名"), data, A.class);
//导出B模板的文件
//ExcelUtils.exportExcelToTarget(response, "文件名"), data, B.class);
}
}
导入
public static <T> List<T> importExcel(MultipartFile file, Class<T> classType) throws Exception {
ImportParams params = new ImportParams();
return ExcelImportUtil.importExcel(file.getInputStream(), classType, params);
}
转化
@Excel(
name = “创建时间”,
format = “yyyy-MM-dd HH:mm:ss”
)
@Excel(
name = “状态”,
replace = {“失败_0”, “成功_1”}
)