很多人还在使用原始的poi和jxl进行excel的导入导出工作,这个过程不仅复杂而且麻烦,目前有一个Excel-Boot可以直接嵌入到springboot中进行开发,使用比较方便快捷
大家可以直接搜索Excel-Boot里面有开源的源码
下面来说说如何嵌入Excel-Boot
1.pom文件加入依赖
<dependency>
<groupId>io.github.magic-core</groupId>
<artifactId>excel-boot</artifactId>
<version>2.0</version>
</dependency>
2.在需要用来做导入导出的dto或者model类上面加上2个注解:
@ExportField(columnName = "巡检设备名称"):columnName指在导出excel表表头字段名称,也还有其他属性可以直接参考源码;
@ImportField(required = true):required=true指导入的时候该字段必须有值;
上面2个注解就是有关导入导出的,需要哪个就在该类上面加上哪个注解,如下图:
3.在controller下写入api方法:
导入:
@RequestMapping("/exportResponse")
public void exportResponse(HttpServletResponse httpServletResponse) {
ParamEntity queryQaram = new ParamEntity();
ExcelBoot.ExportBuilder(httpServletResponse, "Excel文件名", UserEntity.class).exportResponse(queryQaram,
new ExportFunction<ParamEntity, ResultEntity>() {
/**
* @param queryQaram 查询条件对象
* @param pageNum 当前页数,从1开始
* @param pageSize 每页条数,默认3000
* @return
*/
@Override
public List<ResultEntity> pageQuery(ParamEntity queryQaram, int pageNum, int pageSize) {
//分页查询操作
List<ResultEntity> result=dao().queryPage(queryQaram);
return result;
}
/**
* 将查询出来的每条数据进行转换
*
* @param o
*/
@Override
public UserEntity convert(ResultEntity o) {
//转换操作
return new UserEntity();
}
});
}
导出:
@RequestMapping("/importExcel")
public void importExcel() throws IOException {
ExcelBoot.ImportBuilder(new FileInputStream(new File("C:\\Users\\导入Excel文件.xlsx")), UserEntity.class)
.importExcel(new ImportFunction<UserEntity>() {
/**
* @param sheetIndex 当前执行的Sheet的索引, 从1开始
* @param rowIndex 当前执行的行数, 从1开始
* @param userEntity Excel行数据的实体
*/
@Override
public void onProcess(int sheetIndex, int rowIndex, UserEntity userEntity) {
//对每条数据自定义校验以及操作
//分页插入:当读取行数到达用户自定义条数执行插入数据库操作
}
/**
* @param errorEntity 错误信息实体
*/
@Override
public void onError(ErrorEntity errorEntity) {
//操作每条数据非空和正则校验后的错误信息
}
});
}
到这里导入导出就做完了